diff --git a/src/parse/state/tag.js b/src/parse/state/tag.js
index 210f7b2434..09eda8da9c 100644
--- a/src/parse/state/tag.js
+++ b/src/parse/state/tag.js
@@ -180,7 +180,7 @@ function readTagName ( parser ) {
while ( i-- ) {
const fragment = parser.stack[i];
- if ( fragment.type === 'IfBlock' || fragment.type === 'ElseBlock' ) {
+ if ( fragment.type === 'IfBlock' || fragment.type === 'EachBlock' ) {
legal = true;
break;
}
diff --git a/test/generator/self-reference-tree/_config.js b/test/generator/self-reference-tree/_config.js
new file mode 100644
index 0000000000..5613b2626b
--- /dev/null
+++ b/test/generator/self-reference-tree/_config.js
@@ -0,0 +1,65 @@
+export default {
+ data: {
+ file: {
+ name: '/',
+ type: 'folder',
+ children: [
+ {
+ name: 'foo.jpg',
+ type: 'image'
+ },
+ {
+ name: 'bar.jpg',
+ type: 'image'
+ },
+ {
+ name: 'baz',
+ type: 'folder',
+ children: [
+ {
+ name: '.DS_Store',
+ type: 'junk'
+ },
+ {
+ name: 'README.md',
+ type: 'markdown'
+ }
+ ]
+ }
+ ]
+ }
+ },
+
+ html: `
+
+ /
+
+
+ -
+
+ foo.jpg
+
+
-
+
+ bar.jpg
+
+
-
+
+ baz
+
+ -
+
+ .DS_Store
+
+
-
+
+ README.md
+
+
+
+
+
+
+
+ `
+};
\ No newline at end of file
diff --git a/test/generator/self-reference-tree/main.html b/test/generator/self-reference-tree/main.html
new file mode 100644
index 0000000000..f9e5ed6a06
--- /dev/null
+++ b/test/generator/self-reference-tree/main.html
@@ -0,0 +1,11 @@
+
+ {{file.name}}
+
+ {{#if file.type === 'folder'}}
+
+ {{#each file.children as child}}
+ - <:Self file='{{child}}'/>
+ {{/each}}
+
+ {{/if}}
+
\ No newline at end of file