From cde2c0671b00d4f6111fcbd7aa76e45872f20b0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=B1=E5=90=B9=E8=89=B2=E5=BE=A1=E5=AE=88?= <85992002+KazariEX@users.noreply.github.com> Date: Fri, 11 Oct 2024 11:07:07 +0800 Subject: [PATCH] fix(compiler): clone loc to `ifNode` (#12131) fix vuejs/language-tools#4911 --- packages/compiler-core/src/parser.ts | 4 ++++ packages/compiler-core/src/transforms/vIf.ts | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/compiler-core/src/parser.ts b/packages/compiler-core/src/parser.ts index 0d66d2055f4..95c5e129f25 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 caefa197efe..54c505407a3 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)