From 8ec3e16794c9685afecb6ba527c1fc030e6699bf Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Tue, 3 Nov 2015 03:13:39 +0000 Subject: [PATCH] fix remaining outer binding identifier issues --- packages/babel-traverse/src/scope/index.js | 2 +- packages/babel-types/src/retrievers.js | 21 +++++++++++++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/packages/babel-traverse/src/scope/index.js b/packages/babel-traverse/src/scope/index.js index 082dc0bedf..c11268402e 100644 --- a/packages/babel-traverse/src/scope/index.js +++ b/packages/babel-traverse/src/scope/index.js @@ -402,7 +402,7 @@ export default class Scope { if (path.isLabeledStatement()) { this.registerBinding("label", path); } else if (path.isFunctionDeclaration()) { - this.registerBinding("hoisted", path.get("id"), true); + this.registerBinding("hoisted", path.get("id"), path); } else if (path.isVariableDeclaration()) { let declarations = path.get("declarations"); for (let declar of (declarations: Array)) { diff --git a/packages/babel-types/src/retrievers.js b/packages/babel-types/src/retrievers.js index 2dc1ffdb11..8ef03c6453 100644 --- a/packages/babel-types/src/retrievers.js +++ b/packages/babel-types/src/retrievers.js @@ -27,15 +27,28 @@ export function getBindingIdentifiers( } else { ids[id.name] = id; } - } else if (t.isExportDeclaration(id)) { + continue; + } + + if (t.isExportDeclaration(id)) { if (t.isDeclaration(node.declaration)) { search.push(node.declaration); } - } else if (outerOnly) { - if (t.isFunction(id)) { + continue; + } + + if (outerOnly) { + if (t.isFunctionDeclaration(id)) { search.push(id.id); + continue; } - } else if (keys) { + + if (t.isFunctionExpression(id)) { + continue; + } + } + + if (keys) { for (let i = 0; i < keys.length; i++) { let key = keys[i]; if (id[key]) {