From 7cdff1d1eb7b3e261bb1da2da5ad6984ef4e771d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=92=B2=E6=99=BA=E5=AD=90?= Date: Thu, 27 Oct 2022 20:09:49 +0800 Subject: [PATCH 1/2] fix(compiler-sfc): missing keywords of method property --- packages/compiler-sfc/src/compileScript.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/compiler-sfc/src/compileScript.ts b/packages/compiler-sfc/src/compileScript.ts index d55cb795c77..e944b764725 100644 --- a/packages/compiler-sfc/src/compileScript.ts +++ b/packages/compiler-sfc/src/compileScript.ts @@ -805,7 +805,9 @@ export function compileScript( prop.value.end! )}` } else { - defaultString = `default() ${scriptSetupSource.slice( + defaultString = `${prop.async ? 'async ' : ''}${ + prop.kind !== 'method' ? `${prop.kind} ` : '' + }default() ${scriptSetupSource.slice( prop.body.start!, prop.body.end! )}` From fc915b67655d4b57ea9b81ad12be0394df474443 Mon Sep 17 00:00:00 2001 From: Evan You Date: Wed, 9 Nov 2022 11:04:41 +0800 Subject: [PATCH 2/2] chore: resolve conflict --- .../__snapshots__/compileScript.spec.ts.snap | 6 ++++-- .../compiler-sfc/__tests__/compileScript.spec.ts | 16 ++++++++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/packages/compiler-sfc/__tests__/__snapshots__/compileScript.spec.ts.snap b/packages/compiler-sfc/__tests__/__snapshots__/compileScript.spec.ts.snap index 55659cb93d3..d553fb04b3b 100644 --- a/packages/compiler-sfc/__tests__/__snapshots__/compileScript.spec.ts.snap +++ b/packages/compiler-sfc/__tests__/__snapshots__/compileScript.spec.ts.snap @@ -1744,12 +1744,14 @@ export default /*#__PURE__*/_defineComponent({ bar: { type: Number, required: false }, baz: { type: Boolean, required: true }, qux: { type: Function, required: false, default() { return 1 } }, - quux: { type: Function, required: false, default() { } } + quux: { type: Function, required: false, default() { } }, + quuxx: { type: Promise, required: false, async default() { return await Promise.resolve('hi') } }, + fred: { type: String, required: false, get default() { return 'fred' } } }, setup(__props: any, { expose }) { expose(); -const props = __props as { foo: string, bar?: number, baz: boolean, qux(): number, quux(): void }; +const props = __props as { foo: string, bar?: number, baz: boolean, qux(): number, quux(): void, quuxx: Promise, fred: string }; diff --git a/packages/compiler-sfc/__tests__/compileScript.spec.ts b/packages/compiler-sfc/__tests__/compileScript.spec.ts index c3ba6067648..bf562defd24 100644 --- a/packages/compiler-sfc/__tests__/compileScript.spec.ts +++ b/packages/compiler-sfc/__tests__/compileScript.spec.ts @@ -1041,10 +1041,14 @@ const emit = defineEmits(['a', 'b']) baz: boolean; qux?(): number; quux?(): void + quuxx?: Promise; + fred?: string }>(), { foo: 'hi', qux() { return 1 }, - ['quux']() { } + ['quux']() { }, + async quuxx() { return await Promise.resolve('hi') }, + get fred() { return 'fred' } }) `) @@ -1061,7 +1065,13 @@ const emit = defineEmits(['a', 'b']) `quux: { type: Function, required: false, default() { } }` ) expect(content).toMatch( - `{ foo: string, bar?: number, baz: boolean, qux(): number, quux(): void }` + `quuxx: { type: Promise, required: false, async default() { return await Promise.resolve('hi') } }` + ) + expect(content).toMatch( + `fred: { type: String, required: false, get default() { return 'fred' } }` + ) + expect(content).toMatch( + `{ foo: string, bar?: number, baz: boolean, qux(): number, quux(): void, quuxx: Promise, fred: string }` ) expect(content).toMatch(`const props = __props`) expect(bindings).toStrictEqual({ @@ -1070,6 +1080,8 @@ const emit = defineEmits(['a', 'b']) baz: BindingTypes.PROPS, qux: BindingTypes.PROPS, quux: BindingTypes.PROPS, + quuxx: BindingTypes.PROPS, + fred: BindingTypes.PROPS, props: BindingTypes.SETUP_CONST }) })