wip: remove v-if key warning as there are legit use cases

This commit is contained in:
Evan You 2021-05-05 16:25:33 -04:00
parent c32760147c
commit 7a8cee8688
3 changed files with 4 additions and 22 deletions

View File

@ -306,7 +306,6 @@ describe('compiler: v-if', () => {
code: ErrorCodes.X_V_IF_SAME_KEY code: ErrorCodes.X_V_IF_SAME_KEY
} }
]) ])
expect('unnecessary key usage on v-if').toHaveBeenWarned()
}) })
}) })

View File

@ -91,9 +91,6 @@ export const enum ErrorCodes {
X_CACHE_HANDLER_NOT_SUPPORTED, X_CACHE_HANDLER_NOT_SUPPORTED,
X_SCOPE_ID_NOT_SUPPORTED, X_SCOPE_ID_NOT_SUPPORTED,
// warnings
X_V_IF_KEY,
// Special value for higher-order compilers to pick up the last code // Special value for higher-order compilers to pick up the last code
// to avoid collision of error codes. This should always be kept as the last // to avoid collision of error codes. This should always be kept as the last
// item. // item.
@ -174,11 +171,6 @@ export const errorMessages: Record<ErrorCodes, string> = {
[ErrorCodes.X_CACHE_HANDLER_NOT_SUPPORTED]: `"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.`, [ErrorCodes.X_CACHE_HANDLER_NOT_SUPPORTED]: `"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.`,
[ErrorCodes.X_SCOPE_ID_NOT_SUPPORTED]: `"scopeId" option is only supported in module mode.`, [ErrorCodes.X_SCOPE_ID_NOT_SUPPORTED]: `"scopeId" option is only supported in module mode.`,
// warnings
[ErrorCodes.X_V_IF_KEY]:
`unnecessary key usage on v-if/else branches. ` +
`Vue will automatically generate unique keys for each branch.`,
// just to fullfill types // just to fullfill types
[ErrorCodes.__EXTEND_POINT__]: `` [ErrorCodes.__EXTEND_POINT__]: ``
} }

View File

@ -110,7 +110,7 @@ export function processIf(
} }
if (dir.name === 'if') { if (dir.name === 'if') {
const branch = createIfBranch(node, dir, context) const branch = createIfBranch(node, dir)
const ifNode: IfNode = { const ifNode: IfNode = {
type: NodeTypes.IF, type: NodeTypes.IF,
loc: node.loc, loc: node.loc,
@ -145,7 +145,7 @@ export function processIf(
if (sibling && sibling.type === NodeTypes.IF) { if (sibling && sibling.type === NodeTypes.IF) {
// move the node to the if node's branches // move the node to the if node's branches
context.removeNode() context.removeNode()
const branch = createIfBranch(node, dir, context) const branch = createIfBranch(node, dir)
if (__DEV__ && comments.length) { if (__DEV__ && comments.length) {
branch.children = [...comments, ...branch.children] branch.children = [...comments, ...branch.children]
} }
@ -187,16 +187,7 @@ export function processIf(
} }
} }
function createIfBranch( function createIfBranch(node: ElementNode, dir: DirectiveNode): IfBranchNode {
node: ElementNode,
dir: DirectiveNode,
context: TransformContext
): IfBranchNode {
const userKey = findProp(node, `key`)
if (__DEV__ && userKey) {
context.onWarn(createCompilerError(ErrorCodes.X_V_IF_KEY, userKey.loc))
}
return { return {
type: NodeTypes.IF_BRANCH, type: NodeTypes.IF_BRANCH,
loc: node.loc, loc: node.loc,
@ -205,7 +196,7 @@ function createIfBranch(
node.tagType === ElementTypes.TEMPLATE && !findDir(node, 'for') node.tagType === ElementTypes.TEMPLATE && !findDir(node, 'for')
? node.children ? node.children
: [node], : [node],
userKey userKey: findProp(node, `key`)
} }
} }