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 },
|
bar: { type: Number, required: false },
|
||||||
baz: { type: Boolean, required: true },
|
baz: { type: Boolean, required: true },
|
||||||
qux: { type: Function, required: false, default() { return 1 } },
|
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 }) {
|
setup(__props: any, { expose }) {
|
||||||
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;
|
baz: boolean;
|
||||||
qux?(): number;
|
qux?(): number;
|
||||||
quux?(): void
|
quux?(): void
|
||||||
|
quuxx?: Promise<string>;
|
||||||
|
fred?: string
|
||||||
}>(), {
|
}>(), {
|
||||||
foo: 'hi',
|
foo: 'hi',
|
||||||
qux() { return 1 },
|
qux() { return 1 },
|
||||||
['quux']() { }
|
['quux']() { },
|
||||||
|
async quuxx() { return await Promise.resolve('hi') },
|
||||||
|
get fred() { return 'fred' }
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
`)
|
`)
|
||||||
|
@ -1061,7 +1065,13 @@ const emit = defineEmits(['a', 'b'])
|
||||||
`quux: { type: Function, required: false, default() { } }`
|
`quux: { type: Function, required: false, default() { } }`
|
||||||
)
|
)
|
||||||
expect(content).toMatch(
|
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(content).toMatch(`const props = __props`)
|
||||||
expect(bindings).toStrictEqual({
|
expect(bindings).toStrictEqual({
|
||||||
|
@ -1070,6 +1080,8 @@ const emit = defineEmits(['a', 'b'])
|
||||||
baz: BindingTypes.PROPS,
|
baz: BindingTypes.PROPS,
|
||||||
qux: BindingTypes.PROPS,
|
qux: BindingTypes.PROPS,
|
||||||
quux: BindingTypes.PROPS,
|
quux: BindingTypes.PROPS,
|
||||||
|
quuxx: BindingTypes.PROPS,
|
||||||
|
fred: BindingTypes.PROPS,
|
||||||
props: BindingTypes.SETUP_CONST
|
props: BindingTypes.SETUP_CONST
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -805,7 +805,9 @@ export function compileScript(
|
||||||
prop.value.end!
|
prop.value.end!
|
||||||
)}`
|
)}`
|
||||||
} else {
|
} else {
|
||||||
defaultString = `default() ${scriptSetupSource.slice(
|
defaultString = `${prop.async ? 'async ' : ''}${
|
||||||
|
prop.kind !== 'method' ? `${prop.kind} ` : ''
|
||||||
|
}default() ${scriptSetupSource.slice(
|
||||||
prop.body.start!,
|
prop.body.start!,
|
||||||
prop.body.end!
|
prop.body.end!
|
||||||
)}`
|
)}`
|
||||||
|
|
Loading…
Reference in New Issue