mirror of https://github.com/vuejs/core.git
fix(compiler-sfc): handle method shorthand syntax in withDefaults (#6972)
fix #6971
This commit is contained in:
parent
5bfe438ef3
commit
8a882ce0a1
|
@ -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<string>, fred: string };
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1041,10 +1041,14 @@ const emit = defineEmits(['a', 'b'])
|
|||
baz: boolean;
|
||||
qux?(): number;
|
||||
quux?(): void
|
||||
quuxx?: Promise<string>;
|
||||
fred?: string
|
||||
}>(), {
|
||||
foo: 'hi',
|
||||
qux() { return 1 },
|
||||
['quux']() { }
|
||||
['quux']() { },
|
||||
async quuxx() { return await Promise.resolve('hi') },
|
||||
get fred() { return 'fred' }
|
||||
})
|
||||
</script>
|
||||
`)
|
||||
|
@ -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<string>, 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
|
||||
})
|
||||
})
|
||||
|
|
|
@ -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!
|
||||
)}`
|
||||
|
|
Loading…
Reference in New Issue