fix(compiler-sfc): fix parsing error when lang="" is used on plain element (#2569)

fix #2566
This commit is contained in:
edison 2020-12-01 03:45:26 +08:00 committed by GitHub
parent bf16a57fc3
commit 5f2a8533ac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 7 deletions

View File

@ -144,6 +144,18 @@ h1 { color: red }
expect(descriptor.template!.content).toBe(content)
})
//#2566
test('div lang should not be treated as plain text', () => {
const { errors } = parse(`
<template lang="pug">
<div lang="">
<div></div>
</div>
</template>
`)
expect(errors.length).toBe(0)
})
test('error tolerance', () => {
const { errors } = parse(`<template>`)
expect(errors.length).toBe(1)

View File

@ -115,13 +115,14 @@ export function parse(
if (
(!parent && tag !== 'template') ||
// <template lang="xxx"> should also be treated as raw text
props.some(
p =>
p.type === NodeTypes.ATTRIBUTE &&
p.name === 'lang' &&
p.value &&
p.value.content !== 'html'
)
(tag === 'template' &&
props.some(
p =>
p.type === NodeTypes.ATTRIBUTE &&
p.name === 'lang' &&
p.value &&
p.value.content !== 'html'
))
) {
return TextModes.RAWTEXT
} else {