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
|
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++) {
|
for (let i = 0; i < node.children.length; i++) {
|
||||||
nc++
|
nc++
|
||||||
if (nc >= StringifyThresholds.NODE_COUNT) {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
const child = node.children[i]
|
const child = node.children[i]
|
||||||
if (child.type === NodeTypes.ELEMENT) {
|
if (child.type === NodeTypes.ELEMENT) {
|
||||||
if (child.props.length > 0) {
|
if (child.props.length > 0) {
|
||||||
ec++
|
ec++
|
||||||
if (ec >= StringifyThresholds.ELEMENT_WITH_BINDING_COUNT) {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
walk(child)
|
walk(child)
|
||||||
if (bailed) {
|
if (bailed) {
|
||||||
|
Loading…
Reference in New Issue
Block a user