From 5560861e4562a2e270e6610e6ef3cf120253bb16 Mon Sep 17 00:00:00 2001 From: Matthew Pickering <matthewtpickering@gmail.com> Date: Mon, 29 Jun 2015 21:11:17 +0200 Subject: [PATCH] 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) --- 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 cc019d14bf6..3d3e9c972bc 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) -- GitLab