grain
grain copied to clipboard
Compiler: Don't expose unnecessary types in module signatures
In Grain, when types are not exported they appear abstract to the consuming module. However, we expose all types defined in that module as abstract ones, when it should only be the ones that are visible via other types or values exposed from the module, i.e. if there's a type Foo that's only used internally, it should not appear in the module signature at all.