Skip to content

Commit 2eb875e

Browse files
committed
fix: fix walking script setup ast when multiple script blocks
1 parent 7bd1d9a commit 2eb875e

File tree

2 files changed

+45
-1
lines changed

2 files changed

+45
-1
lines changed

lib/utils/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1380,7 +1380,7 @@ module.exports = {
13801380
* @param {any[]} args
13811381
*/
13821382
function callVisitor(key, node, ...args) {
1383-
if (visitor[key] && inScriptSetup(node)) {
1383+
if (visitor[key] && (node.type === 'Program' || inScriptSetup(node))) {
13841384
// @ts-expect-error
13851385
visitor[key](node, ...args)
13861386
}

tests/lib/rules/prefer-use-template-ref.js

+44
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,23 @@ tester.run('prefer-use-template-ref', rule, {
263263
})
264264
</script>
265265
`
266+
},
267+
{
268+
filename: 'multiple-scripts.vue',
269+
code: `
270+
<template>
271+
<div ref="root" :data-a="A" />
272+
</template>
273+
274+
<script>
275+
const A = 'foo'
276+
</script>
277+
278+
<script setup>
279+
import { useTemplateRef } from 'vue'
280+
const root = useTemplateRef('root')
281+
</script>
282+
`
266283
}
267284
],
268285
invalid: [
@@ -420,6 +437,33 @@ tester.run('prefer-use-template-ref', rule, {
420437
column: 28
421438
}
422439
]
440+
},
441+
{
442+
filename: 'multiple-scripts.vue',
443+
code: `
444+
<template>
445+
<div ref="root" :data-a="A" />
446+
</template>
447+
448+
<script>
449+
const A = 'foo'
450+
</script>
451+
452+
<script setup>
453+
import { ref } from 'vue'
454+
const root = ref()
455+
</script>
456+
`,
457+
errors: [
458+
{
459+
messageId: 'preferUseTemplateRef',
460+
data: {
461+
name: 'ref'
462+
},
463+
line: 12,
464+
column: 20
465+
}
466+
]
423467
}
424468
]
425469
})

0 commit comments

Comments
 (0)