> But what business does the bootstrap compiler have with compiling GHC.Internal.Classes?
Aha! I see the issue.
if flag(bootstrap)
cpp-options: -DBOOTSTRAP_TH
build-depends:
ghc-prim
hs-source-dirs: @SourceRoot@ ../ghc-internal/src
exposed-modules:
GHC.Boot.TH.Lib
GHC.Boot.TH.Syntax
GHC.Boot.TH.Monad
other-modules:
GHC.Internal.TH.Lib
GHC.Internal.TH.Syntax
GHC.Internal.TH.Monad
GHC.Internal.ForeignSrcLang
GHC.Internal.LanguageExtensions
GHC.Internal.Lexeme
You can see the modules that we vendor from `ghc-internal` under `other-modules.
One of those is `GHC.Internal.ForeignSrcLang` and in your PR you add:
```
import GHC.Internal.Classes( (==) ) -- For known-key names
```
This needs to go inside the `else` branch of the `ifdef BOOTSTRAP_TH` pragma.
I think if you do the same thing for any `ghc-internal` imports in the other modules mentioned above then you should be fine.
I really should add a note explaining this BOOTSTRAP_TH business, especially because it is quite hacky(!).
Note [Bootstrapping Template Haskell] does a good job of explaining the design decisions we made to get here, but we need another note to explain this CPP soup.
Cheers,
Teo