diff --git a/packages/compiler-sfc/__tests__/__snapshots__/compileScript.spec.ts.snap b/packages/compiler-sfc/__tests__/__snapshots__/compileScript.spec.ts.snap
index 32ce61b727a..6d3e9e7bdb9 100644
--- a/packages/compiler-sfc/__tests__/__snapshots__/compileScript.spec.ts.snap
+++ b/packages/compiler-sfc/__tests__/__snapshots__/compileScript.spec.ts.snap
@@ -33,6 +33,27 @@ return { x }
export const n = 1"
`;
+exports[`SFC compile
+
+ `)
+ // ensure __default__ is declared before used
+ expect(content).toMatch(/const __default__[\S\s]*\.\.\.__default__/m)
+ assertCode(content)
+ })
})
describe('imports', () => {
diff --git a/packages/compiler-sfc/src/compileScript.ts b/packages/compiler-sfc/src/compileScript.ts
index eefddfd95ea..92af5bd7b82 100644
--- a/packages/compiler-sfc/src/compileScript.ts
+++ b/packages/compiler-sfc/src/compileScript.ts
@@ -1150,15 +1150,27 @@ export function compileScript(
// wrap setup code with function.
// export the content of