Topologically order types in interface files
Topologically order types in interface files

This makes code generation easier (so that code generators don't need
to do the sort themselves).  When defining a type that contains other
struct types by value, all of those constituent types must be defined
before the containing type.

travitch/foreign-inference,travitch/foreign-inference