diff options
| author | Matthew Pickering <matthewtpickering@gmail.com> | 2015-06-29 21:11:17 +0200 |
|---|---|---|
| committer | Alan Zimmerman <alan.zimm@gmail.com> | 2015-06-29 21:11:17 +0200 |
| commit | c6bb2fc50716a2fc540d55ecddbc5c14e94979f7 (patch) | |
| tree | 40794b76b4966197f2f81338ecfa55d47f5ce867 /compiler/parser | |
| parent | 9b5df2a401ba8f033cbbc80331f16ac8cf827c92 (diff) | |
| download | haskell-c6bb2fc50716a2fc540d55ecddbc5c14e94979f7.tar.gz | |
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
Diffstat (limited to 'compiler/parser')
| -rw-r--r-- | compiler/parser/RdrHsSyn.hs | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/compiler/parser/RdrHsSyn.hs b/compiler/parser/RdrHsSyn.hs index d7af65da8e..aa0b8cf16f 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) |
