on master help sign in
Fix rendering of implicit bidirectional pattern synonyms

Previously we forgot to enable the extension, and apparently we were just defining a function called ‘pattern’.

commit99619d681c571849d0fa072705db6f3490383107 authormrkkrp <mark.karpov@tweag.io> dateMon 8 Jul 2019, 21:25 (7 years ago) parent3d74f2f
7 files changed+28−4
data/examples/declaration/value/pattern-synonyms/bidirectional-out.hs+4 data/examples/declaration/value/pattern-synonyms/bidirectional.hs+2 data/examples/declaration/value/pattern-synonyms/explicitely-bidirectional-out.hs+6 data/examples/declaration/value/pattern-synonyms/explicitely-bidirectional.hs+4 data/examples/declaration/value/pattern-synonyms/unidirectional-out.hs+2 data/examples/declaration/value/pattern-synonyms/unidirectional.hs+2 src/Ormolu/Printer/Meat/Declaration/Value.hs+8−4
data/examples/declaration/value/pattern-synonyms/bidirectional-out.hs+4
@@ -1,6 +1,10 @@
1+{-# LANGUAGE PatternSynonyms #-}
2+
13pattern Arrow t1 t2 = App "->" [t1, t2]
4+
25pattern Int =
36 App "Int" []
7+
48pattern Maybe t =
59 App
610 "Maybe"
data/examples/declaration/value/pattern-synonyms/bidirectional.hs+2
@@ -1,3 +1,5 @@
1+{-# LANGUAGE PatternSynonyms #-}
2+
13pattern Arrow t1 t2 = App "->" [t1, t2]
24pattern Int =
35 App "Int" []
data/examples/declaration/value/pattern-synonyms/explicitely-bidirectional-out.hs+6
@@ -9,3 +9,9 @@ pattern HeadC' x <-
99 x : xs
1010 where
1111 HeadC' x = [x]
12+
13+pattern Simple <-
14+ "Simple"
15+ where
16+ Simple =
17+ "Complicated"
data/examples/declaration/value/pattern-synonyms/explicitely-bidirectional.hs+4
@@ -7,3 +7,7 @@ pattern HeadC' x <-
77 x:xs
88 where
99 HeadC' x = [x]
10+
11+pattern Simple <- "Simple"
12+ where
13+ Simple = "Complicated"
data/examples/declaration/value/pattern-synonyms/unidirectional-out.hs+2
@@ -4,3 +4,5 @@ pattern Head x <- x : xs
44
55pattern Head' x <-
66 x : xs
7+
8+pattern Simple <- "Simple"
data/examples/declaration/value/pattern-synonyms/unidirectional.hs+2
@@ -4,3 +4,5 @@ pattern Head x <- x:xs
44
55pattern Head' x
66 <- x:xs
7+
8+pattern Simple <- "Simple"
src/Ormolu/Printer/Meat/Declaration/Value.hs+8−4
@@ -575,24 +575,28 @@ p_hsExpr = \case
575575p_patSynBind :: PatSynBind GhcPs GhcPs -> R ()
576576p_patSynBind PSB {..} = do
577577 txt "pattern "
578+ let nonEmptySynDetails = \case
579+ PrefixCon (_:_) -> True
580+ RecCon (_:_) -> True
581+ _ -> False
578582 case psb_dir of
579583 Unidirectional -> do
580584 p_rdrName psb_id
581− space
585+ when (nonEmptySynDetails psb_args) space
582586 p_patSynDetails psb_args
583587 txt " <-"
584588 breakpoint
585589 inci (located psb_def p_pat)
586590 ImplicitBidirectional -> do
587591 p_rdrName psb_id
588− space
592+ when (nonEmptySynDetails psb_args) space
589593 p_patSynDetails psb_args
590594 txt " ="
591595 breakpoint
592− located psb_def p_pat
596+ inci (located psb_def p_pat)
593597 ExplicitBidirectional mgroup -> do
594598 p_rdrName psb_id
595− space
599+ when (nonEmptySynDetails psb_args) space
596600 p_patSynDetails psb_args
597601 txt " <-"
598602 breakpoint