From e404a699f48ae5c5a5da947f42679343192158c7 Mon Sep 17 00:00:00 2001 From: Artyom Tuchkov Date: Tue, 11 Jul 2023 13:38:27 +0300 Subject: [PATCH] fix(compiler-sfc): handle dynamic directive arguments in template usage check (#8538) close #8537 --- .../__snapshots__/compileScript.spec.ts.snap | 15 +++++++++++++++ .../__tests__/compileScript.spec.ts | 19 +++++++++++++++++++ .../src/script/importUsageCheck.ts | 6 ++++++ 3 files changed, 40 insertions(+) diff --git a/packages/compiler-sfc/__tests__/__snapshots__/compileScript.spec.ts.snap b/packages/compiler-sfc/__tests__/__snapshots__/compileScript.spec.ts.snap index de19ec5aaf..b7925ada89 100644 --- a/packages/compiler-sfc/__tests__/__snapshots__/compileScript.spec.ts.snap +++ b/packages/compiler-sfc/__tests__/__snapshots__/compileScript.spec.ts.snap @@ -745,6 +745,21 @@ return { get vMyDir() { return vMyDir } } })" `; +exports[`SFC compile + + `) + expect(content).toMatch( + `return { get FooBar() { return FooBar }, get foo() { return foo }, ` + + `get bar() { return bar } }` + ) + assertCode(content) + }) + // https://github.com/vuejs/core/issues/4599 test('attribute expressions', () => { const { content } = compile(` diff --git a/packages/compiler-sfc/src/script/importUsageCheck.ts b/packages/compiler-sfc/src/script/importUsageCheck.ts index 28456a45bb..7019dcf231 100644 --- a/packages/compiler-sfc/src/script/importUsageCheck.ts +++ b/packages/compiler-sfc/src/script/importUsageCheck.ts @@ -50,6 +50,12 @@ function resolveTemplateUsageCheckString(sfc: SFCDescriptor) { if (!isBuiltInDirective(prop.name)) { code += `,v${capitalize(camelize(prop.name))}` } + if (prop.arg && !(prop.arg as SimpleExpressionNode).isStatic) { + code += `,${processExp( + (prop.arg as SimpleExpressionNode).content, + prop.name + )}` + } if (prop.exp) { code += `,${processExp( (prop.exp as SimpleExpressionNode).content, -- 2.47.3