@@ -213,11 +213,8 @@ p_match' placer pretty style isInfix strictness m_pats m_grhss = do
213213 unless whereIsEmpty $ do
214214 breakpoint
215215 inci (located grhssLocalBinds p_hsLocalBinds)
216− case style of
217− Lambda -> placeHanging placement $
218− switchLayout [patGrhssSpan] p_body
219− _ -> switchLayout [patGrhssSpan] $
220− placeHanging placement p_body
216+ switchLayout [patGrhssSpan] $
217+ placeHanging placement p_body
221218
222219p_grhs :: GroupStyle -> GRHS GhcPs (LHsExpr GhcPs) -> R ()
223220p_grhs = p_grhs' p_hsExpr
@@ -457,7 +454,14 @@ p_hsExpr = \case
457454 EWildPat NoExt -> backticks
458455 _ -> id
459456 located op (opWrapper . p_hsExpr)
460− placeHanging (exprPlacement (unLoc y)) $
457+ let placement =
458+ -- NOTE If end of operator and start of second argument are on
459+ -- different lines, always use normal placement.
460+ if isOneLineSpan
461+ (mkSrcSpan (srcSpanEnd (getLoc op)) (srcSpanStart (getLoc y)))
462+ then exprPlacement (unLoc y)
463+ else Normal
464+ placeHanging placement $
461465 located y p_hsExpr
462466 NegApp NoExt e _ -> do
463467 txt "- "
@@ -612,7 +616,8 @@ p_hsExpr = \case
612616 inci (p_pat x)
613617 breakpoint
614618 txt "->"
615− placeHanging (cmdTopPlacement (unLoc e)) (located e p_hsCmdTop)
619+ placeHanging (cmdTopPlacement (unLoc e)) $
620+ located e p_hsCmdTop
616621 HsStatic _ e -> do
617622 txt "static"
618623 breakpoint