From 58b4a382f9a739d43aa33223ba01998b11312a58 Mon Sep 17 00:00:00 2001 From: Evan You Date: Tue, 28 Jul 2020 15:18:41 -0400 Subject: [PATCH] refactor(compiler-core): emit error on v-if key usage --- .../transforms/__snapshots__/vIf.spec.ts.snap | 14 ------------ .../__tests__/transforms/vIf.spec.ts | 22 +++++++++---------- packages/compiler-core/src/errors.ts | 2 ++ packages/compiler-core/src/transforms/vIf.ts | 17 +++++++++----- 4 files changed, 23 insertions(+), 32 deletions(-) diff --git a/packages/compiler-core/__tests__/transforms/__snapshots__/vIf.spec.ts.snap b/packages/compiler-core/__tests__/transforms/__snapshots__/vIf.spec.ts.snap index 7a4b9041370..def7f945a51 100644 --- a/packages/compiler-core/__tests__/transforms/__snapshots__/vIf.spec.ts.snap +++ b/packages/compiler-core/__tests__/transforms/__snapshots__/vIf.spec.ts.snap @@ -145,17 +145,3 @@ return function render(_ctx, _cache) { } }" `; - -exports[`compiler: v-if codegen v-if with key 1`] = ` -"const _Vue = Vue - -return function render(_ctx, _cache) { - with (_ctx) { - const { createVNode: _createVNode, openBlock: _openBlock, createBlock: _createBlock, createCommentVNode: _createCommentVNode } = _Vue - - return ok - ? (_openBlock(), _createBlock(\\"div\\", { key: \\"some-key\\" })) - : _createCommentVNode(\\"v-if\\", true) - } -}" -`; diff --git a/packages/compiler-core/__tests__/transforms/vIf.spec.ts b/packages/compiler-core/__tests__/transforms/vIf.spec.ts index 44433d84d8c..9d4619aa8ee 100644 --- a/packages/compiler-core/__tests__/transforms/vIf.spec.ts +++ b/packages/compiler-core/__tests__/transforms/vIf.spec.ts @@ -282,6 +282,16 @@ describe('compiler: v-if', () => { } ]) }) + + test('error on user key', () => { + const onError = jest.fn() + parseWithIfTransform(`
`, { onError }) + expect(onError.mock.calls[0]).toMatchObject([ + { + code: ErrorCodes.X_V_IF_KEY + } + ]) + }) }) describe('codegen', () => { @@ -581,18 +591,6 @@ describe('compiler: v-if', () => { expect(branch1.props).toMatchObject(createObjectMatcher({ key: `[0]` })) }) - test('v-if with key', () => { - const { - root, - node: { codegenNode } - } = parseWithIfTransform(`
`) - expect(codegenNode.consequent).toMatchObject({ - tag: `"div"`, - props: createObjectMatcher({ key: 'some-key' }) - }) - expect(generate(root).code).toMatchSnapshot() - }) - test('with comments', () => { const { node } = parseWithIfTransform(`