-
Notifications
You must be signed in to change notification settings - Fork 2
/
use-flow-type.js
32 lines (29 loc) · 896 Bytes
/
use-flow-type.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
'use strict';
module.exports = function(context) {
function markTypeAsUsed(node) {
context.markVariableAsUsed(node.id.name);
}
return {
DeclareClass: markTypeAsUsed,
DeclareFunction: markTypeAsUsed,
DeclareModule: markTypeAsUsed,
DeclareVariable: markTypeAsUsed,
GenericTypeAnnotation: function(node) {
var typeId;
if (node.id.type === 'Identifier') {
typeId = node.id;
} else if (node.id.type === 'QualifiedTypeIdentifier') {
typeId = node.id;
do { typeId = typeId.qualification; } while (typeId.qualification);
}
for (var scope = context.getScope(); scope; scope = scope.upper) {
var variable = scope.set.get(typeId.name);
if (variable && variable.defs.length) {
context.markVariableAsUsed(typeId.name);
break;
}
}
}
};
};
module.exports.schema = [];