Skip to content

Commit 905afed

Browse files
committed
Fix: no-invalid-template-root has false positive about empty templates (fixes #41)
1 parent 581689a commit 905afed

File tree

2 files changed

+12
-29
lines changed

2 files changed

+12
-29
lines changed

lib/rules/no-invalid-template-root.js

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,6 @@ function create (context) {
6565
loc: extraElement.loc,
6666
message: 'The template root requires exactly one element.'
6767
})
68-
} else if (rootElements.length === 0) {
69-
context.report({
70-
node,
71-
loc: node.loc,
72-
message: 'The template root requires exactly one element.'
73-
})
7468
} else {
7569
for (const element of rootElements) {
7670
const tag = element.startTag
@@ -92,14 +86,6 @@ function create (context) {
9286
})
9387
}
9488
}
95-
if (vIf) {
96-
const tag = rootElements[0].startTag
97-
context.report({
98-
node: tag,
99-
loc: tag.loc,
100-
message: "The template root requires the next element which has 'v-else' directives if it has 'v-if' directives."
101-
})
102-
}
10389
}
10490
}
10591
}

tests/lib/rules/no-invalid-template-root.js

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,21 @@ tester.run('no-invalid-template-root', rule, {
5050
{
5151
filename: 'test.vue',
5252
code: `<template>\n <c1 v-if="1" />\n <c2 v-else-if="1" />\n <c3 v-else />\n</template>`
53-
}
54-
],
55-
invalid: [
53+
},
5654
{
5755
filename: 'test.vue',
58-
code: '<template>\n</template>',
59-
errors: ['The template root requires exactly one element.']
56+
code: '<template>\n</template>'
6057
},
58+
{
59+
filename: 'test.vue',
60+
code: '<template><div v-if="foo"></div></template>'
61+
},
62+
{
63+
filename: 'test.vue',
64+
code: '<template><div v-if="foo"></div><div v-else-if="bar"></div></template>'
65+
}
66+
],
67+
invalid: [
6168
{
6269
filename: 'test.vue',
6370
code: '<template><div></div><div></div></template>',
@@ -88,16 +95,6 @@ tester.run('no-invalid-template-root', rule, {
8895
code: '<template><div v-for="x in list"></div></template>',
8996
errors: ["The template root disallows 'v-for' directives."]
9097
},
91-
{
92-
filename: 'test.vue',
93-
code: '<template><div v-if="foo"></div></template>',
94-
errors: ["The template root requires the next element which has 'v-else' directives if it has 'v-if' directives."]
95-
},
96-
{
97-
filename: 'test.vue',
98-
code: '<template><div v-if="foo"></div><div v-else-if="bar"></div></template>',
99-
errors: ["The template root requires the next element which has 'v-else' directives if it has 'v-if' directives."]
100-
},
10198
{
10299
filename: 'test.vue',
103100
code: '<template><slot></slot></template>',

0 commit comments

Comments
 (0)