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",