diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index f2e984d18c1..6d2ece71acf 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -817,8 +817,11 @@ module ts { return; } - var templateNeedsParens = isExpression(node.parent) && - comparePrecedenceToBinaryPlus(node.parent) !== Comparison.LessThan; + Debug.assert(node.parent.kind !== SyntaxKind.TaggedTemplateExpression); + + var templateNeedsParens = isExpression(node.parent) + && node.parent.kind !== SyntaxKind.ParenExpression + && comparePrecedenceToBinaryPlus(node.parent) !== Comparison.LessThan; if (templateNeedsParens) { write("("); @@ -836,7 +839,8 @@ module ts { // ("abc" + 1) << (2 + "") // rather than // "abc" + (1 << 2) + "" - var needsParens = comparePrecedenceToBinaryPlus(templateSpan.expression) !== Comparison.GreaterThan; + var needsParens = templateSpan.expression.kind !== SyntaxKind.ParenExpression + && comparePrecedenceToBinaryPlus(templateSpan.expression) !== Comparison.GreaterThan; write(" + "); diff --git a/tests/baselines/reference/templateStringInParentheses.js b/tests/baselines/reference/templateStringInParentheses.js index 381e8ffd800..6c5c678bf4e 100644 --- a/tests/baselines/reference/templateStringInParentheses.js +++ b/tests/baselines/reference/templateStringInParentheses.js @@ -2,4 +2,4 @@ var x = (`abc${0}abc`); //// [templateStringInParentheses.js] -var x = (("abc" + 0 + "abc")); +var x = ("abc" + 0 + "abc");