refactor: remove deprecated defineEmit() support
This commit is contained in:
parent
562bddb3ce
commit
e66a493da1
@ -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\\"
|
||||||
|
|
||||||
|
@ -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))`
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
@ -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') {
|
||||||
|
Loading…
Reference in New Issue
Block a user