diff --git a/packages/compiler-sfc/src/compileScript.ts b/packages/compiler-sfc/src/compileScript.ts index d6e066d8066..719b53592d0 100644 --- a/packages/compiler-sfc/src/compileScript.ts +++ b/packages/compiler-sfc/src/compileScript.ts @@ -910,11 +910,11 @@ export function compileScript( } else { let start = decl.start! + startOffset let end = decl.end! + startOffset - if (i < total - 1) { - // not the last one, locate the start of the next + if (i === 0) { + // first one, locate the start of the next end = node.declarations[i + 1].start! + startOffset } else { - // last one, locate the end of the prev + // not first one, locate the end of the prev start = node.declarations[i - 1].end! + startOffset } s.remove(start, end) diff --git a/packages/compiler-sfc/test/__snapshots__/compileScript.spec.ts.snap b/packages/compiler-sfc/test/__snapshots__/compileScript.spec.ts.snap index bcecdb4efb5..594c909ee39 100644 --- a/packages/compiler-sfc/test/__snapshots__/compileScript.spec.ts.snap +++ b/packages/compiler-sfc/test/__snapshots__/compileScript.spec.ts.snap @@ -288,6 +288,22 @@ return { props, a, emit } }" `; +exports[`SFC compile + `) + assertCode(content) + expect(content).toMatch(`const a = 1;`) // test correct removal + expect(content).toMatch(`props: ['item'],`) + expect(content).toMatch(`emits: ['a'],`) + }) + test('defineProps/defineEmits in multi-variable declaration (full removal)', () => { const { content } = compile(`