From 7c77fa0f39e1cec05c92767b3cde87d0c51ba0f3 Mon Sep 17 00:00:00 2001 From: anhao Date: Wed, 2 Aug 2023 13:22:55 +0800 Subject: [PATCH 1/2] fix: don't match property access --- .../__snapshots__/compileScript.spec.ts.snap | 15 +++++++++++++++ .../compiler-sfc/__tests__/compileScript.spec.ts | 13 +++++++++++++ .../compiler-sfc/src/script/importUsageCheck.ts | 8 ++++++-- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/packages/compiler-sfc/__tests__/__snapshots__/compileScript.spec.ts.snap b/packages/compiler-sfc/__tests__/__snapshots__/compileScript.spec.ts.snap index 949c9946d9f..a8d9a33087f 100644 --- a/packages/compiler-sfc/__tests__/__snapshots__/compileScript.spec.ts.snap +++ b/packages/compiler-sfc/__tests__/__snapshots__/compileScript.spec.ts.snap @@ -739,6 +739,21 @@ return { get FooBaz() { return FooBaz }, get Last() { return Last } } })" `; +exports[`SFC compile + + `) + expect(content).toMatch('return { get Foo() { return Foo } }') + assertCode(content) + }) }) describe('inlineTemplate mode', () => { diff --git a/packages/compiler-sfc/src/script/importUsageCheck.ts b/packages/compiler-sfc/src/script/importUsageCheck.ts index 7019dcf2312..30c562ef161 100644 --- a/packages/compiler-sfc/src/script/importUsageCheck.ts +++ b/packages/compiler-sfc/src/script/importUsageCheck.ts @@ -20,7 +20,7 @@ export function isImportUsed(local: string, sfc: SFCDescriptor): boolean { return new RegExp( // #4274 escape $ since it's a special char in regex // (and is the only regex special char that is valid in identifiers) - `[^\\w$_]${local.replace(/\$/g, '\\$')}[^\\w$_]` + `[^\\w$_\.]${local.replace(/\$/g, '\\$')}[^\\w$_]` ).test(resolveTemplateUsageCheckString(sfc)) } @@ -63,7 +63,11 @@ function resolveTemplateUsageCheckString(sfc: SFCDescriptor) { )}` } } - if (prop.type === NodeTypes.ATTRIBUTE && prop.name === 'ref' && prop.value?.content) { + if ( + prop.type === NodeTypes.ATTRIBUTE && + prop.name === 'ref' && + prop.value?.content + ) { code += `,${prop.value.content}` } } From 54c0a320a303587b0fb6d1f458a793931e73e4b3 Mon Sep 17 00:00:00 2001 From: anhao Date: Thu, 3 Aug 2023 14:17:17 +0800 Subject: [PATCH 2/2] refactor: simplify pattern --- packages/compiler-sfc/src/script/importUsageCheck.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/compiler-sfc/src/script/importUsageCheck.ts b/packages/compiler-sfc/src/script/importUsageCheck.ts index 30c562ef161..b5cec68ddd4 100644 --- a/packages/compiler-sfc/src/script/importUsageCheck.ts +++ b/packages/compiler-sfc/src/script/importUsageCheck.ts @@ -20,7 +20,7 @@ export function isImportUsed(local: string, sfc: SFCDescriptor): boolean { return new RegExp( // #4274 escape $ since it's a special char in regex // (and is the only regex special char that is valid in identifiers) - `[^\\w$_\.]${local.replace(/\$/g, '\\$')}[^\\w$_]` + `[^\\w$.]${local.replace(/\$/g, '\\$')}[^\\w$]` ).test(resolveTemplateUsageCheckString(sfc)) }