Extensible interfaces
Proof of concept implementation for adding extra fields to interface files for use by tooling.
By including tooling data as fields, we remove the need for build tools to know about extra files that they don't use information from.
As an example use case, hie data and parts of the compiler phases could be combined into the normal interface files by this, motivated in (https://gitlab.haskell.org/ghc/ghc/wikis/Core-interface-section).
In this patch, interface fields:
-
An extra field in ModIface
representing aMap
from field names to seralized field data -
An API to interact with the fields.