
#13848: Unexpected order of variable quantification with GADT constructor -------------------------------------+------------------------------------- Reporter: RyanGlScott | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler (Type | Version: 8.0.1 checker) | Keywords: Resolution: | TypeApplications Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by RyanGlScott): OK, I think I'm starting to see the picture more clearly. However, some of the details are still hazy to me. In particular, `tcConDecl` is far from the only place that uses `buildDataCon` to construct a `DataCon`. However, as far as I can tell, `tcConDecl` is the //only// place that knows exactly what order the user wrote the constructor's type variables in. This is important because we might write a GADT to an interface file and read it back in [http://git.haskell.org/ghc.git/blob/78c80c250021ccb7a84afaabebe0d69f9b9372ee... tyConToIfaceDecl], which also uses `buildDataCon`. However, we've lost the order of the type variables used in the wrapper type by that point, since `IfaceData` doesn't store the wrapper type! This suggests to me that we need to beef up `IfaceData` to accommodate this change. Should we be storing the wrapper type as a field of `IfaceData` as well? Or am I barking up the wrong tree? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13848#comment:6 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler