Note [TcSMode]

GHC/Tc/Solver/Monad.hs:932 compiler

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

Referenced by 3