[commit: ghc] ghc-7.10: Correct BangPat SrcSpan calculation (5560861)

git at git.haskell.org git at git.haskell.org
Tue Jun 30 13:00:56 UTC 2015


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

On branch  : ghc-7.10
Link       : http://ghc.haskell.org/trac/ghc/changeset/5560861e4562a2e270e6610e6ef3cf120253bb16/ghc

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

commit 5560861e4562a2e270e6610e6ef3cf120253bb16
Author: Matthew Pickering <matthewtpickering at gmail.com>
Date:   Mon Jun 29 21:11:17 2015 +0200

    Correct BangPat SrcSpan calculation
    
    Summary:
    Previously when the split was performed in splitBang, `BangPat` was given the
    same SrcSpan as the whole of the LHS of the declaration. This patch
    correctly calculates the value.
    
    Reviewers: alanz, austin
    
    Reviewed By: alanz, austin
    
    Subscribers: thomie, bgamari
    
    Differential Revision: https://phabricator.haskell.org/D1020
    
    GHC Trac Issues: #10588
    
    (cherry picked from commit c6bb2fc50716a2fc540d55ecddbc5c14e94979f7)


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

5560861e4562a2e270e6610e6ef3cf120253bb16
 compiler/parser/RdrHsSyn.hs | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/compiler/parser/RdrHsSyn.hs b/compiler/parser/RdrHsSyn.hs
index cc019d1..3d3e9c9 100644
--- a/compiler/parser/RdrHsSyn.hs
+++ b/compiler/parser/RdrHsSyn.hs
@@ -1169,9 +1169,10 @@ checkDoAndIfThenElse guardExpr semiThen thenExpr semiElse elseExpr
         -- not be any OpApps inside the e's
 splitBang :: LHsExpr RdrName -> Maybe (LHsExpr RdrName, [LHsExpr RdrName])
 -- Splits (f ! g a b) into (f, [(! g), a, b])
-splitBang (L loc (OpApp l_arg bang@(L _ (HsVar op)) _ r_arg))
-  | op == bang_RDR = Just (l_arg, L loc (SectionR bang arg1) : argns)
+splitBang (L _ (OpApp l_arg bang@(L _ (HsVar op)) _ r_arg))
+  | op == bang_RDR = Just (l_arg, L l' (SectionR bang arg1) : argns)
   where
+    l' = combineLocs bang arg1
     (arg1,argns) = split_bang r_arg []
     split_bang (L _ (HsApp f e)) es = split_bang f (e:es)
     split_bang e                 es = (e,es)



More information about the ghc-commits mailing list