mirror of
https://github.com/GaloisInc/what4.git
synced 2024-12-01 20:23:10 +03:00
a1adde9685
This contains a variety of tweaks needed to make `what4`, `what4-abc`, and `what4-blt` build warning-free on GHC 9.0: * GHC's constraint solver now solves constraints in each top-level group sooner (see [here](https://gitlab.haskell.org/ghc/ghc/-/wikis/migration/9.0?version_id=5fcd0a50e0872efb3c38a32db140506da8310d87#the-order-of-th-splices-is-more-important)). This affects `what4`'s `What4.Expr.App` module, as it separates top-level groups with a Template Haskell `$(return [])` splice. The previous location of this splice made it so that the TH-generated instances in that module (e.g., the `TraversableFC` instance for `App`) were not available to any code before the splice, resulting in type errors when compiled with GHC 9.0. I implemented a fairly involved fix of moving each of the affected data types, as well as their corresponding TH-generated instances, to the top of the module to ensure that subsequent top-level groups have access to this code. * GHC 9.0 implements simplified subsumption (see [here](https://gitlab.haskell.org/ghc/ghc/-/wikis/migration/9.0?version_id=5fcd0a50e0872efb3c38a32db140506da8310d87#simplified-subsumption)). This affects the use of the `freshBoundTermFn` function in `what4`'s `What4.Protocol.SMTWriter` module, as `freshBoundTermFn`'s type signature contains a nested `forall`. Fortunately, repairing this code is as simple as a single eta expansion. * Raise the upper version bounds on `base` in `what4-abc` and `what4-blt` to permit building with `base-4.15` (bundled with GHC 9.0). * Bump the `aig` submodule commit so that it does not emit `-Wstar-is-type` warnings when built with GHC 9.0, where `-Wall` implies `-Wstar-is-type`. Bump the `language-sally` submodule commit to allow building with `base-4.15` (see GaloisInc/language-sally#6). |
||
---|---|---|
.. | ||
src/What4/Solver | ||
test | ||
LICENSE | ||
Setup.hs | ||
what4-blt.cabal |