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
loc: getLoc(start - 1),
codegenNode: undefined
}
- currentAttrs.clear()
},
onopentagend(end) {
},
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
}
},
tokenizer.reset()
currentElement = null
currentProp = null
- currentAttrs.clear()
currentAttrValue = ''
currentAttrStartIndex = -1
currentAttrEndIndex = -1