From fb08a519c88a33e612b05448f1cffc75ce8fc328 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Sat, 20 Jun 2015 22:10:29 +0100 Subject: [PATCH] register labels as bindings - fixes #1747 --- src/babel/traversal/scope/index.js | 5 ++++- src/babel/types/retrievers.js | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/babel/traversal/scope/index.js b/src/babel/traversal/scope/index.js index eb0d4acad4..d93da2995d 100644 --- a/src/babel/traversal/scope/index.js +++ b/src/babel/traversal/scope/index.js @@ -64,6 +64,7 @@ var collectorVisitor = { LabeledStatement(node) { this.scope.getProgramParent().addGlobal(node); + this.scope.getBlockParent().registerDeclaration(this); }, AssignmentExpression() { @@ -435,7 +436,9 @@ export default class Scope { */ registerDeclaration(path: NodePath) { - if (path.isFunctionDeclaration()) { + if (path.isLabeledStatement()) { + this.registerBinding("label", path); + } else if (path.isFunctionDeclaration()) { this.registerBinding("hoisted", path); } else if (path.isVariableDeclaration()) { var declarations = path.get("declarations"); diff --git a/src/babel/types/retrievers.js b/src/babel/types/retrievers.js index dc53e06bf8..174d15d6de 100644 --- a/src/babel/types/retrievers.js +++ b/src/babel/types/retrievers.js @@ -41,6 +41,7 @@ getBindingIdentifiers.keys = { ComprehensionBlock: "left", CatchClause: "param", + LabeledStatement: "label", UnaryExpression: "argument", AssignmentExpression: "left",