add es6.spec.templateLiterals transformer and rename es6.symbols to es6.spec.symbols

This commit is contained in:
Sebastian McKenzie
2015-03-30 16:41:13 +11:00
parent dc1ba58705
commit bc155f956c
47 changed files with 57 additions and 14 deletions

View File

@@ -1,7 +1,8 @@
{
"selfContained": "runtime",
"unicode-regex": "regex.unicode",
"spec.typeofSymbol": "es6.symbols",
"spec.typeofSymbol": "es6.spec.symbols",
"es6.symbols": "es6.spec.symbols",
"minification.deadCodeElimination": "utility.deadCodeElimination",
"minification.removeConsoleCalls": "utility.removeConsole",

View File

@@ -0,0 +1,11 @@
import * as t from "../../../types";
export var metadata = {
optional: true
};
export function TemplateLiteral(node, parent, scope, file) {
for (var i = 0; i < node.expressions.length; i++) {
node.expressions[i] = t.callExpression(t.identifier("String"), [node.expressions[i]]);
}
}

View File

@@ -1,17 +1,9 @@
import * as t from "../../../types";
var buildBinaryExpression = function (left, right, file) {
return t.binaryExpression("+", left, coerce(right, file));
var buildBinaryExpression = function (left, right) {
return t.binaryExpression("+", left, right);
};
function coerce(node, file) {
if (file.isLoose("es7.templateLiterals") || (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);
}
@@ -59,10 +51,10 @@ export function TemplateLiteral(node, parent, scope, file) {
var last = nodes[nodes.length - 1];
if (t.isLiteral(last, { value: "" })) nodes.pop();
var root = buildBinaryExpression(nodes.shift(), nodes.shift(), file);
var root = buildBinaryExpression(nodes.shift(), nodes.shift());
for (i = 0; i < nodes.length; i++) {
root = buildBinaryExpression(root, nodes[i], file);
root = buildBinaryExpression(root, nodes[i]);
}
return root;

View File

@@ -37,6 +37,8 @@ export default {
"es6.objectSuper": require("./es6/object-super"),
"es7.objectRestSpread": require("./es7/object-rest-spread"),
"es7.exponentiationOperator": require("./es7/exponentiation-operator"),
"es6.spec.templateLiterals": require("./es6/spec.template-literals"),
"es6.templateLiterals": require("./es6/template-literals"),
"es5.properties.mutators": require("./es5/properties.mutators"),
@@ -97,7 +99,7 @@ export default {
"es7.doExpressions": require("./es7/do-expressions"),
"es6.symbols": require("./es6/symbols"),
"es6.spec.symbols": require("./es6/spec.symbols"),
"spec.undefinedToVoid": require("./spec/undefined-to-void"),
_strict: require("./internal/strict"),