Instance not transitively forwarded
## Summary
When compiling the tests of synthesizer-llvm/HEAD I get:
~~~~
testsuite/Test/Synthesizer/LLVM/Utility.hs:77:30: error:
• Couldn't match type ‘CausalClass.SignalOf
(CausalClass.ProcessOf Sig.T)’
with ‘Sig.T’
Expected: Sig.T (al, bl)
-> CausalClass.ProcessOf Sig.T () (MultiValue.T a, MultiValue.T b)
Actual: CausalClass.SignalOf
(CausalClass.ProcessOf Sig.T) (MultiValue.T a, MultiValue.T b)
-> CausalClass.ProcessOf Sig.T () (MultiValue.T a, MultiValue.T b)
• In the first argument of ‘(.)’, namely ‘CausalClass.fromSignal’
In the first argument of ‘CausalRender.run’, namely
‘(CausalClass.fromSignal . sig)’
In a stmt of a 'do' block:
proc <- CausalRender.run (CausalClass.fromSignal . sig)
~~~~
If I add `import qualified Synthesizer.LLVM.Causal.Process ()` then the error goes away. However, the import should not be necessary, because the module imports `Synthesizer.LLVM.Generator.Signal` and this in turn imports `Synthesizer.LLVM.Causal.Private` which contains the required instance. This instance is not even orphan.
## Steps to reproduce
You need some unreleased versions of dependent packages for reproduction:
* https://hackage.haskell.org/package/llvm-tf-12.1/candidate
* https://hackage.haskell.org/package/llvm-extra-0.11/candidate
* https://hackage.haskell.org/package/llvm-dsl-0.1/candidate
* https://hackage.haskell.org/package/synthesizer-core-0.8.3/candidate
* https://hackage.haskell.org/package/synthesizer-llvm-1.0/candidate
You should also respect the building hints of
https://hackage.haskell.org/package/llvm-ffi
e.g. manually provide the paths to libLLVM.so and the LLVM C-header files.
Then you can compile with
~~~~
synthesizer-llvm$ PATH=/usr/local/ghc/9.4.4/bin:$PATH cabal-3.8 build all --enable-tests --disable-optimization --disable-documentation
~~~~
## Environment
* GHC version used: 9.4
In GHC before 9.4 this works.
issue