cycle package:ghc
Find a reasonably short cycle a->b->c->a, in a graph The
graph might not necessarily be strongly connected.
DriverModuleGraphCycle is an error that occurs if the module graph
contains cyclic imports.
Test cases: testsbackpackshould_fail/bkpfail51
testsdriverT20459 testsdriverT24196/T24196
testsdriverT24275/T24275
TcRnSuperclassCycle is an error indicating that a class has a
superclass cycle.
Test cases: mod40, tcfail027, tcfail213, tcfail216, tcfail217, T9415,
T9739
TcRnTypeSynonymCycle is an error indicating that a cycle between type
synonyms has occurred.
Test cases: mod27, ghc-e-fail2, bkpfail29
Add a new cycle-breaker binding to the top environment on the stack.
Perform a monadic operation on all pairs in the top environment in the
stack.
Push a fresh environment onto the cycle-breaker var stack. Useful when
entering a nested implication.
Checks if any of the passed in
TyCons have cycles. Takes the
Unit of the home package (as we can avoid checking those
TyCons: cycles never go through foreign packages) and the
corresponding
LTyClDecl Name for each
TyCon, so we can
give better error messages.