Report the provenance of TyThings
One thing we are slightly nervous about regarding our resolution to #14396 (closed) is whether or not there will be a difficult to understand bug stemming from the fact that we may silently pick up an hs-boot TyThing, depending on when you do a lookup. You may be able to find the information by printing the TyThing with pprTyThing, but nothing is going to tell you, in the face, "Hey! This came from a boot file!"
So, simonpj suggested that we extend the TyThing pretty-printer to say where a TyThing came from. This is a good question. The big question: where will we put the provenance? There are two possibilities:
- Add a field in each constructor TyThing recording the provenance (this feels like a disruptive to an otherwise very simple union)
- Add a field to each of the constructors Id, ConLike, TyCon, CoAxiom (this involves a lot more typing, but these constructors already have lots of fields so it's not as disruptive)
The provenance will, for now, look something like:
newtype TyThingSrc = TyThingSrc {
tyThingFromBoot :: Bool
}
and then TcIface
will be extended to know if we're in boot and will fill things in accordingly.
Trac metadata
Trac field | Value |
---|---|
Version | 8.2.1 |
Type | Task |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |