Skip to content

Commit 58edd1a

Browse files
committed
fix evaluating tagged template
1 parent c66e4ce commit 58edd1a

2 files changed

Lines changed: 13 additions & 8 deletions

File tree

lib/javascript/JavascriptParser.js

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1189,14 +1189,15 @@ class JavascriptParser extends Parser {
11891189
const node = /** @type {TaggedTemplateExpressionNode} */ (_node);
11901190
const tag = this.evaluateExpression(node.tag);
11911191

1192-
if (tag.isIdentifier() && tag.identifier !== "String.raw") return;
1193-
const { quasis, parts } = getSimplifiedTemplateResult(
1194-
"raw",
1195-
node.quasi
1196-
);
1197-
return new BasicEvaluatedExpression()
1198-
.setTemplateString(quasis, parts, "raw")
1199-
.setRange(node.range);
1192+
if (tag.isIdentifier() && tag.identifier === "String.raw") {
1193+
const { quasis, parts } = getSimplifiedTemplateResult(
1194+
"raw",
1195+
node.quasi
1196+
);
1197+
return new BasicEvaluatedExpression()
1198+
.setTemplateString(quasis, parts, "raw")
1199+
.setRange(node.range);
1200+
}
12001201
});
12011202

12021203
this.hooks.evaluateCallExpressionMember

test/cases/parsing/evaluate-nullish/index.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
1+
function a() {}
2+
13
it("should evaluate nullish coalescing", function () {
24
expect("" ?? require("fail")).toBe("");
5+
expect(String.raw`aaaa` ?? require("fail")).toBe("aaaa");
6+
expect(a`aaaa` ?? "expected").toBe("expected");
37
expect(null ?? "expected").toBe("expected");
48
expect(("" ?? require("fail")) && true).toBe("");
59
let x = 0;

0 commit comments

Comments
 (0)