From f25bd37c6707fde19d164d90a38de41168941f4b Mon Sep 17 00:00:00 2001 From: Evan You Date: Fri, 12 May 2023 12:53:36 +0100 Subject: [PATCH] fix(compiler-sfc): fix regression on props destructure when transform is not enabled close #8289 --- .../__snapshots__/defineProps.spec.ts.snap | 20 +++++++++++++++++++ .../compileScript/defineProps.spec.ts | 13 ++++++++++++ .../src/script/definePropsDestructure.ts | 1 + 3 files changed, 34 insertions(+) diff --git a/packages/compiler-sfc/__tests__/compileScript/__snapshots__/defineProps.spec.ts.snap b/packages/compiler-sfc/__tests__/compileScript/__snapshots__/defineProps.spec.ts.snap index 47328442328..62d9bef5d27 100644 --- a/packages/compiler-sfc/__tests__/compileScript/__snapshots__/defineProps.spec.ts.snap +++ b/packages/compiler-sfc/__tests__/compileScript/__snapshots__/defineProps.spec.ts.snap @@ -38,6 +38,26 @@ return { props } })" `; +exports[`defineProps > destructure without enabling reactive destructure 1`] = ` +"import { defineComponent as _defineComponent } from 'vue' + +export default /*#__PURE__*/_defineComponent({ + props: { + foo: { type: null, required: true } + }, + setup(__props: any, { expose: __expose }) { + __expose(); + +const { foo } = __props; + + + +return { } +} + +})" +`; + exports[`defineProps > w/ TS assertion 1`] = ` "import { defineComponent as _defineComponent } from 'vue' diff --git a/packages/compiler-sfc/__tests__/compileScript/defineProps.spec.ts b/packages/compiler-sfc/__tests__/compileScript/defineProps.spec.ts index fe5ef293ad4..43f54b0aa1e 100644 --- a/packages/compiler-sfc/__tests__/compileScript/defineProps.spec.ts +++ b/packages/compiler-sfc/__tests__/compileScript/defineProps.spec.ts @@ -586,6 +586,19 @@ const props = defineProps({ foo: String }) }) }) + // #8289 + test('destructure without enabling reactive destructure', () => { + const { content } = compile( + `` + ) + expect(content).toMatch(`const { foo } = __props`) + assertCode(content) + }) + describe('errors', () => { test('w/ both type and non-type args', () => { expect(() => { diff --git a/packages/compiler-sfc/src/script/definePropsDestructure.ts b/packages/compiler-sfc/src/script/definePropsDestructure.ts index 87a58d9fabf..1584913855a 100644 --- a/packages/compiler-sfc/src/script/definePropsDestructure.ts +++ b/packages/compiler-sfc/src/script/definePropsDestructure.ts @@ -28,6 +28,7 @@ export function processPropsDestructure( declId: ObjectPattern ) { if (!ctx.options.propsDestructure && !ctx.options.reactivityTransform) { + ctx.propsIdentifier = ctx.getString(declId) return }