From 64ec8bfb54b97036d9cde765d923443ec8bc02b9 Mon Sep 17 00:00:00 2001 From: Zardddddd60 Date: Wed, 10 Jun 2020 04:26:03 +0800 Subject: [PATCH] fix(compiler-core): bail static stringfication even threshold is met (#1298) fix #1128 --- .../transforms/stringifyStatic.spec.ts | 24 +++++++++++++++++++ .../src/transforms/stringifyStatic.ts | 6 ----- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/packages/compiler-dom/__tests__/transforms/stringifyStatic.spec.ts b/packages/compiler-dom/__tests__/transforms/stringifyStatic.spec.ts index b4d96605c0b..46fe259177f 100644 --- a/packages/compiler-dom/__tests__/transforms/stringifyStatic.spec.ts +++ b/packages/compiler-dom/__tests__/transforms/stringifyStatic.spec.ts @@ -225,4 +225,28 @@ describe('stringify static html', () => { type: NodeTypes.VNODE_CALL // not CALL_EXPRESSION }) }) + + test('should bail on non attribute bindings', () => { + const { ast } = compileWithStringify( + `
${repeat( + `foo`, + StringifyThresholds.ELEMENT_WITH_BINDING_COUNT + )}
` + ) + expect(ast.hoists.length).toBe(1) + expect(ast.hoists[0]).toMatchObject({ + type: NodeTypes.VNODE_CALL // not CALL_EXPRESSION + }) + + const { ast: ast2 } = compileWithStringify( + `
${repeat( + `foo`, + StringifyThresholds.ELEMENT_WITH_BINDING_COUNT + )}
` + ) + expect(ast2.hoists.length).toBe(1) + expect(ast2.hoists[0]).toMatchObject({ + type: NodeTypes.VNODE_CALL // not CALL_EXPRESSION + }) + }) }) diff --git a/packages/compiler-dom/src/transforms/stringifyStatic.ts b/packages/compiler-dom/src/transforms/stringifyStatic.ts index a354dc2cdd9..6130d2395d3 100644 --- a/packages/compiler-dom/src/transforms/stringifyStatic.ts +++ b/packages/compiler-dom/src/transforms/stringifyStatic.ts @@ -189,16 +189,10 @@ function analyzeNode(node: StringifiableNode): [number, number] | false { } for (let i = 0; i < node.children.length; i++) { nc++ - if (nc >= StringifyThresholds.NODE_COUNT) { - return true - } const child = node.children[i] if (child.type === NodeTypes.ELEMENT) { if (child.props.length > 0) { ec++ - if (ec >= StringifyThresholds.ELEMENT_WITH_BINDING_COUNT) { - return true - } } walk(child) if (bailed) {