diff --git a/lib/pegjs/html/glimmer-tag-string.pegjs b/lib/pegjs/html/glimmer-tag-string.pegjs
new file mode 100644
index 0000000..89483e9
--- /dev/null
+++ b/lib/pegjs/html/glimmer-tag-string.pegjs
@@ -0,0 +1,8 @@
+@import "../non-separator-colon.pegjs" as nonSeparatorColon
+
+start = tagString
+
+tagString 'valid tag string'
+ = c:$tagChar+
+
+tagChar = [_a-zA-Z0-9-.] / nonSeparatorColon / '@'
diff --git a/lib/pegjs/html/tag-component.pegjs b/lib/pegjs/html/tag-component.pegjs
index 8c7be34..7e4b36c 100644
--- a/lib/pegjs/html/tag-component.pegjs
+++ b/lib/pegjs/html/tag-component.pegjs
@@ -3,7 +3,7 @@
@import "./attribute.pegjs" as attribute
@import "./attribute-bracketed.pegjs" as bracketedAttribute
@import "./attribute-shorthand.pegjs" as shorthandAttributes
-@import "./tag-string.pegjs" as tagString
+@import "./glimmer-tag-string.pegjs" as glimmerTagString
@import "../mustache/ast/in-tag.pegjs" as inTagMustache
@import "../syntax/block-params.pegjs" as blockParamsRaw
@import "../whitespace.pegjs" as _
@@ -29,7 +29,7 @@ htmlStart
// @TODO / coercion
componentTag
- = '%' _ s:tagString
+ = '%' _ s:glimmerTagString
{
return s;
}
diff --git a/tests/integration/glimmer/blocks-test.js b/tests/integration/glimmer/blocks-test.js
index 8da915e..2e32fde 100644
--- a/tests/integration/glimmer/blocks-test.js
+++ b/tests/integration/glimmer/blocks-test.js
@@ -20,7 +20,7 @@ module('glimmer: blocks', function (hooks) {
assert.compilesTo(emblem,
'{{comp.name}}');
- });
+ });
test('recursive nesting part 2', function (assert) {
const emblem = w(
@@ -33,4 +33,15 @@ module('glimmer: blocks', function (hooks) {
assert.compilesTo(emblem, 'Hello
');
});
+
+ test("block params with nested comp", function (assert) {
+ const emblem = w(
+ "%MyComponent @value=foo as |comp1 @comp2|",
+ " %comp.name @value1=foo"
+ );
+
+ assert.compilesTo(emblem,
+ '');
+ });
+
});