diff --git a/lib/rules/script-setup-uses-vars.js b/lib/rules/script-setup-uses-vars.js
index e08af640f..68e0b3fc3 100644
--- a/lib/rules/script-setup-uses-vars.js
+++ b/lib/rules/script-setup-uses-vars.js
@@ -104,6 +104,12 @@ module.exports = {
return
}
markElementVariableAsUsed(`v-${node.key.name.rawName}`)
+ },
+ /** @param {VAttribute} node */
+ 'VAttribute[directive=false]'(node) {
+ if (node.key.name === 'ref' && node.value) {
+ context.markVariableAsUsed(node.value.value)
+ }
}
},
undefined,
diff --git a/tests/lib/rules/script-setup-uses-vars.js b/tests/lib/rules/script-setup-uses-vars.js
index aed894178..5d3c80060 100644
--- a/tests/lib/rules/script-setup-uses-vars.js
+++ b/tests/lib/rules/script-setup-uses-vars.js
@@ -163,6 +163,22 @@ describe('script-setup-uses-vars', () => {
ecmaVersion: 2022,
sourceType: 'module'
}
+ },
+
+ // ref
+ {
+ filename: 'test.vue',
+ code: `
+
+
+
+
+
+ `
}
],