From a505e4a1215a9f4c9d2b8a6e14d60727dae5559f Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Mon, 13 Apr 2015 00:48:19 -0700 Subject: [PATCH] aAdd `getIterator` and `isIterable` to `babel-runtime` build script - fixes #1243 --- CHANGELOG.md | 5 +++++ packages/build-runtime.js | 2 +- .../transformation/transformers/other/runtime/index.js | 2 +- src/babel/traversal/path/index.js | 9 +++++++-- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f61216656..b03e4448e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,11 @@ _Note: Gaps between patch versions are faulty/broken releases._ See [CHANGELOG - 6to5](CHANGELOG-6to5.md) for the pre-4.0.0 version changelog. +## 5.1.2 + + * **Bug Fix** + * Add `getIterator` and `isIterable` to `babel-runtime` build script. + ## 5.1.1 * **Bug Fix** diff --git a/packages/build-runtime.js b/packages/build-runtime.js index d68df48403..d007147688 100644 --- a/packages/build-runtime.js +++ b/packages/build-runtime.js @@ -77,7 +77,7 @@ writeFile("regenerator/runtime.js", selfContainify(readFile("regenerator-babel/r var coreDefinitions = require("../lib/babel/transformation/transformers/other/runtime/definitions"); -var paths = []; +var paths = ["is-iterable", "get-iterator"]; each(coreDefinitions.builtins, function (path) { paths.push(path); diff --git a/src/babel/transformation/transformers/other/runtime/index.js b/src/babel/transformation/transformers/other/runtime/index.js index aef49beea6..2bceabefc2 100644 --- a/src/babel/transformation/transformers/other/runtime/index.js +++ b/src/babel/transformation/transformers/other/runtime/index.js @@ -42,7 +42,7 @@ var astVisitor = { prop = callee.property; if (!isSymbolIterator(prop)) return false; - return t.callExpression(file.addImport(`${RUNTIME_MODULE_NAME}/core-js/get-iterator`, "getIterator", true), [callee.object]); + return t.callExpression(file.addImport(`${RUNTIME_MODULE_NAME}/core-js/get-iterable`, "getIterator", true), [callee.object]); } else if (this.isBinaryExpression()) { // Symbol.iterator in arr -> core.$for.isIterable(arr) diff --git a/src/babel/traversal/path/index.js b/src/babel/traversal/path/index.js index b7476c109d..f46fd2a801 100644 --- a/src/babel/traversal/path/index.js +++ b/src/babel/traversal/path/index.js @@ -713,6 +713,11 @@ export default class TraversalPath { var search = [this.node]; var i = 0; + function matches(name) { + var part = parts[i]; + return part === "*" || name === part; + } + while (search.length) { var node = search.shift(); @@ -722,10 +727,10 @@ export default class TraversalPath { if (t.isIdentifier(node)) { // this part doesn't match - if (parts[i] !== node.name) return false; + if (!matches(node.name)) return false; } else if (t.isLiteral(node)) { // this part doesn't match - if (parts[i] !== node.value) return false; + if (!matches(node.value)) return false; } else if (t.isMemberExpression(node)) { if (node.computed && !t.isLiteral(node.property)) { // we can't deal with this