fix(compiler-core): bail static stringfication even threshold is met (#1298)
fix #1128
This commit is contained in:
		
							parent
							
								
									215c106297
								
							
						
					
					
						commit
						64ec8bfb54
					
				@ -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(
 | 
			
		||||
      `<div><div>${repeat(
 | 
			
		||||
        `<span class="foo">foo</span>`,
 | 
			
		||||
        StringifyThresholds.ELEMENT_WITH_BINDING_COUNT
 | 
			
		||||
      )}<input indeterminate></div></div>`
 | 
			
		||||
    )
 | 
			
		||||
    expect(ast.hoists.length).toBe(1)
 | 
			
		||||
    expect(ast.hoists[0]).toMatchObject({
 | 
			
		||||
      type: NodeTypes.VNODE_CALL // not CALL_EXPRESSION
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    const { ast: ast2 } = compileWithStringify(
 | 
			
		||||
      `<div><div>${repeat(
 | 
			
		||||
        `<span class="foo">foo</span>`,
 | 
			
		||||
        StringifyThresholds.ELEMENT_WITH_BINDING_COUNT
 | 
			
		||||
      )}<input :indeterminate="true"></div></div>`
 | 
			
		||||
    )
 | 
			
		||||
    expect(ast2.hoists.length).toBe(1)
 | 
			
		||||
    expect(ast2.hoists[0]).toMatchObject({
 | 
			
		||||
      type: NodeTypes.VNODE_CALL // not CALL_EXPRESSION
 | 
			
		||||
    })
 | 
			
		||||
  })
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
@ -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) {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user