[GHC] #14167: GHC often depicts H98 datatypes as GADTs when it shouldn't
GHC
ghc-devs at haskell.org
Sat Sep 2 19:34:45 UTC 2017
#14167: GHC often depicts H98 datatypes as GADTs when it shouldn't
-------------------------------------+-------------------------------------
Reporter: RyanGlScott | Owner: (none)
Type: bug | Status: patch
Priority: normal | Milestone:
Component: Compiler | Version: 8.2.1
Resolution: | Keywords: GADTs,
| TemplateHaskell
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s): Phab:D3901
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by Ryan Scott <ryan.gl.scott@…>):
In [changeset:"8e4229ab3dc3e1717ad557ef00f3518da6b5c523/ghc" 8e4229a/ghc]:
{{{
#!CommitTicketReference repository="ghc"
revision="8e4229ab3dc3e1717ad557ef00f3518da6b5c523"
Fix #14167 by using isGadtSyntaxTyCon in more places
Summary:
Two places in GHC effectively attempt to //guess// whether a data type
was declared using GADT syntax:
1. When reifying a data type in Template Haskell
2. When pretty-printing a data type (e.g., via `:info` in GHCi)
But there's no need for heuristics here, since we have a 100% accurate way
to
determine whether a data type was declared using GADT syntax: the
`isGadtSyntaxTyCon` function! By simply using that as the metric, we
obtain
far more accurate TH reification and pretty-printing results.
This is technically a breaking change, since Template Haskell reification
will
now reify some data type constructors as `(Rec)GadtC` that it didn't
before,
and some data type constructors that were previously reified as
`(Rec)GadtC`
will no longer be reified as such. But it's a very understandable breaking
change, since the previous behavior was simply incorrect.
Test Plan: ./validate
Reviewers: simonpj, goldfire, austin, bgamari
Reviewed By: simonpj
Subscribers: rwbarton, thomie
GHC Trac Issues: #14167
Differential Revision: https://phabricator.haskell.org/D3901
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14167#comment:3>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list