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.