From e5919d4658cfe0bb18c76611dd3c3432c57f94ab Mon Sep 17 00:00:00 2001 From: edison Date: Mon, 15 Apr 2024 16:32:04 +0800 Subject: [PATCH] fix(compile-sfc): analyze v-bind shorthand usage in template (#10518) close #10515 --- .../__snapshots__/importUsageCheck.spec.ts.snap | 4 ++-- .../__tests__/compileScript/importUsageCheck.spec.ts | 5 +++-- packages/compiler-sfc/src/script/importUsageCheck.ts | 3 +++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/compiler-sfc/__tests__/compileScript/__snapshots__/importUsageCheck.spec.ts.snap b/packages/compiler-sfc/__tests__/compileScript/__snapshots__/importUsageCheck.spec.ts.snap index 764d120a744..722e3340a74 100644 --- a/packages/compiler-sfc/__tests__/compileScript/__snapshots__/importUsageCheck.spec.ts.snap +++ b/packages/compiler-sfc/__tests__/compileScript/__snapshots__/importUsageCheck.spec.ts.snap @@ -66,14 +66,14 @@ return { get vMyDir() { return vMyDir } } exports[`dynamic arguments 1`] = ` "import { defineComponent as _defineComponent } from 'vue' -import { FooBar, foo, bar, unused, baz } from './x' +import { FooBar, foo, bar, unused, baz, msg } from './x' export default /*#__PURE__*/_defineComponent({ setup(__props, { expose: __expose }) { __expose(); -return { get FooBar() { return FooBar }, get foo() { return foo }, get bar() { return bar }, get baz() { return baz } } +return { get FooBar() { return FooBar }, get foo() { return foo }, get bar() { return bar }, get baz() { return baz }, get msg() { return msg } } } })" diff --git a/packages/compiler-sfc/__tests__/compileScript/importUsageCheck.spec.ts b/packages/compiler-sfc/__tests__/compileScript/importUsageCheck.spec.ts index d9fd1dfe529..b842f7a466d 100644 --- a/packages/compiler-sfc/__tests__/compileScript/importUsageCheck.spec.ts +++ b/packages/compiler-sfc/__tests__/compileScript/importUsageCheck.spec.ts @@ -45,7 +45,7 @@ test('directive', () => { test('dynamic arguments', () => { const { content } = compile(` `) expect(content).toMatch( `return { get FooBar() { return FooBar }, get foo() { return foo }, ` + - `get bar() { return bar }, get baz() { return baz } }`, + `get bar() { return bar }, get baz() { return baz }, get msg() { return msg } }`, ) assertCode(content) }) diff --git a/packages/compiler-sfc/src/script/importUsageCheck.ts b/packages/compiler-sfc/src/script/importUsageCheck.ts index 211efc49089..6b9fbc634cc 100644 --- a/packages/compiler-sfc/src/script/importUsageCheck.ts +++ b/packages/compiler-sfc/src/script/importUsageCheck.ts @@ -60,6 +60,9 @@ function resolveTemplateUsedIdentifiers(sfc: SFCDescriptor): Set { extractIdentifiers(ids, prop.forParseResult!.source) } else if (prop.exp) { extractIdentifiers(ids, prop.exp) + } else if (prop.name === 'bind' && !prop.exp) { + // v-bind shorthand name as identifier + ids.add((prop.arg as SimpleExpressionNode).content) } } if (