diff --git a/lib/6to5/types/index.js b/lib/6to5/types/index.js index 284fb7eb12..efe141328f 100644 --- a/lib/6to5/types/index.js +++ b/lib/6to5/types/index.js @@ -3,6 +3,10 @@ var _ = require("lodash"); var t = exports; +t.NATIVE_TYPES_NAMES = ["Array", "Object", "Number", "Boolean", "Date", "Array", "String"]; + +// + var addAssert = function (type, is) { t["assert" + type] = function (node, opts) { opts = opts || {}; @@ -214,7 +218,7 @@ t.isReferenced = function (node, parent) { */ t.isValidIdentifier = function (name) { - return _.isString(name) && esutils.keyword.isIdentifierName(name) && !esutils.keyword.isKeywordES6(name, true); + return _.isString(name) && esutils.keyword.isIdentifierName(name) && !esutils.keyword.isReservedWordES6(name, true); }; /* @@ -227,6 +231,8 @@ t.isValidIdentifier = function (name) { t.toIdentifier = function (name) { if (t.isIdentifier(name)) return name.name; + name = name + ""; + // replace all non-valid identifiers with dashes name = name.replace(/[^a-zA-Z0-9$_]/g, "-"); @@ -241,6 +247,10 @@ t.toIdentifier = function (name) { // remove underscores from start of name name = name.replace(/^\_/, ""); + if (!t.isValidIdentifier(name)) { + name = "_" + name; + } + return name || '_'; };