register variable declarator in scope when pushing

This commit is contained in:
Sebastian McKenzie 2015-05-13 09:11:09 +01:00
parent 2c8437ae92
commit be2dfaf081
2 changed files with 7 additions and 4 deletions

View File

@ -228,14 +228,16 @@ export default class TraversalPath {
paths.push(TraversalPath.get(this, null, node, this.container, to)); paths.push(TraversalPath.get(this, null, node, this.container, to));
} }
} }
return paths;
} }
_containerInsertBefore(nodes) { _containerInsertBefore(nodes) {
this._containerInsert(this.key, nodes); return this._containerInsert(this.key, nodes);
} }
_containerInsertAfter(nodes) { _containerInsertAfter(nodes) {
this._containerInsert(this.key + 1, nodes); return this._containerInsert(this.key + 1, nodes);
} }
_maybePopFromStatements(nodes) { _maybePopFromStatements(nodes) {

View File

@ -631,13 +631,14 @@ export default class Scope {
var declar = !unique && path.getData(dataKey); var declar = !unique && path.getData(dataKey);
if (!declar) { if (!declar) {
declar = t.variableDeclaration(opts.kind || "var", []); declar = t.variableDeclaration(kind, []);
declar._generated = true; declar._generated = true;
declar._blockHoist = 2; declar._blockHoist = 2;
this.file.attachAuxiliaryComment(declar); this.file.attachAuxiliaryComment(declar);
path.get("body")[0]._containerInsertBefore([declar]); var [declarPath] = path.get("body")[0]._containerInsertBefore([declar]);
this.registerBinding(kind, declarPath);
if (!unique) path.setData(dataKey, declar); if (!unique) path.setData(dataKey, declar);
} }