From: 山吹色御守 <85992002+KazariEX@users.noreply.github.com> Date: Fri, 11 Oct 2024 03:07:07 +0000 (+0800) Subject: fix(compiler): clone loc to `ifNode` (#12131) X-Git-Tag: v3.5.12~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cde2c0671b00d4f6111fcbd7aa76e45872f20b0c;p=thirdparty%2Fvuejs%2Fcore.git fix(compiler): clone loc to `ifNode` (#12131) fix vuejs/language-tools#4911 --- diff --git a/packages/compiler-core/src/parser.ts b/packages/compiler-core/src/parser.ts index 0d66d2055f..95c5e129f2 100644 --- a/packages/compiler-core/src/parser.ts +++ b/packages/compiler-core/src/parser.ts @@ -933,6 +933,10 @@ function getLoc(start: number, end?: number): SourceLocation { } } +export function cloneLoc(loc: SourceLocation): SourceLocation { + return getLoc(loc.start.offset, loc.end.offset) +} + function setLocEnd(loc: SourceLocation, end: number) { loc.end = tokenizer.getPos(end) loc.source = getSlice(loc.start.offset, end) diff --git a/packages/compiler-core/src/transforms/vIf.ts b/packages/compiler-core/src/transforms/vIf.ts index caefa197ef..54c505407a 100644 --- a/packages/compiler-core/src/transforms/vIf.ts +++ b/packages/compiler-core/src/transforms/vIf.ts @@ -30,6 +30,7 @@ import { import { ErrorCodes, createCompilerError } from '../errors' import { processExpression } from './transformExpression' import { validateBrowserExpression } from '../validateExpression' +import { cloneLoc } from '../parser' import { CREATE_COMMENT, FRAGMENT } from '../runtimeHelpers' import { findDir, findProp, getMemoedVNodeCall, injectProp } from '../utils' import { PatchFlags } from '@vue/shared' @@ -110,7 +111,7 @@ export function processIf( const branch = createIfBranch(node, dir) const ifNode: IfNode = { type: NodeTypes.IF, - loc: node.loc, + loc: cloneLoc(node.loc), branches: [branch], } context.replaceNode(ifNode)