diff --git a/lib/6to5/transformation/transformers/other/self-contained.js b/lib/6to5/transformation/transformers/other/self-contained.js index 0c040b5ab0..d6d890038f 100644 --- a/lib/6to5/transformation/transformers/other/self-contained.js +++ b/lib/6to5/transformation/transformers/other/self-contained.js @@ -1,10 +1,12 @@ "use strict"; +var includes = require("lodash/collection/includes"); var util = require("../../../util"); var core = require("core-js/library"); -var t = require("../../../types"); var has = require("lodash/object/has"); -var includes = require("lodash/collection/includes"); +var t = require("../../../types"); + +var isSymboliterator = t.buildMatchMemberExpression("Symbol.iterator"); var coreHas = function (node) { return node.name !== "_" && has(core, node.name); @@ -47,8 +49,7 @@ var astVisitor = { if (!callee.computed) return false; prop = callee.property; - if (!t.isIdentifier(prop.object, { name: "Symbol" })) return false; - if (!t.isIdentifier(prop.property, { name: "iterator" })) return false; + if (!isSymboliterator(prop)) return false; return util.template("corejs-iterator", { CORE_ID: file.get("coreIdentifier"), @@ -60,9 +61,7 @@ var astVisitor = { if (node.operator !== "in") return; var left = node.left; - if (!t.isMemberExpression(left)) return; - if (!t.isIdentifier(left.object, { name: "Symbol" })) return; - if (!t.isIdentifier(left.property, { name: "iterator" })) return; + if (!isSymboliterator(left)) return; return util.template("corejs-is-iterator", { CORE_ID: file.get("coreIdentifier"),