wip: is usage compat
This commit is contained in:
@@ -30,7 +30,11 @@ import {
|
||||
createRoot,
|
||||
ConstantTypes
|
||||
} from './ast'
|
||||
import { CompilerCompatOptions } from './compat/compatConfig'
|
||||
import {
|
||||
checkCompatEnabled,
|
||||
CompilerCompatOptions,
|
||||
CompilerDeprecationTypes
|
||||
} from './compat/compatConfig'
|
||||
|
||||
type OptionalOptions =
|
||||
| 'isNativeTag'
|
||||
@@ -499,14 +503,28 @@ function parseTag(
|
||||
let tagType = ElementTypes.ELEMENT
|
||||
const options = context.options
|
||||
if (!context.inVPre && !options.isCustomElement(tag)) {
|
||||
const hasVIs = props.some(
|
||||
p =>
|
||||
p.name === 'is' &&
|
||||
// v-is="xxx" (TODO: deprecate)
|
||||
(p.type === NodeTypes.DIRECTIVE ||
|
||||
// is="vue:xxx"
|
||||
(p.value && p.value.content.startsWith('vue:')))
|
||||
)
|
||||
const hasVIs = props.some(p => {
|
||||
if (p.name !== 'is') return
|
||||
// v-is="xxx" (TODO: deprecate)
|
||||
if (p.type === NodeTypes.DIRECTIVE) {
|
||||
return true
|
||||
}
|
||||
// is="vue:xxx"
|
||||
if (p.value && p.value.content.startsWith('vue:')) {
|
||||
return true
|
||||
}
|
||||
// in compat mode, any is usage is considered a component
|
||||
if (
|
||||
__COMPAT__ &&
|
||||
checkCompatEnabled(
|
||||
CompilerDeprecationTypes.IS_ON_ELEMENT,
|
||||
context,
|
||||
p.loc
|
||||
)
|
||||
) {
|
||||
return true
|
||||
}
|
||||
})
|
||||
if (options.isNativeTag && !hasVIs) {
|
||||
if (!options.isNativeTag(tag)) tagType = ElementTypes.COMPONENT
|
||||
} else if (
|
||||
|
||||
Reference in New Issue
Block a user