mirror of https://github.com/vuejs/core.git
fix(compiler-core): adjacent v-else should cause a compiler error (#13699)
close #13698
This commit is contained in:
parent
c486536105
commit
911e67045e
|
@ -301,6 +301,25 @@ describe('compiler: v-if', () => {
|
||||||
])
|
])
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('error on adjacent v-else', () => {
|
||||||
|
const onError = vi.fn()
|
||||||
|
|
||||||
|
const {
|
||||||
|
node: { branches },
|
||||||
|
} = parseWithIfTransform(
|
||||||
|
`<div v-if="false"/><div v-else/><div v-else/>`,
|
||||||
|
{ onError },
|
||||||
|
0,
|
||||||
|
)
|
||||||
|
|
||||||
|
expect(onError.mock.calls[0]).toMatchObject([
|
||||||
|
{
|
||||||
|
code: ErrorCodes.X_V_ELSE_NO_ADJACENT_IF,
|
||||||
|
loc: branches[branches.length - 1].loc,
|
||||||
|
},
|
||||||
|
])
|
||||||
|
})
|
||||||
|
|
||||||
test('error on user key', () => {
|
test('error on user key', () => {
|
||||||
const onError = vi.fn()
|
const onError = vi.fn()
|
||||||
// dynamic
|
// dynamic
|
||||||
|
|
|
@ -141,9 +141,9 @@ export function processIf(
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sibling && sibling.type === NodeTypes.IF) {
|
if (sibling && sibling.type === NodeTypes.IF) {
|
||||||
// Check if v-else was followed by v-else-if
|
// Check if v-else was followed by v-else-if or there are two adjacent v-else
|
||||||
if (
|
if (
|
||||||
dir.name === 'else-if' &&
|
(dir.name === 'else-if' || dir.name === 'else') &&
|
||||||
sibling.branches[sibling.branches.length - 1].condition === undefined
|
sibling.branches[sibling.branches.length - 1].condition === undefined
|
||||||
) {
|
) {
|
||||||
context.onError(
|
context.onError(
|
||||||
|
|
Loading…
Reference in New Issue