From: Artyom Tuchkov Date: Tue, 11 Jul 2023 10:38:27 +0000 (+0300) Subject: fix(compiler-sfc): handle dynamic directive arguments in template usage check (#8538) X-Git-Tag: v3.3.5~60 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e404a699f48ae5c5a5da947f42679343192158c7;p=thirdparty%2Fvuejs%2Fcore.git fix(compiler-sfc): handle dynamic directive arguments in template usage check (#8538) close #8537 --- 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,