register labels as bindings - fixes #1747

This commit is contained in:
Sebastian McKenzie 2015-06-20 22:10:29 +01:00
parent 6a8ecf2507
commit fb08a519c8
2 changed files with 5 additions and 1 deletions

View File

@ -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");

View File

@ -41,6 +41,7 @@ getBindingIdentifiers.keys = {
ComprehensionBlock: "left",
CatchClause: "param",
LabeledStatement: "label",
UnaryExpression: "argument",
AssignmentExpression: "left",