diff --git a/packages/compiler-core/src/transforms/transformExpression.ts b/packages/compiler-core/src/transforms/transformExpression.ts
index 1b746111acd..c64d3ca33ce 100644
--- a/packages/compiler-core/src/transforms/transformExpression.ts
+++ b/packages/compiler-core/src/transforms/transformExpression.ts
@@ -112,7 +112,10 @@ export function processExpression(
const { inline, bindingMetadata } = context
const rewriteIdentifier = (raw: string, parent?: Node, id?: Identifier) => {
- const type = hasOwn(bindingMetadata, raw) && bindingMetadata[raw]
+ const type =
+ bindingMetadata.__isScriptSetup !== false &&
+ hasOwn(bindingMetadata, raw) &&
+ bindingMetadata[raw]
if (inline) {
// x = y
const isAssignmentLVal =
diff --git a/packages/compiler-sfc/__tests__/__snapshots__/cssVars.spec.ts.snap b/packages/compiler-sfc/__tests__/__snapshots__/cssVars.spec.ts.snap
index a2926e8fee1..99f963804b5 100644
--- a/packages/compiler-sfc/__tests__/__snapshots__/cssVars.spec.ts.snap
+++ b/packages/compiler-sfc/__tests__/__snapshots__/cssVars.spec.ts.snap
@@ -109,3 +109,26 @@ return { color, size, ref }
}"
`;
+
+exports[`CSS vars injection w/ normal \n` +
+ ``
+ )
+ expect(content).toMatch(`_useCssVars(_ctx => ({
+ "${mockId}-size": (_ctx.size)
+})`)
+ expect(content).toMatch(`import { useCssVars as _useCssVars } from 'vue'`)
+ assertCode(content)
+ })
+
test('w/