Now query() returns maybe
parent
d2e2e6ea63
commit
5d406112e5
|
@ -48,7 +48,7 @@ export default class Context {
|
|||
this._scope.addExport(name, reference);
|
||||
}
|
||||
|
||||
query(name: string, params: ?(?Type)[]): Type {
|
||||
query(name: string, params: ?(?Type)[]): ?Type {
|
||||
const param = wu(this._params).find(p => p.name === name);
|
||||
|
||||
if (param) {
|
||||
|
|
|
@ -54,7 +54,7 @@ function processInterfaceDeclaration(ctx: Context, node: InterfaceDeclaration) {
|
|||
const {name} = extend.id;
|
||||
const type = ctx.query(name);
|
||||
|
||||
invariant(type.id);
|
||||
invariant(type && type.id);
|
||||
|
||||
const reference = t.createReference(t.clone(type.id));
|
||||
|
||||
|
@ -85,7 +85,7 @@ function processClassDeclaration(ctx: Context, node: ClassDeclaration) {
|
|||
|
||||
const base = ctx.query(node.superClass.name);
|
||||
|
||||
invariant(base.id);
|
||||
invariant(base && base.id);
|
||||
|
||||
const baseRef = t.createReference(t.clone(base.id));
|
||||
const intersection = t.createIntersection([baseRef, type]);
|
||||
|
@ -269,8 +269,12 @@ function makeReference(ctx: Context, node: GenericTypeAnnotation): ?Type {
|
|||
|
||||
const type = ctx.query(name, params);
|
||||
|
||||
if (!type) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!type.id) {
|
||||
return type;
|
||||
return t.clone(type);
|
||||
}
|
||||
|
||||
return t.createReference(t.clone(type.id));
|
||||
|
|
|
@ -86,7 +86,7 @@ export default class Collector {
|
|||
}
|
||||
}
|
||||
|
||||
_query(scope: Scope, name: string, params: (?Type)[]): Type {
|
||||
_query(scope: Scope, name: string, params: (?Type)[]): ?Type {
|
||||
let result = scope.query(name, params);
|
||||
|
||||
// TODO: warning.
|
||||
|
@ -153,11 +153,7 @@ export default class Collector {
|
|||
case 'special':
|
||||
default:
|
||||
const resolve = id => this._fund.take(id);
|
||||
const type = result.call(params, resolve);
|
||||
|
||||
invariant(type);
|
||||
|
||||
return type;
|
||||
return result.call(params, resolve);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -165,7 +161,9 @@ export default class Collector {
|
|||
for (const [scope, name] of module.exports()) {
|
||||
const type = this._query(scope, name, []);
|
||||
|
||||
this._fund.put(type, true);
|
||||
if (type) {
|
||||
this._fund.put(type, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue