const modifiers = match[3] ? match[3].substr(1).split('.') : []
// 2.x compat v-bind:foo.sync -> v-model:foo
- if (
- __COMPAT__ &&
- dirName === 'bind' &&
- arg &&
- modifiers.includes('sync') &&
- checkCompatEnabled(
- CompilerDeprecationTypes.COMPILER_V_BIND_SYNC,
- context,
- loc,
- arg.loc.source
- )
- ) {
- dirName = 'model'
- modifiers.splice(modifiers.indexOf('sync'), 1)
+ if (__COMPAT__ && dirName === 'bind' && arg) {
+ if (
+ modifiers.includes('sync') &&
+ checkCompatEnabled(
+ CompilerDeprecationTypes.COMPILER_V_BIND_SYNC,
+ context,
+ loc,
+ arg.loc.source
+ )
+ ) {
+ dirName = 'model'
+ modifiers.splice(modifiers.indexOf('sync'), 1)
+ }
+
+ if (__DEV__ && modifiers.includes('prop')) {
+ checkCompatEnabled(
+ CompilerDeprecationTypes.COMPILER_V_BIND_PROP,
+ context,
+ loc
+ )
+ }
}
return {
? resolveComponentType(node as ComponentNode, context)
: `"${tag}"`
+ // 2.x <template> with no directives compat
if (
__COMPAT__ &&
tag === 'template' &&
// if not <component>, only is value that starts with "vue:" will be
// treated as component by the parse phase and reach here, unless it's
// compat mode where all is values are considered components
- tag = __COMPAT__
- ? isProp.value!.content.replace(/^vue:/, '')
- : isProp.value!.content.slice(4)
+ tag = isProp.value!.content.replace(/^vue:/, '')
} else {
const exp =
isProp.type === NodeTypes.ATTRIBUTE
}
if (isVBind) {
if (__COMPAT__) {
+ // 2.x v-bind object order compat
if (__DEV__) {
const hasOverridableKeys = mergeArgs.some(arg => {
if (arg.type === NodeTypes.JS_OBJECT_EXPRESSION) {
import { createCompilerError, ErrorCodes } from '../errors'
import { camelize } from '@vue/shared'
import { CAMELIZE } from '../runtimeHelpers'
-import {
- checkCompatEnabled,
- CompilerDeprecationTypes
-} from '../compat/compatConfig'
// v-bind without arg is handled directly in ./transformElements.ts due to it affecting
// codegen for the entire props object. This transform here is only for v-bind
}
}
- if (__COMPAT__) {
- if (modifiers.includes('prop')) {
- checkCompatEnabled(
- CompilerDeprecationTypes.COMPILER_V_BIND_PROP,
- context,
- loc
- )
- }
- // .sync handling is performed directly in the parse phase to transform
- // it into v-model:arg equivalent.
- }
-
if (
!exp ||
(exp.type === NodeTypes.SIMPLE_EXPRESSION && !exp.content.trim())