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