Browse Source

wip: tune perf

pull/9689/head
Evan You 2 years ago
parent
commit
caabba7590
  1. 17
      packages/compiler-core/src/parser/index.ts

17
packages/compiler-core/src/parser/index.ts

@ -74,7 +74,6 @@ let currentProp: AttributeNode | DirectiveNode | null = null
let currentAttrValue = ''
let currentAttrStartIndex = -1
let currentAttrEndIndex = -1
let currentAttrs: Set<string> = new Set()
let inPre = 0
let inVPre = false
let currentVPreBoundary: ElementNode | null = null
@ -124,7 +123,6 @@ const tokenizer = new Tokenizer(stack, {
loc: getLoc(start - 1),
codegenNode: undefined
}
currentAttrs.clear()
},
onopentagend(end) {
@ -249,18 +247,18 @@ const tokenizer = new Tokenizer(stack, {
},
onattribnameend(end) {
// check duplicate attrs
const start = currentProp!.loc.start.offset
const name = getSlice(start, end)
if (currentProp!.type === NodeTypes.DIRECTIVE) {
currentProp!.rawName = name
}
if (currentAttrs.has(name)) {
currentProp = null
// TODO emit error DUPLICATE_ATTRIBUTE
throw new Error(`duplicate attr ${name}`)
} else {
currentAttrs.add(name)
// check duplicate attrs
if (
currentElement!.props.some(
p => (p.type === NodeTypes.DIRECTIVE ? p.rawName : p.name) === name
)
) {
// TODO duplicate
}
},
@ -688,7 +686,6 @@ function reset() {
tokenizer.reset()
currentElement = null
currentProp = null
currentAttrs.clear()
currentAttrValue = ''
currentAttrStartIndex = -1
currentAttrEndIndex = -1

Loading…
Cancel
Save