From 8055ce29f7dbbc8564087f01fa11a34d9d258a33 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Sun, 7 Jun 2015 23:57:19 +0100 Subject: [PATCH] add support for flow declarations in scope tracking --- src/babel/traversal/scope/index.js | 2 ++ src/babel/types/alias-keys.json | 12 ++++++------ src/babel/types/retrievers.js | 7 +++++++ 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/babel/traversal/scope/index.js b/src/babel/traversal/scope/index.js index 486aa952b5..0d863f5996 100644 --- a/src/babel/traversal/scope/index.js +++ b/src/babel/traversal/scope/index.js @@ -447,6 +447,8 @@ export default class Scope { this.registerBinding("let", path); } else if (t.isImportDeclaration(node) || t.isExportDeclaration(node)) { this.registerBinding("module", path); + } else if (t.isFlowDeclaration()) { + this.registerBinding("type", path); } else { this.registerBinding("unknown", path); } diff --git a/src/babel/types/alias-keys.json b/src/babel/types/alias-keys.json index 9d917a303c..89e2a9b52c 100644 --- a/src/babel/types/alias-keys.json +++ b/src/babel/types/alias-keys.json @@ -83,15 +83,15 @@ "ArrayTypeAnnotation": ["Flow"], "BooleanTypeAnnotation": ["Flow", "FlowBaseAnnotation"], "ClassImplements": ["Flow"], - "DeclareClass": ["Flow", "FlowStatement", "Statement", "FlowDeclaration"], - "DeclareFunction": ["Flow", "FlowStatement", "Statement", "FlowDeclaration"], - "DeclareModule": ["Flow", "FlowStatement", "Statement", "FlowDeclaration"], - "DeclareVariable": ["Flow", "FlowStatement", "Statement", "FlowDeclaration"], + "DeclareClass": ["Flow", "FlowDeclaration", "Statement", "Declaration"], + "DeclareFunction": ["Flow", "FlowDeclaration", "Statement", "Declaration"], + "DeclareModule": ["Flow", "FlowDeclaration", "Statement"], + "DeclareVariable": ["Flow", "FlowDeclaration", "Statement", "Declaration"], "FunctionTypeAnnotation": ["Flow"], "FunctionTypeParam": ["Flow"], "GenericTypeAnnotation": ["Flow"], "InterfaceExtends": ["Flow"], - "InterfaceDeclaration": ["Flow", "FlowStatement", "Statement", "Declaration"], + "InterfaceDeclaration": ["Flow", "FlowDeclaration", "Statement", "Declaration"], "IntersectionTypeAnnotation": ["Flow"], "MixedTypeAnnotation": ["Flow", "FlowBaseAnnotation"], "NullableTypeAnnotation": ["Flow"], @@ -100,7 +100,7 @@ "StringTypeAnnotation": ["Flow", "FlowBaseAnnotation"], "TupleTypeAnnotation": ["Flow"], "TypeofTypeAnnotation": ["Flow"], - "TypeAlias": ["Flow", "FlowStatement", "Statement"], + "TypeAlias": ["Flow", "FlowDeclaration", "Statement", "Declaration"], "TypeAnnotation": ["Flow"], "TypeCastExpression": ["Flow"], "TypeParameterDeclaration": ["Flow"], diff --git a/src/babel/types/retrievers.js b/src/babel/types/retrievers.js index 4a7fa6f86d..dc53e06bf8 100644 --- a/src/babel/types/retrievers.js +++ b/src/babel/types/retrievers.js @@ -30,6 +30,13 @@ export function getBindingIdentifiers(node: Object): Object { } getBindingIdentifiers.keys = { + DeclareClass: "id", + DeclareFunction: "id", + DeclareModule: "id", + DeclareVariable: "id", + InterfaceDeclaration: "id", + TypeAlias: "id", + ComprehensionExpression: "blocks", ComprehensionBlock: "left",