diff --git a/src/collector/definitions.js b/src/collector/definitions.js index dbcfc47..b16a014 100644 --- a/src/collector/definitions.js +++ b/src/collector/definitions.js @@ -31,6 +31,10 @@ import {invariant} from '../utils'; function processTypeAlias(ctx: Context, node: TypeAlias | DeclareTypeAlias) { const {name} = node.id; + + // Forward declaration for the recursive types + ctx.define(name, t.createAny()); + const type = makeType(ctx, node.right); // TODO: support function aliases. diff --git a/src/collector/scope.js b/src/collector/scope.js index 3aa6409..08bb432 100644 --- a/src/collector/scope.js +++ b/src/collector/scope.js @@ -84,7 +84,7 @@ export default class Scope { if (declared) { invariant(decl); - invariant(decl.kind === 'declaration'); + invariant(decl.kind === 'declaration' || decl.kind === 'definition'); } else { invariant(!decl); }