From 4674ae66982a7b106a41d2d62f2bb6e8ec9e2b08 Mon Sep 17 00:00:00 2001 From: huangcheng Date: Thu, 28 Apr 2022 13:46:47 +0800 Subject: [PATCH 1/4] fix(compiler-core): missing source and have with multiple spaces should emit error during compiler --- .../compiler-core/__tests__/transforms/vFor.spec.ts | 12 ++++++++++++ packages/compiler-core/src/utils.ts | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/compiler-core/__tests__/transforms/vFor.spec.ts b/packages/compiler-core/__tests__/transforms/vFor.spec.ts index 7fabcbb579c..788c95774f6 100644 --- a/packages/compiler-core/__tests__/transforms/vFor.spec.ts +++ b/packages/compiler-core/__tests__/transforms/vFor.spec.ts @@ -253,6 +253,18 @@ describe('compiler: v-for', () => { ) }) + test('missing source and have multiple spaces with', () => { + const onError = vi.fn() + parseWithForTransform('', { onError }) + + expect(onError).toHaveBeenCalledTimes(1) + expect(onError).toHaveBeenCalledWith( + expect.objectContaining({ + code: ErrorCodes.X_V_FOR_MALFORMED_EXPRESSION + }) + ) + }) + test('missing value', () => { const onError = vi.fn() parseWithForTransform('', { onError }) diff --git a/packages/compiler-core/src/utils.ts b/packages/compiler-core/src/utils.ts index 99a2c5b61a8..aa596028440 100644 --- a/packages/compiler-core/src/utils.ts +++ b/packages/compiler-core/src/utils.ts @@ -499,4 +499,4 @@ export function getMemoedVNodeCall(node: BlockCodegenNode | MemoExpression) { } } -export const forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/ +export const forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+(\S[\s\S]*)/ From baad119e947646087cbecce774f3aa853a4b4051 Mon Sep 17 00:00:00 2001 From: huangcheng Date: Fri, 29 Apr 2022 10:59:14 +0800 Subject: [PATCH 2/4] fix(compiler-core): handle v-for source with spaces --- .../compiler-core/__tests__/transforms/vFor.spec.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/compiler-core/__tests__/transforms/vFor.spec.ts b/packages/compiler-core/__tests__/transforms/vFor.spec.ts index 788c95774f6..ca55b49d035 100644 --- a/packages/compiler-core/__tests__/transforms/vFor.spec.ts +++ b/packages/compiler-core/__tests__/transforms/vFor.spec.ts @@ -265,6 +265,16 @@ describe('compiler: v-for', () => { ) }) + test('source containing string expression with spaces', () => { + const { node: forNode } = parseWithForTransform( + `` + ) + expect(forNode.keyAlias).toBeUndefined() + expect(forNode.objectIndexAlias).toBeUndefined() + expect((forNode.valueAlias as SimpleExpressionNode).content).toBe('item') + expect((forNode.source as SimpleExpressionNode).content).toBe("state ['my items']") + }) + test('missing value', () => { const onError = vi.fn() parseWithForTransform('', { onError }) From ee65aa198ac49e6745cfc7df22636b2c8636dd6e Mon Sep 17 00:00:00 2001 From: huangcheng Date: Fri, 29 Apr 2022 11:05:42 +0800 Subject: [PATCH 3/4] fix(compiler-core): add test case for v-for source with spaces --- .../__tests__/transforms/vFor.spec.ts | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/compiler-core/__tests__/transforms/vFor.spec.ts b/packages/compiler-core/__tests__/transforms/vFor.spec.ts index ca55b49d035..06775ae1120 100644 --- a/packages/compiler-core/__tests__/transforms/vFor.spec.ts +++ b/packages/compiler-core/__tests__/transforms/vFor.spec.ts @@ -202,6 +202,16 @@ describe('compiler: v-for', () => { expect(forNode.valueAlias).toBeUndefined() expect((forNode.source as SimpleExpressionNode).content).toBe('items') }) + + test('source containing string expression with spaces', () => { + const { node: forNode } = parseWithForTransform( + `` + ) + expect(forNode.keyAlias).toBeUndefined() + expect(forNode.objectIndexAlias).toBeUndefined() + expect((forNode.valueAlias as SimpleExpressionNode).content).toBe('item') + expect((forNode.source as SimpleExpressionNode).content).toBe("state ['my items']") + }) }) describe('errors', () => { @@ -265,16 +275,6 @@ describe('compiler: v-for', () => { ) }) - test('source containing string expression with spaces', () => { - const { node: forNode } = parseWithForTransform( - `` - ) - expect(forNode.keyAlias).toBeUndefined() - expect(forNode.objectIndexAlias).toBeUndefined() - expect((forNode.valueAlias as SimpleExpressionNode).content).toBe('item') - expect((forNode.source as SimpleExpressionNode).content).toBe("state ['my items']") - }) - test('missing value', () => { const onError = vi.fn() parseWithForTransform('', { onError }) From f3a9fa6cfb662d5a0d326933266cc6b4f0d81338 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Thu, 30 May 2024 09:22:01 +0000 Subject: [PATCH 4/4] [autofix.ci] apply automated fixes --- .../compiler-core/__tests__/transforms/vFor.spec.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/compiler-core/__tests__/transforms/vFor.spec.ts b/packages/compiler-core/__tests__/transforms/vFor.spec.ts index 06775ae1120..e434b8888a6 100644 --- a/packages/compiler-core/__tests__/transforms/vFor.spec.ts +++ b/packages/compiler-core/__tests__/transforms/vFor.spec.ts @@ -205,12 +205,14 @@ describe('compiler: v-for', () => { test('source containing string expression with spaces', () => { const { node: forNode } = parseWithForTransform( - `` + ``, ) expect(forNode.keyAlias).toBeUndefined() expect(forNode.objectIndexAlias).toBeUndefined() expect((forNode.valueAlias as SimpleExpressionNode).content).toBe('item') - expect((forNode.source as SimpleExpressionNode).content).toBe("state ['my items']") + expect((forNode.source as SimpleExpressionNode).content).toBe( + "state ['my items']", + ) }) }) @@ -270,8 +272,8 @@ describe('compiler: v-for', () => { expect(onError).toHaveBeenCalledTimes(1) expect(onError).toHaveBeenCalledWith( expect.objectContaining({ - code: ErrorCodes.X_V_FOR_MALFORMED_EXPRESSION - }) + code: ErrorCodes.X_V_FOR_MALFORMED_EXPRESSION, + }), ) })