Ticket #6117 (closed bug: fixed)
Cyclic Type Class Hierarchy Produces <<loop>>
| Reported by: | jun0 | Owned by: | simonpj |
|---|---|---|---|
| Priority: | normal | Milestone: | 7.8.1 |
| Component: | Compiler (Type checker) | Version: | 7.4.1 |
| Keywords: | Cc: | ||
| Operating System: | Linux | Architecture: | Unknown/Multiple |
| Type of failure: | Incorrect result at runtime | Difficulty: | Unknown |
| Test Case: | T6117 | Blocked By: | |
| Blocking: | Related Tickets: |
Description (last modified by simonpj) (diff)
If there is a cyclic class hierarchy like
class B a => Semigroup a where ...[[BR]]
class Semigroup (Additive a) => Ring a where ...[[BR]]
instance Ring a => Semigroup (Additive a) where ...[[BR]]
then uses of B's methods on (Additive a) in the method implementations of the third declaration instance Ring a => Semigroup (Additive a) will:
- be accepted by the compiler even in cases where B (Additive a) is not derivable.
- result in <<loop>>.
The attached program prints <<loop>> when compiled with GHC-7.2.1 or newer but prints 1234567890 when compiled with GHC-7.0.4 or older. I haven't had time to try out any revisions in between those two, but I did check that HEAD produces <<loop>> as well.
Attachments
Change History
Note: See
TracTickets for help on using
tickets.

