[GHC] #9988: Remove fun_id, is_infix from FunBind, as they are now in Match

GHC ghc-devs at haskell.org
Wed Nov 11 11:26:57 UTC 2015


#9988: Remove fun_id, is_infix from FunBind, as they are now in Match
-------------------------------------+-------------------------------------
        Reporter:  alanz             |                Owner:  alanz
            Type:  task              |               Status:  closed
        Priority:  highest           |            Milestone:  7.10.1
       Component:  Compiler          |              Version:  7.10.1-rc1
      Resolution:  fixed             |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):  Phab:D639
-------------------------------------+-------------------------------------

Comment (by Ben Gamari <ben@…>):

 In [changeset:"f0f9365fd7fe1a4c06926f390a6183449c3c6332/ghc" f0f9365/ghc]:
 {{{
 #!CommitTicketReference repository="ghc"
 revision="f0f9365fd7fe1a4c06926f390a6183449c3c6332"
 Remove fun_infix from Funbind, as it is now in Match

 One of the changes D538 introduced is to add `m_fun_id_infix` to `Match`

 ```lang=hs
 data Match id body
   = Match {
         m_fun_id_infix :: (Maybe (Located id,Bool)),
           -- fun_id and fun_infix for functions with multiple equations
           -- only present for a RdrName. See note [fun_id in Match]
         m_pats :: [LPat id], -- The patterns
         m_type :: (Maybe (LHsType id)),
                                  -- A type signature for the result of the
 match
                                  -- Nothing after typechecking
         m_grhss :: (GRHSs id body)
   } deriving (Typeable)
 ```

 This was done to track the individual locations and fixity of the
 `fun_id` for each of the defining equations for a function when there
 are more than one.

 For example, the function `(&&&)` is defined with some prefix and some
 infix equations below.

 ```lang=hs
     (&&&  ) [] [] =  []
     xs    &&&   [] =  xs
     (  &&&  ) [] ys =  ys
 ```

 This means that the fun_infix is now superfluous in the `FunBind`. This
 has not been removed as a potentially risky change just before 7.10 RC2,
 and so must be done after.

 This ticket captures that task, which includes processing these fields
 through the renamer and beyond.

 Ticket #9988 introduced these fields into `Match` through renaming, this
 ticket it to continue through type checking and then remove it from
 `FunBind` completely.

 The split happened so that #9988 could land in 7.10

 Trac ticket : #10061

 Test Plan: ./validate

 Reviewers: goldfire, austin, simonpj, bgamari

 Reviewed By: bgamari

 Subscribers: simonpj, thomie, mpickering

 Differential Revision: https://phabricator.haskell.org/D1285

 GHC Trac Issues: #10061
 }}}

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


More information about the ghc-tickets mailing list