COMPILER_V_BIND_OBJECT_ORDER = 'COMPILER_V_BIND_OBJECT_ORDER',
COMPILER_V_ON_NATIVE = 'COMPILER_V_ON_NATIVE',
COMPILER_V_IF_V_FOR_PRECEDENCE = 'COMPILER_V_IF_V_FOR_PRECEDENCE',
- COMPILER_NATIVE_TEMPLATE = 'COMPILER_NATIVE_TEMPLATE'
+ COMPILER_NATIVE_TEMPLATE = 'COMPILER_NATIVE_TEMPLATE',
+ COMPILER_INLINE_TEMPLATE = 'COMPILER_INLINE_TEMPLATE',
+ COMPILER_FILTER = 'COMPILER_FILTER'
}
type DeprecationData = {
message:
`<template> with no special directives will render as a native template ` +
`element instead of its inner content in Vue 3.`
+ },
+
+ [CompilerDeprecationTypes.COMPILER_INLINE_TEMPLATE]: {
+ message: `"inline-template" has been removed in Vue 3.`,
+ link: `https://v3.vuejs.org/guide/migration/inline-template-attribute.html`
+ },
+
+ [CompilerDeprecationTypes.COMPILER_FILTER]: {
+ message: `filters have been removed in Vue 3.`,
+ link: `https://v3.vuejs.org/guide/migration/filters.html`
}
}
const children = parseChildren(context, mode, ancestors)
ancestors.pop()
+ // 2.x inline-template compat
+ if (__COMPAT__) {
+ const inlineTemplateProp = element.props.find(
+ p => p.type === NodeTypes.ATTRIBUTE && p.name === 'inline-template'
+ ) as AttributeNode
+ if (
+ inlineTemplateProp &&
+ checkCompatEnabled(
+ CompilerDeprecationTypes.COMPILER_INLINE_TEMPLATE,
+ context,
+ inlineTemplateProp.loc
+ )
+ ) {
+ inlineTemplateProp.value!.content = getSelection(
+ context,
+ element.loc.end
+ ).source
+ console.log(inlineTemplateProp)
+ }
+ }
+
element.children = children
// End tag.
return
}
- // warn v-if/v-for usage on the same element
+ // 2.x deprecation checks
if (__COMPAT__ && __DEV__ && !__TEST__) {
let hasIf = false
let hasFor = false
NOOP) as InternalRenderFunction
} else if (!instance.render) {
// could be set from setup()
- if (compile && Component.template && !Component.render) {
- if (__DEV__) {
- startMeasure(instance, `compile`)
- }
- const compilerOptions: CompilerOptions = {
- isCustomElement: instance.appContext.config.isCustomElement,
- delimiters: Component.delimiters
- }
- if (__COMPAT__) {
- // pass runtime compat config into the compiler
- compilerOptions.compatConfig = Object.create(globalCompatConfig)
- if (Component.compatConfig) {
- extend(compilerOptions.compatConfig, Component.compatConfig)
+ if (compile && !Component.render) {
+ const template =
+ (__COMPAT__ &&
+ instance.vnode.props &&
+ instance.vnode.props['inline-template']) ||
+ Component.template
+ if (template) {
+ if (__DEV__) {
+ startMeasure(instance, `compile`)
+ }
+ const compilerOptions: CompilerOptions = {
+ isCustomElement: instance.appContext.config.isCustomElement,
+ delimiters: Component.delimiters
+ }
+ if (__COMPAT__) {
+ // pass runtime compat config into the compiler
+ compilerOptions.compatConfig = Object.create(globalCompatConfig)
+ if (Component.compatConfig) {
+ extend(compilerOptions.compatConfig, Component.compatConfig)
+ }
+ }
+ Component.render = compile(template, compilerOptions)
+ if (__DEV__) {
+ endMeasure(instance, `compile`)
}
- }
- Component.render = compile(Component.template, compilerOptions)
- if (__DEV__) {
- endMeasure(instance, `compile`)
}
}
continue
}
- if (__COMPAT__ && key.startsWith('onHook:')) {
- softAssertCompatEnabled(
- DeprecationTypes.INSTANCE_EVENT_HOOKS,
- instance,
- key.slice(2).toLowerCase()
- )
+ if (__COMPAT__) {
+ if (key.startsWith('onHook:')) {
+ softAssertCompatEnabled(
+ DeprecationTypes.INSTANCE_EVENT_HOOKS,
+ instance,
+ key.slice(2).toLowerCase()
+ )
+ }
+ if (key === 'inline-template') {
+ continue
+ }
}
const value = rawProps[key]