Note [TcSMode]
The constraint solver can operate in different modes: * `tcsmResumable`: Used by the pattern match overlap checker. The idea is that the returned InertSet will later be resumed, so we do not want to restore type-equality cycles See also Note [Type equality cycles] in GHC.Tc.Solver.Equality * `tcsmEarlyAbort`: Abort (fail in the monad) as soon as we come across an insoluble constraint. This is used to fail-fast when checking for hole-fits. See Note [Speeding up valid hole-fits]. * `tcsmSkipOverlappable`: don't use OVERLAPPABLE instances. Used by the short-cut solver. See Note [Shortcut solving] in GHC.Tc.Solver.Dict * `tcsmFullSolveQCIs`: fully solve quantified constraints, or leave them alone. Used (only) for SPECIALISE pragmas; see (NFS1) in Note [Handling new-form SPECIALISE pragmas] in GHC.Tc.Gen.Sig
References 4
- Speeding up valid hole-fits GHC.Tc.Errors.Hole
- Handling new-form SPECIALISE pragmas GHC.Tc.Gen.Sig
- Shortcut solving GHC.Tc.Solver.Dict
- Type equality cycles GHC.Tc.Solver.Equality
Referenced by 3
- GHC.Tc.Solver.Monad call site ×3