[GHC] #10011: The Data instance for Ratio violates internal invariants.

GHC ghc-devs at haskell.org
Wed Jan 21 18:30:00 UTC 2015


#10011: The Data instance for Ratio violates internal invariants.
-------------------------------------+-------------------------------------
        Reporter:  ekmett            |                   Owner:  ekmett
            Type:  bug               |                  Status:  patch
        Priority:  normal            |               Milestone:  7.10.1
       Component:  Core Libraries    |                 Version:  7.10.1-rc1
      Resolution:                    |                Keywords:
Operating System:  Unknown/Multiple  |            Architecture:
 Type of failure:  Incorrect result  |  Unknown/Multiple
  at runtime                         |               Test Case:
      Blocked By:                    |                Blocking:
 Related Tickets:                    |  Differential Revisions:  Phab:D625
-------------------------------------+-------------------------------------

Comment (by Herbert Valerio Riedel <hvr@…>):

 In [changeset:"79b0d0e633af8302d2dd907663a4a231cd889b67/ghc"]:
 {{{
 #!CommitTicketReference repository="ghc"
 revision="79b0d0e633af8302d2dd907663a4a231cd889b67"
 Restore invariant in `Data (Ratio a)` instance

 The Data instance for `Ratio` just uses the raw `:%` constructor and
 doesn't check that the result is reduced to normal form.

 The fix is to add back the `Integral` constraint on the Data
 instance (which was dropped in c409b6f30373535) and to use `%` rather
 than `:%` in the `gfoldl` and `gunfold` implementation.

 This restores the invariant and matches the behavior of "virtual
 constructors" we've used to patch up such problems elsewhere.

 This addresses #10011

 Reviewed By: ekmett, austin

 Differential Revision: https://phabricator.haskell.org/D625
 }}}

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10011#comment:5>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list