wip: inline-template compat

This commit is contained in:
Evan You
2021-04-17 23:19:40 -04:00
parent 1390ece04f
commit 3ea68691e2
4 changed files with 70 additions and 25 deletions

View File

@@ -20,7 +20,9 @@ export const enum CompilerDeprecationTypes {
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 = {
@@ -80,6 +82,16 @@ const deprecationData: Record<CompilerDeprecationTypes, 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`
}
}

View File

@@ -406,6 +406,27 @@ function parseElement(
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.
@@ -516,7 +537,7 @@ function parseTag(
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