on master help sign in
Preserve operators promotion (single quote)
8d52d87gabriele.lana
data/examples/declaration/signature/type/infix-promoted-type-constructor-out.hs+2−2
@@ -1,3 +1,3 @@
1−fun1 :: Def ('[Ref s (Stored Uint32), IBool] T.:-> IBool)
1+fun1 :: Def ('[Ref s (Stored Uint32), IBool] 'T.:-> IBool)
2
2
3−fun2 :: Def ('[Ref s (Stored Uint32), IBool] :-> IBool)
3+fun2 :: Def ('[Ref s (Stored Uint32), IBool] ':-> IBool)
src/Ormolu/Printer/Meat/Common.hs+9−3
@@ -49,7 +49,6 @@ p_ieWrappedName = \case
49p_rdrName :: Located RdrName -> R ()
49p_rdrName :: Located RdrName -> R ()
50p_rdrName l@(L spn _) = located l $ \x -> do
50p_rdrName l@(L spn _) = located l $ \x -> do
51 ids <- getAnns spn
51 ids <- getAnns spn
52− -- NOTE Right now we're mainly interested in backticks and parentheses.
53 let backticksWrapper =
52 let backticksWrapper =
54 if AnnBackquote `elem` ids
53 if AnnBackquote `elem` ids
55 then backticks
54 then backticks
@@ -58,6 +57,12 @@ p_rdrName l@(L spn _) = located l $ \x -> do
58 if AnnOpenP `elem` ids
57 if AnnOpenP `elem` ids
59 then parens
58 then parens
60 else id
59 else id
60+ singleQuoteWrapper =
61+ if AnnSimpleQuote `elem` ids
62+ then \y -> do
63+ txt "'"
64+ y
65+ else id
61 (m, avoidParens) =
66 (m, avoidParens) =
62 case x of
67 case x of
63 Unqual occName ->
68 Unqual occName ->
@@ -80,9 +85,10 @@ p_rdrName l@(L spn _) = located l $ \x -> do
80 ( atom name
85 ( atom name
81 , "$ghc-prim$GHC.Tuple$" `isPrefixOf` nameStableString name
86 , "$ghc-prim$GHC.Tuple$" `isPrefixOf` nameStableString name
82 )
87 )
88+ m' = backticksWrapper (singleQuoteWrapper m)
83 if avoidParens
89 if avoidParens
84− then m
90+ then m'
85− else parensWrapper (backticksWrapper m)
91+ else parensWrapper m'
86
92
87p_qualName :: ModuleName -> OccName -> R ()
93p_qualName :: ModuleName -> OccName -> R ()
88p_qualName mname occName = do
94p_qualName mname occName = do