diff --git a/lib/utils/index.js b/lib/utils/index.js
index 8d0dfa80d..769362966 100644
--- a/lib/utils/index.js
+++ b/lib/utils/index.js
@@ -1380,7 +1380,7 @@ module.exports = {
* @param {any[]} args
*/
function callVisitor(key, node, ...args) {
- if (visitor[key] && inScriptSetup(node)) {
+ if (visitor[key] && (node.type === 'Program' || inScriptSetup(node))) {
// @ts-expect-error
visitor[key](node, ...args)
}
diff --git a/tests/lib/rules/prefer-use-template-ref.js b/tests/lib/rules/prefer-use-template-ref.js
index 414c69830..afc6d6a11 100644
--- a/tests/lib/rules/prefer-use-template-ref.js
+++ b/tests/lib/rules/prefer-use-template-ref.js
@@ -263,6 +263,40 @@ tester.run('prefer-use-template-ref', rule, {
})
`
+ },
+ {
+ filename: 'multiple-scripts-setup-first.vue',
+ code: `
+
+
+
+
+
+
+
+ `
+ },
+ {
+ filename: 'multiple-scripts-setup-last.vue',
+ code: `
+
+
+
+
+
+
+
+ `
}
],
invalid: [
@@ -420,6 +454,60 @@ tester.run('prefer-use-template-ref', rule, {
column: 28
}
]
+ },
+ {
+ filename: 'multiple-scripts-setup-first.vue',
+ code: `
+
+
+
+
+
+
+
+ `,
+ errors: [
+ {
+ messageId: 'preferUseTemplateRef',
+ data: {
+ name: 'ref'
+ },
+ line: 8,
+ column: 20
+ }
+ ]
+ },
+ {
+ filename: 'multiple-scripts-setup-last.vue',
+ code: `
+
+
+
+
+
+
+
+ `,
+ errors: [
+ {
+ messageId: 'preferUseTemplateRef',
+ data: {
+ name: 'ref'
+ },
+ line: 12,
+ column: 20
+ }
+ ]
}
]
})