From d27c128b7cb1640f3aa185a5ecdea4ff35763794 Mon Sep 17 00:00:00 2001 From: webfansplz <308241863@qq.com> Date: Mon, 23 Oct 2023 15:08:34 +0800 Subject: [PATCH] fix(compiler-sfc): fix macro usage in multi-variable declaration (#12873) --- packages/compiler-sfc/src/compileScript.ts | 6 +++--- .../__snapshots__/compileScript.spec.ts.snap | 16 ++++++++++++++++ packages/compiler-sfc/test/compileScript.spec.ts | 15 +++++++++++++++ 3 files changed, 34 insertions(+), 3 deletions(-) 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(`