Skip to content

Commit 2dba690

Browse files
committed
dx(compiler-sfc): warn when disabled defineModel
1 parent 6277cb9 commit 2dba690

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

packages/compiler-sfc/__tests__/compileScript/defineModel.spec.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,4 +176,18 @@ describe('defineModel()', () => {
176176
optional: BindingTypes.SETUP_REF
177177
})
178178
})
179+
180+
test('should warn when disabled', () => {
181+
compile(
182+
`
183+
<script setup lang="ts">
184+
const modelValue = defineModel<boolean>()
185+
</script>
186+
`,
187+
{ defineModel: false }
188+
)
189+
expect(
190+
'defineModel() is an experimental feature and disabled by default.'
191+
).toHaveBeenWarned()
192+
})
179193
})

packages/compiler-sfc/src/script/defineModel.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
unwrapTSNode
1010
} from './utils'
1111
import { BindingTypes } from '@vue/compiler-dom'
12-
import { warnOnce } from '../warn'
12+
import { warn, warnOnce } from '../warn'
1313

1414
export const DEFINE_MODEL = 'defineModel'
1515

@@ -24,7 +24,15 @@ export function processDefineModel(
2424
node: Node,
2525
declId?: LVal
2626
): boolean {
27-
if (!ctx.options.defineModel || !isCallOf(node, DEFINE_MODEL)) {
27+
if (!isCallOf(node, DEFINE_MODEL)) {
28+
return false
29+
}
30+
31+
if (!ctx.options.defineModel) {
32+
warn(
33+
`defineModel() is an experimental feature and disabled by default.\n` +
34+
`To enable it, follow the RFC at https://github.com/vuejs/rfcs/discussions/503.`
35+
)
2836
return false
2937
}
3038

0 commit comments

Comments
 (0)