diff --git a/packages/compiler-sfc/__tests__/compileScript/__snapshots__/defineModel.spec.ts.snap b/packages/compiler-sfc/__tests__/compileScript/__snapshots__/defineModel.spec.ts.snap index fdfd3710efc..297ee62724c 100644 --- a/packages/compiler-sfc/__tests__/compileScript/__snapshots__/defineModel.spec.ts.snap +++ b/packages/compiler-sfc/__tests__/compileScript/__snapshots__/defineModel.spec.ts.snap @@ -7,15 +7,17 @@ export default { props: { \\"modelValue\\": { required: true }, \\"count\\": {}, + \\"toString\\": { type: Function }, }, - emits: [\\"update:modelValue\\", \\"update:count\\"], + emits: [\\"update:modelValue\\", \\"update:count\\", \\"update:toString\\"], setup(__props, { expose: __expose }) { __expose(); const modelValue = _useModel(__props, \\"modelValue\\") const c = _useModel(__props, \\"count\\") + const toString = _useModel(__props, \\"toString\\") -return { modelValue, c } +return { modelValue, c, toString } } }" diff --git a/packages/compiler-sfc/__tests__/compileScript/defineModel.spec.ts b/packages/compiler-sfc/__tests__/compileScript/defineModel.spec.ts index 61a9adcbe0d..10fab947c13 100644 --- a/packages/compiler-sfc/__tests__/compileScript/defineModel.spec.ts +++ b/packages/compiler-sfc/__tests__/compileScript/defineModel.spec.ts @@ -8,6 +8,7 @@ describe('defineModel()', () => { `, { defineModel: true } @@ -16,18 +17,22 @@ describe('defineModel()', () => { expect(content).toMatch('props: {') expect(content).toMatch('"modelValue": { required: true },') expect(content).toMatch('"count": {},') - expect(content).toMatch('emits: ["update:modelValue", "update:count"],') + expect(content).toMatch('"toString": { type: Function },') + expect(content).toMatch( + 'emits: ["update:modelValue", "update:count", "update:toString"],' + ) expect(content).toMatch( `const modelValue = _useModel(__props, "modelValue")` ) expect(content).toMatch(`const c = _useModel(__props, "count")`) - expect(content).toMatch(`return { modelValue, c }`) + expect(content).toMatch(`return { modelValue, c, toString }`) expect(content).not.toMatch('defineModel') expect(bindings).toStrictEqual({ modelValue: BindingTypes.SETUP_REF, count: BindingTypes.PROPS, - c: BindingTypes.SETUP_REF + c: BindingTypes.SETUP_REF, + toString: BindingTypes.SETUP_REF }) }) diff --git a/packages/compiler-sfc/src/script/context.ts b/packages/compiler-sfc/src/script/context.ts index 5fe09d28a42..692eab3ab9e 100644 --- a/packages/compiler-sfc/src/script/context.ts +++ b/packages/compiler-sfc/src/script/context.ts @@ -53,7 +53,7 @@ export class ScriptCompileContext { emitDecl: Node | undefined // defineModel - modelDecls: Record = {} + modelDecls: Record = Object.create(null) // defineOptions optionsRuntimeDecl: Node | undefined