diff --git a/CHANGELOG.unreleased.md b/CHANGELOG.unreleased.md
index 6c7a41e7ac29..2e52cba94163 100644
--- a/CHANGELOG.unreleased.md
+++ b/CHANGELOG.unreleased.md
@@ -146,8 +146,31 @@ Previously, Prettier would sometimes ignore whitespace when formatting comments.
```
+### Handlebars: Improve comment formatting ([#6234] by [@gavinjoyce])
+
+Previously, Prettier would incorrectly decode HTML entiites.
+
+
+```hbs
+// Input
+
+ Some escaped characters: < > &
+
+
+// Output (Prettier stable)
+
+ Some escaped characters: < > &
+
+
+// Output (Prettier master)
+
+ Some escaped characters: < > &
+
+```
+
[#6209]: https://github.com/prettier/prettier/pull/6209
[#6186]: https://github.com/prettier/prettier/pull/6186
[#6186]: https://github.com/prettier/prettier/pull/6206
+[#6234]: https://github.com/prettier/prettier/pull/6234
[@duailibe]: https://github.com/duailibe
[@gavinjoyce]: https://github.com/gavinjoyce
diff --git a/package.json b/package.json
index dcc40033593d..09c807eb4565 100644
--- a/package.json
+++ b/package.json
@@ -17,7 +17,7 @@
"@angular/compiler": "7.2.9",
"@babel/code-frame": "7.0.0",
"@babel/parser": "7.2.0",
- "@glimmer/syntax": "0.39.3",
+ "@glimmer/syntax": "0.41.0",
"@iarna/toml": "2.2.3",
"@typescript-eslint/typescript-estree": "1.10.2",
"angular-estree-parser": "1.1.5",
diff --git a/src/language-handlebars/parser-glimmer.js b/src/language-handlebars/parser-glimmer.js
index a9b13b3bbbc8..3c4568b2f036 100644
--- a/src/language-handlebars/parser-glimmer.js
+++ b/src/language-handlebars/parser-glimmer.js
@@ -8,7 +8,8 @@ function parse(text) {
return glimmer(text, {
plugins: {
ast: []
- }
+ },
+ mode: "codemod"
});
/* istanbul ignore next */
} catch (error) {
diff --git a/src/language-handlebars/printer-glimmer.js b/src/language-handlebars/printer-glimmer.js
index a35c683ac4c3..de07efce873c 100644
--- a/src/language-handlebars/printer-glimmer.js
+++ b/src/language-handlebars/printer-glimmer.js
@@ -8,7 +8,8 @@ const {
line,
group,
indent,
- ifBreak
+ ifBreak,
+ fill
} = require("../doc").builders;
// http://w3c.github.io/html/single-page.html#void-elements
@@ -29,267 +30,119 @@ const voidTags = [
"wbr"
];
-// Formatter based on @glimmerjs/syntax's built-in test formatter:
-// https://github.com/glimmerjs/glimmer-vm/blob/master/packages/%40glimmer/syntax/lib/generation/print.ts
-
-function printChildren(path, options, print) {
- return concat(
- path.map((childPath, childIndex) => {
- const childNode = path.getValue();
- const isFirstNode = childIndex === 0;
- const isLastNode =
- childIndex == path.getParentNode(0).children.length - 1;
- const isLastNodeInMultiNodeList = isLastNode && !isFirstNode;
- const isWhitespace = isWhitespaceNode(childNode);
-
- if (isWhitespace && isLastNodeInMultiNodeList) {
- return concat([print(childPath, options, print)]);
- } else if (
- isFirstNode ||
- isPreviousNodeOfSomeType(childPath, [
- "ElementNode",
- "CommentStatement",
- "MustacheCommentStatement",
- "BlockStatement"
- ])
- ) {
- return concat([softline, print(childPath, options, print)]);
- }
- return concat([print(childPath, options, print)]);
- }, "children")
- );
-}
-
function print(path, options, print) {
- const n = path.getValue();
-
- /* istanbul ignore if*/
- if (!n) {
- return "";
- }
+ const node = path.getValue();
- switch (n.type) {
+ switch (node.type) {
case "Block":
case "Program":
case "Template": {
- return group(
- join(softline, path.map(print, "body").filter(text => text !== ""))
- );
+ return concat([printChildren(path, options, print, "body"), hardline]);
}
case "ElementNode": {
- const tagFirstChar = n.tag[0];
- const isLocal = n.tag.indexOf(".") !== -1;
- const isGlimmerComponent =
- tagFirstChar.toUpperCase() === tagFirstChar || isLocal;
- const hasChildren = n.children.length > 0;
- const isVoid =
- (isGlimmerComponent && !hasChildren) || voidTags.indexOf(n.tag) !== -1;
- const closeTagForNoBreak = isVoid ? concat([" />", softline]) : ">";
- const closeTagForBreak = isVoid ? "/>" : ">";
- const getParams = (path, print) =>
- indent(
- concat([
- n.attributes.length ? line : "",
- join(line, path.map(print, "attributes")),
-
- n.modifiers.length ? line : "",
- join(line, path.map(print, "modifiers")),
+ const isVoid = voidTags.includes(node.tag);
+ const lineType = hardline;
- n.comments.length ? line : "",
- join(line, path.map(print, "comments"))
+ const getParams = (path, print) => {
+ return indent(
+ concat([
+ node.attributes.length ? line : "",
+ join(line, path.map(print, "attributes"))
])
);
+ };
- return concat([
- group(
- concat([
- "<",
- n.tag,
- getParams(path, print),
- n.blockParams.length ? ` as |${n.blockParams.join(" ")}|` : "",
- ifBreak(softline, ""),
- ifBreak(closeTagForBreak, closeTagForNoBreak)
- ])
- ),
- group(
- concat([
- indent(printChildren(path, options, print)),
- ifBreak(hasChildren ? hardline : "", ""),
- !isVoid ? concat(["", n.tag, ">"]) : ""
- ])
- )
- ]);
- }
- case "BlockStatement": {
- const pp = path.getParentNode(1);
- const isElseIf =
- pp &&
- pp.inverse &&
- pp.inverse.body.length === 1 &&
- pp.inverse.body[0] === n &&
- pp.inverse.body[0].path.parts[0] === "if";
- const hasElseIf =
- n.inverse &&
- n.inverse.body.length === 1 &&
- n.inverse.body[0].type === "BlockStatement" &&
- n.inverse.body[0].path.parts[0] === "if";
- const indentElse = hasElseIf ? a => a : indent;
- if (n.inverse) {
- return concat([
- isElseIf
- ? concat(["{{else ", printPathParams(path, print), "}}"])
- : printOpenBlock(path, print),
- indent(concat([hardline, path.call(print, "program")])),
- n.inverse && !hasElseIf ? concat([hardline, "{{else}}"]) : "",
- n.inverse
- ? indentElse(concat([hardline, path.call(print, "inverse")]))
- : "",
- isElseIf ? "" : concat([hardline, printCloseBlock(path, print)])
- ]);
- } else if (isElseIf) {
+ const params = getParams(path, print);
+
+ if (isVoid) {
+ return group(concat(["<", node.tag, params, " />"]));
+ } else {
return concat([
- concat(["{{else ", printPathParams(path, print), "}}"]),
- indent(concat([hardline, path.call(print, "program")]))
+ group(concat(["<", node.tag, params, ">"])),
+ group(
+ concat([
+ indent(concat([lineType, printChildren(path, options, print)])),
+ lineType,
+ concat(["", node.tag, ">"])
+ ])
+ )
]);
}
-
- const hasNonWhitespaceChildren = n.program.body.some(
- n => !isWhitespaceNode(n)
- );
- return concat([
- printOpenBlock(path, print),
- group(
- concat([
- indent(concat([softline, path.call(print, "program")])),
- hasNonWhitespaceChildren ? hardline : softline,
- printCloseBlock(path, print)
- ])
- )
- ]);
}
- case "ElementModifierStatement":
+ case "BlockStatement": {
+ return "[BlockStatement]";
+ }
+ // case "ElementModifierStatement":
case "MustacheStatement": {
- const pp = path.getParentNode(1);
- const isConcat = pp && pp.type === "ConcatStatement";
return group(
concat([
- n.escaped === false ? "{{{" : "{{",
- printPathParams(path, print),
- isConcat ? "" : softline,
- n.escaped === false ? "}}}" : "}}"
+ node.escaped === false ? "{{{" : "{{",
+ path.call(print, "path"),
+ softline,
+ node.escaped === false ? "}}}" : "}}"
])
);
}
case "SubExpression": {
- const params = getParams(path, print);
- const printedParams =
- params.length > 0
- ? indent(concat([line, group(join(line, params))]))
- : "";
- return group(
- concat(["(", printPath(path, print), printedParams, softline, ")"])
- );
+ return "[SubExpression]";
}
case "AttrNode": {
- const isText = n.value.type === "TextNode";
- if (isText && n.value.loc.start.column === n.value.loc.end.column) {
- return concat([n.name]);
+ const isText = node.value.type === "TextNode";
+ if (isText && node.value.loc.start.column === node.value.loc.end.column) {
+ return concat([node.name]);
}
const quote = isText ? '"' : "";
- return concat([n.name, "=", quote, path.call(print, "value"), quote]);
+ return concat([node.name, "=", quote, path.call(print, "value"), quote]);
}
case "ConcatStatement": {
- return concat([
- '"',
- group(
- indent(
- join(
- softline,
- path
- .map(partPath => print(partPath), "parts")
- .filter(a => a !== "")
- )
- )
- ),
- '"'
- ]);
+ return "[ConcatStatement]";
}
case "Hash": {
- return concat([join(line, path.map(print, "pairs"))]);
+ return "[Hash]";
}
case "HashPair": {
- return concat([n.key, "=", path.call(print, "value")]);
+ return "[HashPair]";
}
case "TextNode": {
- const isWhitespaceOnly = !/\S/.test(n.chars);
-
- if (
- isWhitespaceOnly &&
- isPreviousNodeOfSomeType(path, ["MustacheStatement", "TextNode"])
- ) {
- return " ";
- }
+ let parts = splitByWhitespaceAndTrim(node.chars);
+ parts = injectLines(parts);
- let leadingSpace = "";
- let trailingSpace = "";
+ const startsWithWhiteSpace = /^\s/.test(node.chars);
+ const endsWithWhiteSpace = /\s$/.test(node.chars);
- if (isNextNodeOfType(path, "MustacheStatement")) {
- trailingSpace = " ";
+ if (startsWithWhiteSpace) {
+ parts.unshift(line);
}
- // preserve a space inside of an attribute node where whitespace present, when next to mustache statement.
- const inAttrNode = path.stack.indexOf("attributes") >= 0;
-
- if (inAttrNode) {
- const parentNode = path.getParentNode(0);
- const isConcat = parentNode.type === "ConcatStatement";
- if (isConcat) {
- const parts = parentNode.parts;
- const partIndex = parts.indexOf(n);
- if (partIndex > 0) {
- const partType = parts[partIndex - 1].type;
- const isMustache = partType === "MustacheStatement";
- if (isMustache) {
- leadingSpace = " ";
- }
- }
- if (partIndex < parts.length - 1) {
- const partType = parts[partIndex + 1].type;
- const isMustache = partType === "MustacheStatement";
- if (isMustache) {
- trailingSpace = " ";
- }
- }
- }
+ if (endsWithWhiteSpace) {
+ parts.push(line);
}
- return n.chars
- .replace(/^\s+/, leadingSpace)
- .replace(/\s+$/, trailingSpace);
+
+ return group(fill(parts));
}
case "MustacheCommentStatement": {
- const dashes = n.value.indexOf("}}") > -1 ? "--" : "";
- return concat(["{{!", dashes, n.value, dashes, "}}"]);
+ return "[MustacheCommentStatement]";
}
case "PathExpression": {
- return n.original;
+ return node.original;
}
case "BooleanLiteral": {
- return String(n.value);
+ return "[BooleanLiteral]";
}
case "CommentStatement": {
- return concat([""]);
+ return "[CommentStatement]";
}
case "StringLiteral": {
- return printStringLiteral(n.value, options);
+ return "[StringLiteral]";
}
case "NumberLiteral": {
- return String(n.value);
+ return "[NumberLiteral]";
}
case "UndefinedLiteral": {
- return "undefined";
+ return "[UndefinedLiteral]";
}
case "NullLiteral": {
- return "null";
+ return "[NullLiteral]";
}
/* istanbul ignore next */
@@ -298,158 +151,36 @@ function print(path, options, print) {
}
}
-/**
- * Prints a string literal with the correct surrounding quotes based on
- * `options.singleQuote` and the number of escaped quotes contained in
- * the string literal. This function is the glimmer equivalent of `printString`
- * in `common/util`, but has differences because of the way escaped characters
- * are treated in hbs string literals.
- * @param {string} stringLiteral - the string literal value
- * @param {object} options - the prettier options object
- */
-function printStringLiteral(stringLiteral, options) {
- const double = { quote: '"', regex: /"/g };
- const single = { quote: "'", regex: /'/g };
-
- const preferred = options.singleQuote ? single : double;
- const alternate = preferred === single ? double : single;
-
- let shouldUseAlternateQuote = false;
-
- // If `stringLiteral` contains at least one of the quote preferred for
- // enclosing the string, we might want to enclose with the alternate quote
- // instead, to minimize the number of escaped quotes.
- if (
- stringLiteral.includes(preferred.quote) ||
- stringLiteral.includes(alternate.quote)
- ) {
- const numPreferredQuotes = (stringLiteral.match(preferred.regex) || [])
- .length;
- const numAlternateQuotes = (stringLiteral.match(alternate.regex) || [])
- .length;
-
- shouldUseAlternateQuote = numPreferredQuotes > numAlternateQuotes;
- }
-
- const enclosingQuote = shouldUseAlternateQuote ? alternate : preferred;
- const escapedStringLiteral = stringLiteral.replace(
- enclosingQuote.regex,
- `\\${enclosingQuote.quote}`
- );
-
- return `${enclosingQuote.quote}${escapedStringLiteral}${enclosingQuote.quote}`;
-}
-
-function printPath(path, print) {
- return path.call(print, "path");
-}
-
-function getParams(path, print) {
- const node = path.getValue();
- let parts = [];
-
- if (node.params.length > 0) {
- parts = parts.concat(path.map(print, "params"));
- }
-
- if (node.hash && node.hash.pairs.length > 0) {
- parts.push(path.call(print, "hash"));
- }
- return parts;
-}
-
-function printPathParams(path, print) {
- let parts = [];
-
- parts.push(printPath(path, print));
- parts = parts.concat(getParams(path, print));
-
- return indent(group(join(line, parts)));
-}
-
-function printBlockParams(path) {
- const block = path.getValue();
- if (!block.program || !block.program.blockParams.length) {
- return "";
- }
- return concat([" as |", block.program.blockParams.join(" "), "|"]);
-}
-
-function printOpenBlock(path, print) {
+function printChildren(path, options, print, key = "children") {
return group(
- concat([
- "{{#",
- printPathParams(path, print),
- printBlockParams(path),
+ join(
softline,
- "}}"
- ])
+ path.map((childPath, _childIndex) => {
+ return print(childPath, options, print);
+ }, key)
+ )
);
}
-function printCloseBlock(path, print) {
- return concat(["{{/", path.call(print, "path"), "}}"]);
-}
-
-function isWhitespaceNode(node) {
- return node.type === "TextNode" && !/\S/.test(node.chars);
+function splitByWhitespaceAndTrim(text) {
+ return text
+ .replace(/^\s+/, "")
+ .replace(/\s+$/, "")
+ .split(/\s+/);
}
-function getPreviousNode(path) {
- const node = path.getValue();
- const parentNode = path.getParentNode(0);
-
- const children = parentNode.children;
- if (children) {
- const nodeIndex = children.indexOf(node);
- if (nodeIndex > 0) {
- const previousNode = children[nodeIndex - 1];
- return previousNode;
+function injectLines(items) {
+ let newItems = [];
+ for (let i = 0; i < items.length; i++) {
+ if (i !== 0) {
+ newItems.push(line);
}
+ newItems.push(items[i]);
}
-}
-function getNextNode(path) {
- const node = path.getValue();
- const parentNode = path.getParentNode(0);
-
- const children = parentNode.children;
- if (children) {
- const nodeIndex = children.indexOf(node);
- if (nodeIndex < children.length) {
- const nextNode = children[nodeIndex + 1];
- return nextNode;
- }
- }
-}
-
-function isPreviousNodeOfSomeType(path, types) {
- const previousNode = getPreviousNode(path);
-
- if (previousNode) {
- return types.some(type => previousNode.type === type);
- }
- return false;
-}
-
-function isNextNodeOfType(path, type) {
- const nextNode = getNextNode(path);
- return nextNode && nextNode.type === type;
-}
-
-function clean(ast, newObj) {
- delete newObj.loc;
-
- // (Glimmer/HTML) ignore TextNode whitespace
- if (ast.type === "TextNode") {
- if (ast.chars.replace(/\s+/, "") === "") {
- return null;
- }
- newObj.chars = ast.chars.replace(/^\s+/, "").replace(/\s+$/, "");
- }
+ return newItems;
}
module.exports = {
- print,
- massageAstNode: clean
+ print
};
diff --git a/tests/glimmer/__snapshots__/jsfmt.spec.js.snap b/tests/glimmer/__snapshots__/jsfmt.spec.js.snap
index 0d8fe9aac35a..84986d90ee56 100644
--- a/tests/glimmer/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/glimmer/__snapshots__/jsfmt.spec.js.snap
@@ -1,1629 +1,91 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`block-statement.hbs 1`] = `
+exports[`curleys.hbs 1`] = `
====================================options=====================================
parsers: ["glimmer"]
printWidth: 80
| printWidth
=====================================input======================================
-{{#block param hashKey=hashValue as |blockParam|}}
- Hello
-{{/block}}
-
-{{#block almost80CharacterLongPositionalParamThatIsFirstAlmost80Chars helloWorldParam key=here}}
-{{/block}}
-
-{{#block param param param param param param param hashKey=hashValue as |blockParam|}}
- Hello
-{{/block}}
-
-{{#block param param param param param param param hashKey=HashValue hashKey=hashValue}}
- Hello
-{{/block}}
-
-{{#block param param param param param param param param param param param param param}}
- Hello
-{{/block}}
-
-{{#block hashKey=HashValue hashKey=hashValue hashKey=HashValue hashKey=hashValue hashKey=HashValue}}
- Hello
-{{/block}}
-
-{{#block}}
- {{#block}}
- hello
- {{/block}}
-{{/block}}
-
-{{#block}}
- {{#block param}}
- hello
- {{/block}}
-{{/block}}
-
-{{#block param}}
- {{#block param}}
- hello
- {{/block}}
-{{/block}}
-
-{{#block}}
- hello
-{{/block}}
-
-
- {{firstName}}
-
-
-
- {{firstName}} {{lastName}}
-
-
-=====================================output=====================================
-{{#block param hashKey=hashValue as |blockParam|}}
- Hello
-{{/block}}
-{{#block
- almost80CharacterLongPositionalParamThatIsFirstAlmost80Chars
- helloWorldParam
- key=here
-}}{{/block}}
-{{#block
- param
- param
- param
- param
- param
- param
- param
- hashKey=hashValue as |blockParam|
-}}
- Hello
-{{/block}}
-{{#block
- param
- param
- param
- param
- param
- param
- param
- hashKey=HashValue
- hashKey=hashValue
-}}
- Hello
-{{/block}}
-{{#block
- param
- param
- param
- param
- param
- param
- param
- param
- param
- param
- param
- param
- param
-}}
- Hello
-{{/block}}
-{{#block
- hashKey=HashValue
- hashKey=hashValue
- hashKey=HashValue
- hashKey=hashValue
- hashKey=HashValue
-}}
- Hello
-{{/block}}
-{{#block}}
- {{#block}}
- hello
- {{/block}}
-{{/block}}
-{{#block}}
- {{#block param}}
- hello
- {{/block}}
-{{/block}}
-{{#block param}}
- {{#block param}}
- hello
- {{/block}}
-{{/block}}
-{{#block}}
- hello
-{{/block}}
-
- {{firstName}}
-
-
- {{firstName}} {{lastName}}
-
-================================================================================
-`;
-
-exports[`block-statement.hbs 2`] = `
-====================================options=====================================
-parsers: ["glimmer"]
-printWidth: 80
-singleQuote: true
- | printWidth
-=====================================input======================================
-{{#block param hashKey=hashValue as |blockParam|}}
- Hello
-{{/block}}
-
-{{#block almost80CharacterLongPositionalParamThatIsFirstAlmost80Chars helloWorldParam key=here}}
-{{/block}}
-
-{{#block param param param param param param param hashKey=hashValue as |blockParam|}}
- Hello
-{{/block}}
-
-{{#block param param param param param param param hashKey=HashValue hashKey=hashValue}}
- Hello
-{{/block}}
-
-{{#block param param param param param param param param param param param param param}}
- Hello
-{{/block}}
-
-{{#block hashKey=HashValue hashKey=hashValue hashKey=HashValue hashKey=hashValue hashKey=HashValue}}
- Hello
-{{/block}}
-
-{{#block}}
- {{#block}}
- hello
- {{/block}}
-{{/block}}
-
-{{#block}}
- {{#block param}}
- hello
- {{/block}}
-{{/block}}
-
-{{#block param}}
- {{#block param}}
- hello
- {{/block}}
-{{/block}}
-
-{{#block}}
- hello
-{{/block}}
-
-
- {{firstName}}
-
-
-
- {{firstName}} {{lastName}}
-
-
-=====================================output=====================================
-{{#block param hashKey=hashValue as |blockParam|}}
- Hello
-{{/block}}
-{{#block
- almost80CharacterLongPositionalParamThatIsFirstAlmost80Chars
- helloWorldParam
- key=here
-}}{{/block}}
-{{#block
- param
- param
- param
- param
- param
- param
- param
- hashKey=hashValue as |blockParam|
-}}
- Hello
-{{/block}}
-{{#block
- param
- param
- param
- param
- param
- param
- param
- hashKey=HashValue
- hashKey=hashValue
-}}
- Hello
-{{/block}}
-{{#block
- param
- param
- param
- param
- param
- param
- param
- param
- param
- param
- param
- param
- param
-}}
- Hello
-{{/block}}
-{{#block
- hashKey=HashValue
- hashKey=hashValue
- hashKey=HashValue
- hashKey=hashValue
- hashKey=HashValue
-}}
- Hello
-{{/block}}
-{{#block}}
- {{#block}}
- hello
- {{/block}}
-{{/block}}
-{{#block}}
- {{#block param}}
- hello
- {{/block}}
-{{/block}}
-{{#block param}}
- {{#block param}}
- hello
- {{/block}}
-{{/block}}
-{{#block}}
- hello
-{{/block}}
-
- {{firstName}}
-
-
- {{firstName}} {{lastName}}
-
-================================================================================
-`;
-
-exports[`comment.hbs 1`] = `
-====================================options=====================================
-parsers: ["glimmer"]
-printWidth: 80
- | printWidth
-=====================================input======================================
-
- {{! Foo }}
- {{#if @foo}}
- Foo
- {{/if}}
-
- {{! Bar }}
- {{#if @bar}}
- Bar
- {{/if}}
-
-=====================================output=====================================
-
- {{! Foo }}
- {{#if @foo}}
- Foo
- {{/if}}
- {{! Bar }}
- {{#if @bar}}
- Bar
- {{/if}}
-
-================================================================================
-`;
-
-exports[`comment.hbs 2`] = `
-====================================options=====================================
-parsers: ["glimmer"]
-printWidth: 80
-singleQuote: true
- | printWidth
-=====================================input======================================
-
- {{! Foo }}
- {{#if @foo}}
- Foo
- {{/if}}
-
- {{! Bar }}
- {{#if @bar}}
- Bar
- {{/if}}
-
-=====================================output=====================================
-
- {{! Foo }}
- {{#if @foo}}
- Foo
- {{/if}}
- {{! Bar }}
- {{#if @bar}}
- Bar
- {{/if}}
-
-================================================================================
-`;
-
-exports[`component.hbs 1`] = `
-====================================options=====================================
-parsers: ["glimmer"]
-printWidth: 80
- | printWidth
-=====================================input======================================
-
-{{@greeting}}, {{@name}}!
-
-
-
-
-
-
-
-
-
-Next
-
-
-
-
-
-
-
-Hello
-
-=====================================output=====================================
-
-{{@greeting}}
-,
-{{@name}}
-!
-
-
-
-
-
-
- Next
-
-
-
-
-
- Hello
-
-================================================================================
-`;
-
-exports[`component.hbs 2`] = `
-====================================options=====================================
-parsers: ["glimmer"]
-printWidth: 80
-singleQuote: true
- | printWidth
-=====================================input======================================
-
-{{@greeting}}, {{@name}}!
-
-
-
-
-
-
-
-
-
-Next
-
-
-
-
-
-
-
-Hello
-
+hi {{alex}}, {{ben}} and {{sophie}}
=====================================output=====================================
-
-{{@greeting}}
-,
-{{@name}}
-!
-
-
-
-
-
-
- Next
-
-
-
-
-
- Hello
-
-================================================================================
-`;
-
-exports[`concat-statement.hbs 1`] = `
-====================================options=====================================
-parsers: ["glimmer"]
-printWidth: 80
- | printWidth
-=====================================input======================================
-
- Hello
-
-
-
- Hello
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-=====================================output=====================================
-
- Hello
-
-
- Hello
-
-
-
-
-
-
-
-
-
-
-
-
================================================================================
`;
-exports[`concat-statement.hbs 2`] = `
+exports[`simple-elements.hbs 1`] = `
====================================options=====================================
parsers: ["glimmer"]
printWidth: 80
-singleQuote: true
| printWidth
=====================================input======================================
-
- Hello
-
-
-
- Hello
-
+aaa
-
-
-
-
-
-
-
-
-
-
-
-
-=====================================output=====================================
-
- Hello
-
-bar
- {{if goodbye true}}"
->
- Hello
-
-
-
-
-
-
-
-
-
-
-
-
-================================================================================
-`;
-
-exports[`curly.hbs 1`] = `
-====================================options=====================================
-parsers: ["glimmer"]
-printWidth: 80
- | printWidth
-=====================================input======================================
-Your username is @{{name}}
-Hi {{firstName}} {{lastName}}
+
=====================================output=====================================
- Your username is @{{name}}
+ aaa
-
- Hi {{firstName}} {{lastName}}
-
-================================================================================
-`;
-exports[`curly.hbs 2`] = `
-====================================options=====================================
-parsers: ["glimmer"]
-printWidth: 80
-singleQuote: true
- | printWidth
-=====================================input======================================
-Your username is @{{name}}
-Hi {{firstName}} {{lastName}}
-=====================================output=====================================
-
- Your username is @{{name}}
-
- Hi {{firstName}} {{lastName}}
+ aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii jjjj kkkk llll mmmm nnnn oooo
+ pppp qqqq rrrr ssss tttt
-================================================================================
-`;
-
-exports[`element-modifier-statement.hbs 1`] = `
-====================================options=====================================
-parsers: ["glimmer"]
-printWidth: 80
- | printWidth
-=====================================input======================================
-
- Hello
-
-
-
- Hello
-
-
-
- Hello
-
-
-
- Hello
-
-
-=====================================output=====================================
-
- Hello
-
-
- Hello
-
-
- Hello
-
-
- Hello
-
-================================================================================
-`;
-exports[`element-modifier-statement.hbs 2`] = `
-====================================options=====================================
-parsers: ["glimmer"]
-printWidth: 80
-singleQuote: true
- | printWidth
-=====================================input======================================
-
- Hello
-
-
-
- Hello
-
-
-
- Hello
-
-
-
- Hello
-
-
-=====================================output=====================================
-
- Hello
-
-
- Hello
-
-
- Hello
-
-
- Hello
-
-================================================================================
-`;
-
-exports[`element-node.hbs 1`] = `
-====================================options=====================================
-parsers: ["glimmer"]
-printWidth: 80
- | printWidth
-=====================================input======================================
-
- Hello
-
-
-
- Hello
-
-
-
- hi
-
-
-
- A long enough string to trigger a line break that would prevent wrapping.
-
-
-
- A long enough string to trigger a line break that would prevent wrapping more.
-
-
-
- A long enough string to trigger a line break that would prevent wrapping more and more.
-
-
-
- {{#block}}
- {{hello}}
- {{/block}}
-
-
-
- {{hello}}
-
-
-
-
-
-=====================================output=====================================
-
- Hello
-
-
- Hello
-
-
- hi
-
-
- A long enough string to trigger a line break that would prevent wrapping.
-
-
- A long enough string to trigger a line break that would prevent wrapping more.
-
-
- A long enough string to trigger a line break that would prevent wrapping more and more.
-
-
- {{#block}}
- {{hello}}
- {{/block}}
-
-
- {{hello}}
-
-
-
-================================================================================
-`;
-
-exports[`element-node.hbs 2`] = `
-====================================options=====================================
-parsers: ["glimmer"]
-printWidth: 80
-singleQuote: true
- | printWidth
-=====================================input======================================
-
- Hello
-
-
-
- Hello
-
-
-
- hi
-
-
-
- A long enough string to trigger a line break that would prevent wrapping.
-
-
-
- A long enough string to trigger a line break that would prevent wrapping more.
-
-
-
- A long enough string to trigger a line break that would prevent wrapping more and more.
-
-
-
- {{#block}}
- {{hello}}
- {{/block}}
-
-
-
- {{hello}}
-
-
-
-
-
-=====================================output=====================================
-
- Hello
-
-
- Hello
-
-
- hi
-
-
- A long enough string to trigger a line break that would prevent wrapping.
-
-
- A long enough string to trigger a line break that would prevent wrapping more.
-
-
- A long enough string to trigger a line break that would prevent wrapping more and more.
-
-
- {{#block}}
- {{hello}}
- {{/block}}
-
- {{hello}}
+ 111
+
+ 222
+
-
-
-================================================================================
-`;
-
-exports[`else-if.hbs 1`] = `
-====================================options=====================================
-parsers: ["glimmer"]
-printWidth: 80
- | printWidth
-=====================================input======================================
-{{#if a}}
- b
-{{else if c}}
- d
-{{else}}
- e
-{{/if}}
-
-{{#if a}}
- b
-{{else if c}}
- d
-{{else}}
- hello
- {{#if f}}
- g
- {{/if}}
- e
-{{/if}}
-{{#if a}}
- b
-{{else if c}}
- d
-{{else if e}}
- f
-{{else if g}}
- h
-{{else}}
- j
-{{/if}}
-
-
- {{#if a}}
- b
- {{else if c}}
- d
- {{else}}
- e
- {{/if}}
-
+
+
-
-
- {{#if a}}
- b
- {{else if c}}
- d
- {{else}}
- e
- {{/if}}
-
-
-
-{{#if a}}
- b
-{{else}}
- {{#each c as |d|}}
- e
- {{/each}}
-{{/if}}
-
-{{#if a}}
- {{#if b}}
- ab
- {{else if c}}
- ac
- {{/if}}
-{{/if}}
-
-{{#if a}}
- a
- b
- c
-{{else}}
- {{#if c}}
- a
- b
- c
- {{/if}}
- a
- b
- c
-{{/if}}
-
-=====================================output=====================================
-{{#if a}}
- b
-{{else if c}}
- d
-{{else}}
- e
-{{/if}}
-{{#if a}}
- b
-{{else if c}}
- d
-{{else}}
- hello
- {{#if f}}
- g
- {{/if}}
- e
-{{/if}}
-{{#if a}}
- b
-{{else if c}}
- d
-{{else if e}}
- f
-{{else if g}}
- h
-{{else}}
- j
-{{/if}}
-
- {{#if a}}
- b
- {{else if c}}
- d
- {{else}}
- e
- {{/if}}
-
-
-
- {{#if a}}
- b
- {{else if c}}
- d
- {{else}}
- e
- {{/if}}
-
-
-{{#if a}}
- b
-{{else}}
- {{#each c as |d|}}
- e
- {{/each}}
-{{/if}}
-{{#if a}}
- {{#if b}}
- ab
- {{else if c}}
- ac
- {{/if}}
-{{/if}}
-{{#if a}}
- a
-
- b
-
- c
-{{else}}
- {{#if c}}
- a
- b
-
- c
-
- {{/if}}
-
- a
-
- b
- c
-{{/if}}
-================================================================================
-`;
-
-exports[`else-if.hbs 2`] = `
-====================================options=====================================
-parsers: ["glimmer"]
-printWidth: 80
-singleQuote: true
- | printWidth
-=====================================input======================================
-{{#if a}}
- b
-{{else if c}}
- d
-{{else}}
- e
-{{/if}}
-
-{{#if a}}
- b
-{{else if c}}
- d
-{{else}}
- hello
- {{#if f}}
- g
- {{/if}}
- e
-{{/if}}
-
-{{#if a}}
- b
-{{else if c}}
- d
-{{else if e}}
- f
-{{else if g}}
- h
-{{else}}
- j
-{{/if}}
-
-
- {{#if a}}
- b
- {{else if c}}
- d
- {{else}}
- e
- {{/if}}
-
-
-
-
- {{#if a}}
- b
- {{else if c}}
- d
- {{else}}
- e
- {{/if}}
-
-
-
-{{#if a}}
- b
-{{else}}
- {{#each c as |d|}}
- e
- {{/each}}
-{{/if}}
-
-{{#if a}}
- {{#if b}}
- ab
- {{else if c}}
- ac
- {{/if}}
-{{/if}}
-
-{{#if a}}
- a
- b
- c
-{{else}}
- {{#if c}}
- a
- b
- c
- {{/if}}
- a
- b
- c
-{{/if}}
-
-=====================================output=====================================
-{{#if a}}
- b
-{{else if c}}
- d
-{{else}}
- e
-{{/if}}
-{{#if a}}
- b
-{{else if c}}
- d
-{{else}}
- hello
- {{#if f}}
- g
- {{/if}}
- e
-{{/if}}
-{{#if a}}
- b
-{{else if c}}
- d
-{{else if e}}
- f
-{{else if g}}
- h
-{{else}}
- j
-{{/if}}
-
- {{#if a}}
- b
- {{else if c}}
- d
- {{else}}
- e
- {{/if}}
-
-
-
- {{#if a}}
- b
- {{else if c}}
- d
- {{else}}
- e
- {{/if}}
-
-
-{{#if a}}
- b
-{{else}}
- {{#each c as |d|}}
- e
- {{/each}}
-{{/if}}
-{{#if a}}
- {{#if b}}
- ab
- {{else if c}}
- ac
- {{/if}}
-{{/if}}
-{{#if a}}
- a
-
- b
-
- c
-{{else}}
- {{#if c}}
- a
- b
-
- c
-
- {{/if}}
-
- a
-
- b
- c
-{{/if}}
-================================================================================
-`;
-
-exports[`literals.hbs 1`] = `
-====================================options=====================================
-parsers: ["glimmer"]
-printWidth: 80
- | printWidth
-=====================================input======================================
-{{mustache true}}
-{{mustache 5}}
-{{mustache undefined}}
-{{mustache null}}
-
-{{! Mustache Comment}}
-{{!-- Mustache Comment }} --}}
-
-=====================================output=====================================
-{{mustache true}}
-{{mustache 5}}
-{{mustache undefined}}
-{{mustache null}}
-
-{{! Mustache Comment}}
-{{!-- Mustache Comment }} --}}
-================================================================================
-`;
-
-exports[`literals.hbs 2`] = `
-====================================options=====================================
-parsers: ["glimmer"]
-printWidth: 80
-singleQuote: true
- | printWidth
-=====================================input======================================
-{{mustache true}}
-{{mustache 5}}
-{{mustache undefined}}
-{{mustache null}}
-
-{{! Mustache Comment}}
-{{!-- Mustache Comment }} --}}
+
+ bar
+
-=====================================output=====================================
-{{mustache true}}
-{{mustache 5}}
-{{mustache undefined}}
-{{mustache null}}
-
-{{! Mustache Comment}}
-{{!-- Mustache Comment }} --}}
-================================================================================
-`;
+
-exports[`loop.hbs 1`] = `
-====================================options=====================================
-parsers: ["glimmer"]
-printWidth: 80
- | printWidth
-=====================================input======================================
-
- {{#each speakers key="@index" as |speaker|}}
- {{speaker}}
- {{/each}}
-
-
-=====================================output=====================================
-
- {{#each speakers key="@index" as |speaker|}}
-
- {{speaker}}
-
- {{/each}}
-
================================================================================
`;
-exports[`loop.hbs 2`] = `
+exports[`simple-text.hbs 1`] = `
====================================options=====================================
parsers: ["glimmer"]
printWidth: 80
-singleQuote: true
| printWidth
=====================================input======================================
-
- {{#each speakers key="@index" as |speaker|}}
- {{speaker}}
- {{/each}}
-
-
-=====================================output=====================================
-
- {{#each speakers key='@index' as |speaker|}}
-
- {{speaker}}
-
- {{/each}}
-
-================================================================================
-`;
+hello
-exports[`string-literals.hbs 1`] = `
-====================================options=====================================
-parsers: ["glimmer"]
-printWidth: 80
- | printWidth
-=====================================input======================================
-{{"abc"}}
-{{'abc'}}
-{{" \\" \\" ' more double quote than single quote "}}
-{{' \\' \\' " more single quote than double quote '}}
-{{' " \\' \\" \\\\ '}}
-{{" \\" \\' ' \\\\ "}}
+a b c
+1 2 3
=====================================output=====================================
-{{"abc"}}
-{{"abc"}}
-{{' " " \\' more double quote than single quote '}}
-{{" ' ' \\" more single quote than double quote "}}
-{{' " \\' \\" \\\\ '}}
-{{" \\" \\' ' \\\\ "}}
-================================================================================
-`;
-
-exports[`string-literals.hbs 2`] = `
-====================================options=====================================
-parsers: ["glimmer"]
-printWidth: 80
-singleQuote: true
- | printWidth
-=====================================input======================================
-{{"abc"}}
-{{'abc'}}
-{{" \\" \\" ' more double quote than single quote "}}
-{{' \\' \\' " more single quote than double quote '}}
-{{' " \\' \\" \\\\ '}}
-{{" \\" \\' ' \\\\ "}}
+hello a b c 1 2 3
-=====================================output=====================================
-{{'abc'}}
-{{'abc'}}
-{{' " " \\' more double quote than single quote '}}
-{{" ' ' \\" more single quote than double quote "}}
-{{' " \\' \\" \\\\ '}}
-{{" \\" \\' ' \\\\ "}}
================================================================================
`;
-exports[`sub-expressions.hbs 1`] = `
+exports[`simple-wrapping-text.hbs 1`] = `
====================================options=====================================
parsers: ["glimmer"]
printWidth: 80
| printWidth
=====================================input======================================
-
-
-{{#block
- (concat
- (service)
- (helper param hashPair=Value)
- (largeNameHelper param param param param hashPair=value hashPair=value hashPair=Value)
- hashPair=(helper param param param param param param hashPair=value hashPair=value hashPair=value)
- hashPair=(does not need a line break due to being under 80 chars long)
- )
-}}
-
-{{/block}}
-
-{{foobar-sub-component/foobar-foo
- hook="stringLiteral"
- foo=
- (t
- (concat "stringLiteral" (get blockParam "stringLiteral") hash=hash hash=hash)
- foo=(simple-helper (hash hashKey=blockParam.foo assignParam=blockParam.bar))
- )
-}}
-
+aaaaaa bbbbbbb ccccccc dddddd eeeeee ffffff gggggg hhhhh iiiiii jjjjj kkkkkk llllll mmmmm
=====================================output=====================================
-
-{{#block
- (concat
- (service)
- (helper param hashPair=Value)
- (largeNameHelper
- param param param param hashPair=value hashPair=value hashPair=Value
- )
- hashPair=(helper
- param
- param
- param
- param
- param
- param
- hashPair=value
- hashPair=value
- hashPair=value
- )
- hashPair=(does not need a line break due to being under 80 chars long)
- )
-}}{{/block}}
-{{foobar-sub-component/foobar-foo
- hook="stringLiteral"
- foo=(t
- (concat
- "stringLiteral" (get blockParam "stringLiteral") hash=hash hash=hash
- )
- foo=(simple-helper (hash hashKey=blockParam.foo assignParam=blockParam.bar))
- )
-}}
-================================================================================
-`;
-
-exports[`sub-expressions.hbs 2`] = `
-====================================options=====================================
-parsers: ["glimmer"]
-printWidth: 80
-singleQuote: true
- | printWidth
-=====================================input======================================
-
-
-{{#block
- (concat
- (service)
- (helper param hashPair=Value)
- (largeNameHelper param param param param hashPair=value hashPair=value hashPair=Value)
- hashPair=(helper param param param param param param hashPair=value hashPair=value hashPair=value)
- hashPair=(does not need a line break due to being under 80 chars long)
- )
-}}
+aaaaaa bbbbbbb ccccccc dddddd eeeeee ffffff gggggg hhhhh iiiiii jjjjj kkkkkk
+llllll mmmmm
-{{/block}}
-
-{{foobar-sub-component/foobar-foo
- hook="stringLiteral"
- foo=
- (t
- (concat "stringLiteral" (get blockParam "stringLiteral") hash=hash hash=hash)
- foo=(simple-helper (hash hashKey=blockParam.foo assignParam=blockParam.bar))
- )
-}}
-
-=====================================output=====================================
-
-{{#block
- (concat
- (service)
- (helper param hashPair=Value)
- (largeNameHelper
- param param param param hashPair=value hashPair=value hashPair=Value
- )
- hashPair=(helper
- param
- param
- param
- param
- param
- param
- hashPair=value
- hashPair=value
- hashPair=value
- )
- hashPair=(does not need a line break due to being under 80 chars long)
- )
-}}{{/block}}
-{{foobar-sub-component/foobar-foo
- hook='stringLiteral'
- foo=(t
- (concat
- 'stringLiteral' (get blockParam 'stringLiteral') hash=hash hash=hash
- )
- foo=(simple-helper (hash hashKey=blockParam.foo assignParam=blockParam.bar))
- )
-}}
================================================================================
`;
diff --git a/tests/glimmer/block-statement.hbs b/tests/glimmer/block-statement.hbs
deleted file mode 100644
index 78b7e47d7cc5..000000000000
--- a/tests/glimmer/block-statement.hbs
+++ /dev/null
@@ -1,52 +0,0 @@
-{{#block param hashKey=hashValue as |blockParam|}}
- Hello
-{{/block}}
-
-{{#block almost80CharacterLongPositionalParamThatIsFirstAlmost80Chars helloWorldParam key=here}}
-{{/block}}
-
-{{#block param param param param param param param hashKey=hashValue as |blockParam|}}
- Hello
-{{/block}}
-
-{{#block param param param param param param param hashKey=HashValue hashKey=hashValue}}
- Hello
-{{/block}}
-
-{{#block param param param param param param param param param param param param param}}
- Hello
-{{/block}}
-
-{{#block hashKey=HashValue hashKey=hashValue hashKey=HashValue hashKey=hashValue hashKey=HashValue}}
- Hello
-{{/block}}
-
-{{#block}}
- {{#block}}
- hello
- {{/block}}
-{{/block}}
-
-{{#block}}
- {{#block param}}
- hello
- {{/block}}
-{{/block}}
-
-{{#block param}}
- {{#block param}}
- hello
- {{/block}}
-{{/block}}
-
-{{#block}}
- hello
-{{/block}}
-
-
- {{firstName}}
-
-
-
- {{firstName}} {{lastName}}
-
diff --git a/tests/glimmer/comment.hbs b/tests/glimmer/comment.hbs
deleted file mode 100644
index 8b49144e9d1f..000000000000
--- a/tests/glimmer/comment.hbs
+++ /dev/null
@@ -1,11 +0,0 @@
-
- {{! Foo }}
- {{#if @foo}}
- Foo
- {{/if}}
-
- {{! Bar }}
- {{#if @bar}}
- Bar
- {{/if}}
-
\ No newline at end of file
diff --git a/tests/glimmer/component.hbs b/tests/glimmer/component.hbs
deleted file mode 100644
index 23d4c7d18520..000000000000
--- a/tests/glimmer/component.hbs
+++ /dev/null
@@ -1,25 +0,0 @@
-
-{{@greeting}}, {{@name}}!
-
-
-
-
-
-
-
-
-
-Next
-
-
-
-
-
-
-
-Hello
diff --git a/tests/glimmer/concat-statement.hbs b/tests/glimmer/concat-statement.hbs
deleted file mode 100644
index 86c9cda72976..000000000000
--- a/tests/glimmer/concat-statement.hbs
+++ /dev/null
@@ -1,20 +0,0 @@
-
- Hello
-
-
-
- Hello
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tests/glimmer/curleys.hbs b/tests/glimmer/curleys.hbs
new file mode 100644
index 000000000000..fb9b81ecfb65
--- /dev/null
+++ b/tests/glimmer/curleys.hbs
@@ -0,0 +1 @@
+hi {{alex}}, {{ben}} and {{sophie}}
\ No newline at end of file
diff --git a/tests/glimmer/curly.hbs b/tests/glimmer/curly.hbs
deleted file mode 100644
index edeee979f226..000000000000
--- a/tests/glimmer/curly.hbs
+++ /dev/null
@@ -1,2 +0,0 @@
-Your username is @{{name}}
-Hi {{firstName}} {{lastName}}
\ No newline at end of file
diff --git a/tests/glimmer/element-modifier-statement.hbs b/tests/glimmer/element-modifier-statement.hbs
deleted file mode 100644
index a3076fe47c5e..000000000000
--- a/tests/glimmer/element-modifier-statement.hbs
+++ /dev/null
@@ -1,15 +0,0 @@
-
- Hello
-
-
-
- Hello
-
-
-
- Hello
-
-
-
- Hello
-
diff --git a/tests/glimmer/element-node.hbs b/tests/glimmer/element-node.hbs
deleted file mode 100644
index 5564c99cc004..000000000000
--- a/tests/glimmer/element-node.hbs
+++ /dev/null
@@ -1,36 +0,0 @@
-
- Hello
-
-
-
- Hello
-
-
-
- hi
-
-
-
- A long enough string to trigger a line break that would prevent wrapping.
-
-
-
- A long enough string to trigger a line break that would prevent wrapping more.
-
-
-
- A long enough string to trigger a line break that would prevent wrapping more and more.
-
-
-
- {{#block}}
- {{hello}}
- {{/block}}
-
-
-
- {{hello}}
-
-
-
-
diff --git a/tests/glimmer/else-if.hbs b/tests/glimmer/else-if.hbs
deleted file mode 100644
index 94e1fdf809ca..000000000000
--- a/tests/glimmer/else-if.hbs
+++ /dev/null
@@ -1,84 +0,0 @@
-{{#if a}}
- b
-{{else if c}}
- d
-{{else}}
- e
-{{/if}}
-
-{{#if a}}
- b
-{{else if c}}
- d
-{{else}}
- hello
- {{#if f}}
- g
- {{/if}}
- e
-{{/if}}
-
-{{#if a}}
- b
-{{else if c}}
- d
-{{else if e}}
- f
-{{else if g}}
- h
-{{else}}
- j
-{{/if}}
-
-
- {{#if a}}
- b
- {{else if c}}
- d
- {{else}}
- e
- {{/if}}
-
-
-
-
- {{#if a}}
- b
- {{else if c}}
- d
- {{else}}
- e
- {{/if}}
-
-
-
-{{#if a}}
- b
-{{else}}
- {{#each c as |d|}}
- e
- {{/each}}
-{{/if}}
-
-{{#if a}}
- {{#if b}}
- ab
- {{else if c}}
- ac
- {{/if}}
-{{/if}}
-
-{{#if a}}
- a
- b
- c
-{{else}}
- {{#if c}}
- a
- b
- c
- {{/if}}
- a
- b
- c
-{{/if}}
diff --git a/tests/glimmer/jsfmt.spec.js b/tests/glimmer/jsfmt.spec.js
index 4abf117d9346..4eb39c445007 100644
--- a/tests/glimmer/jsfmt.spec.js
+++ b/tests/glimmer/jsfmt.spec.js
@@ -1,2 +1,2 @@
run_spec(__dirname, ["glimmer"]);
-run_spec(__dirname, ["glimmer"], { singleQuote: true });
+// run_spec(__dirname, ["glimmer"], { singleQuote: true });
diff --git a/tests/glimmer/literals.hbs b/tests/glimmer/literals.hbs
deleted file mode 100644
index fbacde4628e8..000000000000
--- a/tests/glimmer/literals.hbs
+++ /dev/null
@@ -1,7 +0,0 @@
-{{mustache true}}
-{{mustache 5}}
-{{mustache undefined}}
-{{mustache null}}
-
-{{! Mustache Comment}}
-{{!-- Mustache Comment }} --}}
diff --git a/tests/glimmer/loop.hbs b/tests/glimmer/loop.hbs
deleted file mode 100644
index 608d12596c96..000000000000
--- a/tests/glimmer/loop.hbs
+++ /dev/null
@@ -1,5 +0,0 @@
-
- {{#each speakers key="@index" as |speaker|}}
- {{speaker}}
- {{/each}}
-
diff --git a/tests/glimmer/simple-elements.hbs b/tests/glimmer/simple-elements.hbs
new file mode 100644
index 000000000000..d04ab3a4f799
--- /dev/null
+++ b/tests/glimmer/simple-elements.hbs
@@ -0,0 +1,11 @@
+aaa
+
+aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii jjjj kkkk llll mmmm nnnn oooo pppp qqqq rrrr ssss tttt
+
+
+
+
+
+bar
+
+
\ No newline at end of file
diff --git a/tests/glimmer/simple-text.hbs b/tests/glimmer/simple-text.hbs
new file mode 100644
index 000000000000..4d15af871b2f
--- /dev/null
+++ b/tests/glimmer/simple-text.hbs
@@ -0,0 +1,5 @@
+hello
+
+a b c
+
+1 2 3
\ No newline at end of file
diff --git a/tests/glimmer/simple-wrapping-text.hbs b/tests/glimmer/simple-wrapping-text.hbs
new file mode 100644
index 000000000000..21d29175b198
--- /dev/null
+++ b/tests/glimmer/simple-wrapping-text.hbs
@@ -0,0 +1 @@
+aaaaaa bbbbbbb ccccccc dddddd eeeeee ffffff gggggg hhhhh iiiiii jjjjj kkkkkk llllll mmmmm
\ No newline at end of file
diff --git a/tests/glimmer/string-literals.hbs b/tests/glimmer/string-literals.hbs
deleted file mode 100644
index f06cedcaab92..000000000000
--- a/tests/glimmer/string-literals.hbs
+++ /dev/null
@@ -1,6 +0,0 @@
-{{"abc"}}
-{{'abc'}}
-{{" \" \" ' more double quote than single quote "}}
-{{' \' \' " more single quote than double quote '}}
-{{' " \' \" \\ '}}
-{{" \" \' ' \\ "}}
diff --git a/tests/glimmer/sub-expressions.hbs b/tests/glimmer/sub-expressions.hbs
deleted file mode 100644
index 404444482ed2..000000000000
--- a/tests/glimmer/sub-expressions.hbs
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-{{#block
- (concat
- (service)
- (helper param hashPair=Value)
- (largeNameHelper param param param param hashPair=value hashPair=value hashPair=Value)
- hashPair=(helper param param param param param param hashPair=value hashPair=value hashPair=value)
- hashPair=(does not need a line break due to being under 80 chars long)
- )
-}}
-
-{{/block}}
-
-{{foobar-sub-component/foobar-foo
- hook="stringLiteral"
- foo=
- (t
- (concat "stringLiteral" (get blockParam "stringLiteral") hash=hash hash=hash)
- foo=(simple-helper (hash hashKey=blockParam.foo assignParam=blockParam.bar))
- )
-}}
diff --git a/yarn.lock b/yarn.lock
index da38e3a3a6b7..13bdf0663ef9 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -718,25 +718,25 @@
lodash "^4.17.11"
to-fast-properties "^2.0.0"
-"@glimmer/interfaces@^0.39.3":
- version "0.39.3"
- resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.39.3.tgz#1d46e1056c9ff3ce6174b82320893c027772e5f4"
- integrity sha512-tmuZAUau8UbyGh4gLkpC6Vjdm0JP2dibAMMaU/yZG+SGSsQeT+bo+0XcEezscQDPihfXsBX4Z6yq98o15beYEA==
-
-"@glimmer/syntax@0.39.3":
- version "0.39.3"
- resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.39.3.tgz#a5220151b00c69fbd728e120dffc7f90fa5b4f24"
- integrity sha512-Mb/d1hyWKZYANRPKoEGQ4wTc0kkcsjtxyN+J4ps2F1LQ5UKqJxDlgA/Tf9zXNHsd+A8dn25t5NIjQl7KIdsqOg==
- dependencies:
- "@glimmer/interfaces" "^0.39.3"
- "@glimmer/util" "^0.39.3"
+"@glimmer/interfaces@^0.41.0":
+ version "0.41.0"
+ resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.41.0.tgz#3f571a181025406f29faed9006d0a914afb577b1"
+ integrity sha512-d0Ryj8iV3FiyMyT4QpwHNg2QFFEmdzI5cJFcbmC+OmuTe6eOQ52mLDlw1+D+a3ZDv8Jfj3l0QkEcEugCxDY+1Q==
+
+"@glimmer/syntax@0.41.0":
+ version "0.41.0"
+ resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.41.0.tgz#af033e48475e29a4784900c13695925d752f462d"
+ integrity sha512-sYmgUMdK0jX+3ZNX9C2TKvL1YZGsKIcXRicwnzoTC7F56z29CbSCc7o6Zf0CI4L2Q7FSnHDxldlSe48wBAr6vQ==
+ dependencies:
+ "@glimmer/interfaces" "^0.41.0"
+ "@glimmer/util" "^0.41.0"
handlebars "^4.0.13"
simple-html-tokenizer "^0.5.7"
-"@glimmer/util@^0.39.3":
- version "0.39.3"
- resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.39.3.tgz#f6b0417c4b0a30f4ea693990f466e3d1eb442d37"
- integrity sha512-2tzpxdgaQxMu9bHFqTpGDBYDtSWJWQZkBCFfkzCmPrJuCis3YK7m9hzYIaow7CsVLnO44Xmur+Bpq6IM9gVFXw==
+"@glimmer/util@^0.41.0":
+ version "0.41.0"
+ resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.41.0.tgz#743fa455d1d7fa0ce29688e932c231a99c0752cf"
+ integrity sha512-aKmQy62eRFhOZET9XmTB8MOA32G1FmD4d9HWL21OfdcGM4IbguRrWLMQc2DRh1YOE2AaT0PBrFrPmpNwFp5tpQ==
"@iarna/toml@2.2.3":
version "2.2.3"