Make `tcCheckSatisfiability` incremental (#18645)
By taking and returning an inert set (InertCans
).
Every new TcS
session can then pick up where a prior session left with
setInertCans
.
Fixes #18645 (closed) and #17836 (closed). Currently builds on !3937 (closed), !3633 (merged), !3959 (closed), only the last two commits are relevant.
I also had to extract the defn DsM
into its own module GHC.HsToCore.Types
(see discussion below or the commit message), which I consider a good refactoring anyway.