diff --git a/lib/6to5/transformation/transformers/constants.js b/lib/6to5/transformation/transformers/constants.js index 7c342edee7..965d33dda3 100644 --- a/lib/6to5/transformation/transformers/constants.js +++ b/lib/6to5/transformation/transformers/constants.js @@ -7,12 +7,12 @@ exports.BlockStatement = exports.ForInStatement = exports.ForOfStatement = exports.ForStatement = function (node, parent, file) { - var constants = []; + var constants = {}; var check = function (node, names, parent) { _.each(names, function (name) { if (!_.has(constants, name)) return; - if (t.isBlockStatement(parent) && parent !== constants[name]) return; + if (parent && t.isBlockStatement(parent) && parent !== constants[name]) return; throw file.errorWithNode(node, name + " is read-only"); }); @@ -38,13 +38,13 @@ exports.ForStatement = function (node, parent, file) { } }); - if (!constants.length) return; + if (_.isEmpty(constants)) return; - traverse(node, function (child) { + traverse(node, function (child, parent) { if (child._ignoreConstant) return; - if (t.isVariableDeclarator(child) || t.isDeclaration(child) || t.isAssignmentExpression(child)) { - check(child, getIds(child)); + if (t.isDeclaration(child) || t.isAssignmentExpression(child)) { + check(child, getIds(child), parent); } }); };