[GHC] #14332: Deriving clauses can have forall types

GHC ghc-devs at haskell.org
Thu Oct 25 14:26:43 UTC 2018


#14332: Deriving clauses can have forall types
-------------------------------------+-------------------------------------
        Reporter:  RyanGlScott       |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler (Type    |              Version:  8.2.1
  checker)                           |
      Resolution:                    |             Keywords:  deriving
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  GHC accepts       |  Unknown/Multiple
  invalid program                    |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:  #14331            |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------
Changes (by RyanGlScott):

 * related:   => #14331


Comment:

 It turns out that the changes in the parser necessary to accommodate
 `forall`s in `deriving` clauses (without the double parentheses junk) is
 essentially just this:

 {{{#!diff
 diff --git a/compiler/parser/Parser.y b/compiler/parser/Parser.y
 index af8c95f..7ad3025 100644
 --- a/compiler/parser/Parser.y
 +++ b/compiler/parser/Parser.y
 @@ -1979,9 +1985,9 @@ inst_type :: { LHsSigType GhcPs }
          : sigtype                       { mkLHsSigType $1 }

  deriv_types :: { [LHsSigType GhcPs] }
 -        : typedoc                       { [mkLHsSigType $1] }
 +        : ktypedoc                     { [mkLHsSigType $1] }

 -        | typedoc ',' deriv_types       {% addAnnotation (gl $1) AnnComma
 (gl $2)
 +        | ktypedoc ',' deriv_types     {% addAnnotation (gl $1) AnnComma
 (gl $2)
                                             >> return (mkLHsSigType $1 :
 $3) }

  comma_types0  :: { [LHsType GhcPs] }  -- Zero or more:  ty,ty,ty
 }}}

 I'm not going to open a Diff for this now, since it would be nice to
 combine the fix for this ticket with that of #14331. But I'll record this
 here for posterity's sake.

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


More information about the ghc-tickets mailing list