diff --git a/lib/javascript/JavascriptParser.js b/lib/javascript/JavascriptParser.js index 5f98c8b3267..ef15be597fa 100644 --- a/lib/javascript/JavascriptParser.js +++ b/lib/javascript/JavascriptParser.js @@ -1189,14 +1189,15 @@ class JavascriptParser extends Parser { const node = /** @type {TaggedTemplateExpressionNode} */ (_node); const tag = this.evaluateExpression(node.tag); - if (tag.isIdentifier() && tag.identifier !== "String.raw") return; - const { quasis, parts } = getSimplifiedTemplateResult( - "raw", - node.quasi - ); - return new BasicEvaluatedExpression() - .setTemplateString(quasis, parts, "raw") - .setRange(node.range); + if (tag.isIdentifier() && tag.identifier === "String.raw") { + const { quasis, parts } = getSimplifiedTemplateResult( + "raw", + node.quasi + ); + return new BasicEvaluatedExpression() + .setTemplateString(quasis, parts, "raw") + .setRange(node.range); + } }); this.hooks.evaluateCallExpressionMember diff --git a/test/cases/parsing/evaluate-nullish/index.js b/test/cases/parsing/evaluate-nullish/index.js index bd2dfbac3f9..128a96c8e52 100644 --- a/test/cases/parsing/evaluate-nullish/index.js +++ b/test/cases/parsing/evaluate-nullish/index.js @@ -1,5 +1,9 @@ +function a() {} + it("should evaluate nullish coalescing", function () { expect("" ?? require("fail")).toBe(""); + expect(String.raw`aaaa` ?? require("fail")).toBe("aaaa"); + expect(a`aaaa` ?? "expected").toBe("expected"); expect(null ?? "expected").toBe("expected"); expect(("" ?? require("fail")) && true).toBe(""); let x = 0;