[commit: ghc] master: Bring Match m_fun_id_infix through the renamer. (c88e112)

git at git.haskell.org git at git.haskell.org
Thu Feb 5 23:42:39 UTC 2015


Repository : ssh://git@git.haskell.org/ghc

On branch  : master
Link       : http://ghc.haskell.org/trac/ghc/changeset/c88e11219c1e914b71d8c630a1f1d4f6f0fb6b9b/ghc

>---------------------------------------------------------------

commit c88e11219c1e914b71d8c630a1f1d4f6f0fb6b9b
Author: Alan Zimmerman <alan.zimm at gmail.com>
Date:   Thu Feb 5 17:36:57 2015 -0600

    Bring Match m_fun_id_infix through the renamer.
    
    Summary:
    This is a first step for #9988
    
    It turns out that bringing m_fun_id_infix through the renamer is
    actually very simple, affecting the internals of rnMatch' only.
    
    Is this simple enough to hit 7.10.1?
    
    Test Plan: ./validate
    
    Reviewers: hvr, simonpj, austin
    
    Reviewed By: simonpj, austin
    
    Subscribers: thomie
    
    Differential Revision: https://phabricator.haskell.org/D639
    
    GHC Trac Issues: #9988


>---------------------------------------------------------------

c88e11219c1e914b71d8c630a1f1d4f6f0fb6b9b
 compiler/rename/RnBinds.hs                         | 11 ++++++++---
 testsuite/tests/ghc-api/landmines/landmines.stdout |  6 +++---
 2 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/compiler/rename/RnBinds.hs b/compiler/rename/RnBinds.hs
index 97eb457..3e3b3d1 100644
--- a/compiler/rename/RnBinds.hs
+++ b/compiler/rename/RnBinds.hs
@@ -978,7 +978,8 @@ rnMatch' :: Outputable (body RdrName) => HsMatchContext Name
          -> (Located (body RdrName) -> RnM (Located (body Name), FreeVars))
          -> Match RdrName (Located (body RdrName))
          -> RnM (Match Name (Located (body Name)), FreeVars)
-rnMatch' ctxt rnBody match@(Match _mf pats maybe_rhs_sig grhss)
+rnMatch' ctxt rnBody match@(Match { m_fun_id_infix = mf, m_pats = pats
+                                  , m_type = maybe_rhs_sig, m_grhss = grhss })
   = do  {       -- Result type signatures are no longer supported
           case maybe_rhs_sig of
                 Nothing -> return ()
@@ -988,8 +989,12 @@ rnMatch' ctxt rnBody match@(Match _mf pats maybe_rhs_sig grhss)
                -- note that there are no local ficity decls for matches
         ; rnPats ctxt pats      $ \ pats' -> do
         { (grhss', grhss_fvs) <- rnGRHSs ctxt rnBody grhss
-
-        ; return (Match Nothing pats' Nothing grhss', grhss_fvs) }}
+        ; let mf' = case (ctxt,mf) of
+                      (FunRhs funid isinfix,Just (L lf _,_))
+                                                    -> Just (L lf funid,isinfix)
+                      _                             -> Nothing
+        ; return (Match { m_fun_id_infix = mf', m_pats = pats'
+                        , m_type = Nothing, m_grhss = grhss'}, grhss_fvs ) }}
 
 emptyCaseErr :: HsMatchContext Name -> SDoc
 emptyCaseErr ctxt = hang (ptext (sLit "Empty list of alternatives in") <+> pp_ctxt)
diff --git a/testsuite/tests/ghc-api/landmines/landmines.stdout b/testsuite/tests/ghc-api/landmines/landmines.stdout
index fc53814..7d667ed 100644
--- a/testsuite/tests/ghc-api/landmines/landmines.stdout
+++ b/testsuite/tests/ghc-api/landmines/landmines.stdout
@@ -1,4 +1,4 @@
-(10,9,6)
+(10,10,6)
 (49,45,0)
-(12,10,6)
-(8,7,6)
+(12,11,6)
+(8,8,6)



More information about the ghc-commits mailing list