refactor: remove deprecated defineEmit() support

This commit is contained in:
Evan You 2021-07-14 15:40:09 -04:00
parent 562bddb3ce
commit e66a493da1
3 changed files with 7 additions and 65 deletions

View File

@ -33,20 +33,6 @@ return { x }
export const n = 1" export const n = 1"
`; `;
exports[`SFC compile <script setup> defineEmit() (deprecated) 1`] = `
"export default {
emits: ['foo', 'bar'],
setup(__props, { expose, emit: myEmit }) {
expose()
return { myEmit }
}
}"
`;
exports[`SFC compile <script setup> defineEmits() 1`] = ` exports[`SFC compile <script setup> defineEmits() 1`] = `
"export default { "export default {
emits: ['foo', 'bar'], emits: ['foo', 'bar'],
@ -195,7 +181,7 @@ export default {
setup(__props, { expose }) { setup(__props, { expose }) {
expose() expose()
const foo = _ref(1) let foo = _ref(1)
return { foo, ref } return { foo, ref }
} }
@ -324,23 +310,6 @@ return (_ctx, _cache) => {
}" }"
`; `;
exports[`SFC compile <script setup> inlineTemplate mode should not wrap render fn with withId when having scoped styles 1`] = `
"import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, withScopeId as _withScopeId } from \\"vue\\"
export default {
setup(__props) {
const msg = 1
return (_ctx, _cache) => {
return (_openBlock(), _createElementBlock(\\"h1\\", null, _toDisplayString(msg)))
}
}
}"
`;
exports[`SFC compile <script setup> inlineTemplate mode should work 1`] = ` exports[`SFC compile <script setup> inlineTemplate mode should work 1`] = `
"import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \\"vue\\" "import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \\"vue\\"

View File

@ -59,25 +59,6 @@ const bar = 1
props: propsModel,`) props: propsModel,`)
}) })
test('defineEmit() (deprecated)', () => {
const { content, bindings } = compile(`
<script setup>
const myEmit = defineEmit(['foo', 'bar'])
</script>
`)
assertCode(content)
expect(bindings).toStrictEqual({
myEmit: BindingTypes.SETUP_CONST
})
// should remove defineOptions import and call
expect(content).not.toMatch(/defineEmits?/)
// should generate correct setup signature
expect(content).toMatch(`setup(__props, { expose, emit: myEmit }) {`)
// should include context options in default export
expect(content).toMatch(`export default {
emits: ['foo', 'bar'],`)
})
test('defineEmits()', () => { test('defineEmits()', () => {
const { content, bindings } = compile(` const { content, bindings } = compile(`
<script setup> <script setup>
@ -204,7 +185,7 @@ defineExpose({ foo: 123 })
` `
<script setup> <script setup>
import { ref } from 'vue' import { ref } from 'vue'
ref: foo = 1 let foo = $ref(1)
</script> </script>
`, `,
{ refSugar: true } { refSugar: true }
@ -848,7 +829,7 @@ const emit = defineEmits(['a', 'b'])
test('ref', () => { test('ref', () => {
assertAwaitDetection( assertAwaitDetection(
`ref: a = 1 + (await foo)`, `let a = $ref(1 + (await foo))`,
`1 + ((([__temp,__restore]=_withAsyncContext(()=>(foo))),__temp=await __temp,__restore(),__temp))` `1 + ((([__temp,__restore]=_withAsyncContext(()=>(foo))),__temp=await __temp,__restore(),__temp))`
) )
}) })

View File

@ -48,7 +48,7 @@ import { rewriteDefault } from './rewriteDefault'
// Special compiler macros // Special compiler macros
const DEFINE_PROPS = 'defineProps' const DEFINE_PROPS = 'defineProps'
const DEFINE_EMIT = 'defineEmit' const DEFINE_EMITS = 'defineEmits'
const DEFINE_EXPOSE = 'defineExpose' const DEFINE_EXPOSE = 'defineExpose'
const WITH_DEFAULTS = 'withDefaults' const WITH_DEFAULTS = 'withDefaults'
@ -57,9 +57,6 @@ const $COMPUTED = `$computed`
const $FROM_REFS = `$fromRefs` const $FROM_REFS = `$fromRefs`
const $RAW = `$raw` const $RAW = `$raw`
// deprecated
const DEFINE_EMITS = 'defineEmits'
export interface SFCScriptCompileOptions { export interface SFCScriptCompileOptions {
/** /**
* Scope ID for prefixing injected CSS varialbes. * Scope ID for prefixing injected CSS varialbes.
@ -387,7 +384,7 @@ export function compileScript(
} }
function processDefineEmits(node: Node): boolean { function processDefineEmits(node: Node): boolean {
if (!isCallOf(node, c => c === DEFINE_EMIT || c === DEFINE_EMITS)) { if (!isCallOf(node, DEFINE_EMITS)) {
return false return false
} }
if (hasDefineEmitCall) { if (hasDefineEmitCall) {
@ -398,7 +395,7 @@ export function compileScript(
if (node.typeParameters) { if (node.typeParameters) {
if (emitsRuntimeDecl) { if (emitsRuntimeDecl) {
error( error(
`${DEFINE_EMIT}() cannot accept both type and non-type arguments ` + `${DEFINE_EMITS}() cannot accept both type and non-type arguments ` +
`at the same time. Use one or the other.`, `at the same time. Use one or the other.`,
node node
) )
@ -873,7 +870,6 @@ export function compileScript(
if ( if (
source === 'vue' && source === 'vue' &&
(imported === DEFINE_PROPS || (imported === DEFINE_PROPS ||
imported === DEFINE_EMIT ||
imported === DEFINE_EMITS || imported === DEFINE_EMITS ||
imported === DEFINE_EXPOSE) imported === DEFINE_EXPOSE)
) { ) {
@ -1414,11 +1410,7 @@ function walkDeclaration(
isConst && isConst &&
isCallOf( isCallOf(
init, init,
c => c => c === DEFINE_PROPS || c === DEFINE_EMITS || c === WITH_DEFAULTS
c === DEFINE_PROPS ||
c === DEFINE_EMIT ||
c === DEFINE_EMITS ||
c === WITH_DEFAULTS
) )
) )
if (id.type === 'Identifier') { if (id.type === 'Identifier') {