Skip to content

Commit b39fa1f

Browse files
authoredNov 6, 2023
fix(compiler-sfc): fix dynamic directive arguments usage check for slots (#9495)
close #9493
1 parent 462aeb3 commit b39fa1f

File tree

3 files changed

+10
-7
lines changed

3 files changed

+10
-7
lines changed
 

‎packages/compiler-sfc/__tests__/__snapshots__/compileScript.spec.ts.snap

+2-2
Original file line numberDiff line numberDiff line change
@@ -696,14 +696,14 @@ return { get vMyDir() { return vMyDir } }
696696
697697
exports[`SFC compile <script setup> > dev mode import usage check > dynamic arguments 1`] = `
698698
"import { defineComponent as _defineComponent } from 'vue'
699-
import { FooBar, foo, bar, unused } from './x'
699+
import { FooBar, foo, bar, unused, baz } from './x'
700700
701701
export default /*#__PURE__*/_defineComponent({
702702
setup(__props, { expose: __expose }) {
703703
__expose();
704704
705705
706-
return { get FooBar() { return FooBar }, get foo() { return foo }, get bar() { return bar } }
706+
return { get FooBar() { return FooBar }, get foo() { return foo }, get bar() { return bar }, get baz() { return baz } }
707707
}
708708
709709
})"

‎packages/compiler-sfc/__tests__/compileScript.spec.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -376,18 +376,19 @@ describe('SFC compile <script setup>', () => {
376376
test('dynamic arguments', () => {
377377
const { content } = compile(`
378378
<script setup lang="ts">
379-
import { FooBar, foo, bar, unused } from './x'
379+
import { FooBar, foo, bar, unused, baz } from './x'
380380
</script>
381381
<template>
382382
<FooBar #[foo.slotName] />
383383
<FooBar #unused />
384384
<div :[bar.attrName]="15"></div>
385385
<div unused="unused"></div>
386+
<div #[\`item:\${baz.key}\`]="{ value }"></div>
386387
</template>
387388
`)
388389
expect(content).toMatch(
389390
`return { get FooBar() { return FooBar }, get foo() { return foo }, ` +
390-
`get bar() { return bar } }`
391+
`get bar() { return bar }, get baz() { return baz } }`
391392
)
392393
assertCode(content)
393394
})

‎packages/compiler-sfc/src/script/importUsageCheck.ts

+5-3
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,14 @@ function resolveTemplateUsageCheckString(sfc: SFCDescriptor) {
5050
if (!isBuiltInDirective(prop.name)) {
5151
code += `,v${capitalize(camelize(prop.name))}`
5252
}
53+
54+
// process dynamic directive arguments
5355
if (prop.arg && !(prop.arg as SimpleExpressionNode).isStatic) {
54-
code += `,${processExp(
55-
(prop.arg as SimpleExpressionNode).content,
56-
prop.name
56+
code += `,${stripStrings(
57+
(prop.arg as SimpleExpressionNode).content
5758
)}`
5859
}
60+
5961
if (prop.exp) {
6062
code += `,${processExp(
6163
(prop.exp as SimpleExpressionNode).content,

0 commit comments

Comments
 (0)
Please sign in to comment.