From 2eb875e8ef982ac754a08279878507b6407feea1 Mon Sep 17 00:00:00 2001 From: ntnyq Date: Wed, 5 Mar 2025 18:36:50 +0800 Subject: [PATCH 1/2] fix: fix walking script setup ast when multiple script blocks --- lib/utils/index.js | 2 +- tests/lib/rules/prefer-use-template-ref.js | 44 ++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) 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..8f679b173 100644 --- a/tests/lib/rules/prefer-use-template-ref.js +++ b/tests/lib/rules/prefer-use-template-ref.js @@ -263,6 +263,23 @@ tester.run('prefer-use-template-ref', rule, { }) ` + }, + { + filename: 'multiple-scripts.vue', + code: ` + + + + + + ` } ], invalid: [ @@ -420,6 +437,33 @@ tester.run('prefer-use-template-ref', rule, { column: 28 } ] + }, + { + filename: 'multiple-scripts.vue', + code: ` + + + + + + `, + errors: [ + { + messageId: 'preferUseTemplateRef', + data: { + name: 'ref' + }, + line: 12, + column: 20 + } + ] } ] }) From 254e6f7b23b4111506e37b05c01d7049f9d69e36 Mon Sep 17 00:00:00 2001 From: ntnyq Date: Wed, 5 Mar 2025 19:03:28 +0800 Subject: [PATCH 2/2] test: add more test cases --- tests/lib/rules/prefer-use-template-ref.js | 48 +++++++++++++++++++++- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/tests/lib/rules/prefer-use-template-ref.js b/tests/lib/rules/prefer-use-template-ref.js index 8f679b173..afc6d6a11 100644 --- a/tests/lib/rules/prefer-use-template-ref.js +++ b/tests/lib/rules/prefer-use-template-ref.js @@ -265,7 +265,24 @@ tester.run('prefer-use-template-ref', rule, { ` }, { - filename: 'multiple-scripts.vue', + filename: 'multiple-scripts-setup-first.vue', + code: ` + + + + + + ` + }, + { + filename: 'multiple-scripts-setup-last.vue', code: `