[commit: ghc] master: Correct BangPat SrcSpan calculation (c6bb2fc)
git at git.haskell.org
git at git.haskell.org
Mon Jun 29 19:12:32 UTC 2015
Repository : ssh://git@git.haskell.org/ghc
On branch : master
Link : http://ghc.haskell.org/trac/ghc/changeset/c6bb2fc50716a2fc540d55ecddbc5c14e94979f7/ghc
>---------------------------------------------------------------
commit c6bb2fc50716a2fc540d55ecddbc5c14e94979f7
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
>---------------------------------------------------------------
c6bb2fc50716a2fc540d55ecddbc5c14e94979f7
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 d7af65d..aa0b8cf 100644
--- a/compiler/parser/RdrHsSyn.hs
+++ b/compiler/parser/RdrHsSyn.hs
@@ -997,9 +997,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