From 0ee230d13c413f337435c11c93a5c07e30ba54ff Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Mon, 23 Mar 2015 22:04:40 +1100 Subject: [PATCH] coerce template literal expressions to strings - fixes #1065 --- .../transformers/es6/template-literals.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/babel/transformation/transformers/es6/template-literals.js b/src/babel/transformation/transformers/es6/template-literals.js index 537f57bde1..4541887449 100644 --- a/src/babel/transformation/transformers/es6/template-literals.js +++ b/src/babel/transformation/transformers/es6/template-literals.js @@ -1,9 +1,17 @@ import * as t from "../../../types"; var buildBinaryExpression = function (left, right) { - return t.binaryExpression("+", left, right); + return t.binaryExpression("+", coerce(left), coerce(right)); }; +function coerce(node) { + if (t.isLiteral(node) && typeof node.value === "string") { + return node; + } else { + return t.callExpression(t.identifier("String"), [node]); + } +} + export function check(node) { return t.isTemplateLiteral(node) || t.isTaggedTemplateExpression(node); }