From 8067aa65ab8c8bd909ebcb6312dbf3156ed9162b Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Thu, 27 Aug 2015 16:28:59 -0700 Subject: [PATCH] properly register a binding when pushing it to the scope --- packages/babel-traverse/src/scope/index.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/packages/babel-traverse/src/scope/index.js b/packages/babel-traverse/src/scope/index.js index 51777e6346..2a27289bd5 100644 --- a/packages/babel-traverse/src/scope/index.js +++ b/packages/babel-traverse/src/scope/index.js @@ -829,21 +829,22 @@ export default class Scope { var blockHoist = opts._blockHoist == null ? 2 : opts._blockHoist; var dataKey = `declaration:${kind}:${blockHoist}`; - var declar = !unique && path.getData(dataKey); + var declarPath = !unique && path.getData(dataKey); - if (!declar) { - declar = t.variableDeclaration(kind, []); + if (!declarPath) { + var declar = t.variableDeclaration(kind, []); declar._generated = true; declar._blockHoist = blockHoist; this.hub.file.attachAuxiliaryComment(declar); - var [declarPath] = path.unshiftContainer("body", [declar]); - this.registerBinding(kind, declarPath); - if (!unique) path.setData(dataKey, declar); + [declarPath] = path.unshiftContainer("body", [declar]); + if (!unique) path.setData(dataKey, declarPath); } - declar.declarations.push(t.variableDeclarator(opts.id, opts.init)); + var declarator = t.variableDeclarator(opts.id, opts.init); + declarPath.node.declarations.push(declarator); + this.registerBinding(kind, declarPath.get("declarations").pop()); } /**