fix(compiler): clone loc to `ifNode` (#12131)

fix vuejs/language-tools#4911
This commit is contained in:
山吹色御守 2024-10-11 11:07:07 +08:00 committed by GitHub
parent 4474c113d1
commit cde2c0671b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 6 additions and 1 deletions

View File

@ -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) { function setLocEnd(loc: SourceLocation, end: number) {
loc.end = tokenizer.getPos(end) loc.end = tokenizer.getPos(end)
loc.source = getSlice(loc.start.offset, end) loc.source = getSlice(loc.start.offset, end)

View File

@ -30,6 +30,7 @@ import {
import { ErrorCodes, createCompilerError } from '../errors' import { ErrorCodes, createCompilerError } from '../errors'
import { processExpression } from './transformExpression' import { processExpression } from './transformExpression'
import { validateBrowserExpression } from '../validateExpression' import { validateBrowserExpression } from '../validateExpression'
import { cloneLoc } from '../parser'
import { CREATE_COMMENT, FRAGMENT } from '../runtimeHelpers' import { CREATE_COMMENT, FRAGMENT } from '../runtimeHelpers'
import { findDir, findProp, getMemoedVNodeCall, injectProp } from '../utils' import { findDir, findProp, getMemoedVNodeCall, injectProp } from '../utils'
import { PatchFlags } from '@vue/shared' import { PatchFlags } from '@vue/shared'
@ -110,7 +111,7 @@ export function processIf(
const branch = createIfBranch(node, dir) const branch = createIfBranch(node, dir)
const ifNode: IfNode = { const ifNode: IfNode = {
type: NodeTypes.IF, type: NodeTypes.IF,
loc: node.loc, loc: cloneLoc(node.loc),
branches: [branch], branches: [branch],
} }
context.replaceNode(ifNode) context.replaceNode(ifNode)