on master help sign in
Differentiate recordDot & standard record updates
commit77424882fda8f97087bba57727c2c84c8225e21c authorAvi Dessauer <avi.the.coder@gmail.com> dateTue 14 Jan 2020, 04:59 (7 years ago) parent3137345
3 files changed+24−1
data/examples/declaration/value/function/record-dot-out.hs+8 data/examples/declaration/value/function/record-dot.hs+8 src/Ormolu/Printer/Meat/Declaration/Value.hs+8−1
data/examples/declaration/value/function/record-dot-out.hs+8
@@ -5,3 +5,11 @@ data Foo = Foo {bar :: Int}
55mfoo = fmap (.bar) $ Nothing
66
77bar = (Foo 1).bar
8+
9+fooplus f n = f{foo = f.bar + n}
10+
11+fooplus' f n = f {foo = f.bar + n}
12+
13+fooplus'' f n = f {foo = f.bar + n}
14+
15+fooplus''' f n = f {foo = f.bar + n}
data/examples/declaration/value/function/record-dot.hs+8
@@ -4,3 +4,11 @@ data Foo = Foo { bar :: Int }
44mfoo = fmap (.bar) $ Nothing
55
66bar = ( Foo 1).bar
7+
8+fooplus f n = f{foo = f.bar + n}
9+
10+fooplus' f n = f { foo = f.bar + n}
11+
12+fooplus'' f n = f {foo = f.bar + n}
13+
14+fooplus''' f n = f{ foo = f.bar + n}
src/Ormolu/Printer/Meat/Declaration/Value.hs+8−1
@@ -699,7 +699,14 @@ p_hsExpr' s = \case
699699 sep (comma >> breakpoint) sitcc (fields <> dotdot)
700700 RecordUpd {..} -> do
701701 located rupd_expr p_hsExpr
702− breakpoint
702+ useRecordDot' <- useRecordDot
703+ let mrs sp = case getLoc sp of
704+ RealSrcSpan r -> Just r
705+ _ -> Nothing
706+ let isPluginForm =
707+ ((1 +) . srcSpanEndCol <$> mrs rupd_expr)
708+ == (srcSpanStartCol <$> mrs (head rupd_flds))
709+ unless (useRecordDot' && isPluginForm) breakpoint
703710 let updName f =
704711 f
705712 { hsRecFieldLbl = case unLoc $ hsRecFieldLbl f of