on master help sign in
Insert newlines after annotations in certain cases
057977dmrkkrp
data/examples/declaration/annotation/annotation-out.hs+9−1
@@ -1,12 +1,20 @@
1{-# ANN module (5 :: Int) #-}
1{-# ANN module (5 :: Int) #-}
2+
2{-# ANN
3{-# ANN
3 module
4 module
4 ( 5
5 ( 5
5 :: Int
6 :: Int
6 )
7 )
7 #-}
8 #-}
9+
8{-# ANN foo "hey" #-}
10{-# ANN foo "hey" #-}
11+foo :: Int
12+foo = 5
13+
9{-# ANN
14{-# ANN
10 Char
15 Char
11 (Just 42)
16 (Just 42)
17+ #-}
18+
19+data Foo = Foo Int
12− #-}{- Comment -}
20+{- Comment -}
data/examples/declaration/annotation/annotation.hs+6−2
@@ -5,10 +5,14 @@
5
5
6{-# ANN foo "hey" #-}
6{-# ANN foo "hey" #-}
7
7
8−{-# ANN
8+foo :: Int
9− Char
9+foo = 5
10
10
11+{-# ANN
12+ Char
11
13
12 (Just 42)#-}
14 (Just 42)#-}
13
15
16+data Foo = Foo Int
17+
14{- Comment -}
18{- Comment -}
src/Ormolu/Printer/Meat/Declaration.hs+7−1
@@ -110,18 +110,24 @@ isPragma = \case
110 InlinePragma n -> Just n
110 InlinePragma n -> Just n
111 SpecializePragma n -> Just n
111 SpecializePragma n -> Just n
112 SCCPragma n -> Just n
112 SCCPragma n -> Just n
113+ AnnTypePragma n -> Just n
114+ AnnValuePragma n -> Just n
113 _ -> Nothing
115 _ -> Nothing
114
116
115pattern TypeSignature
117pattern TypeSignature
116 , FunctionBody
118 , FunctionBody
117 , InlinePragma
119 , InlinePragma
118 , SpecializePragma
120 , SpecializePragma
121+ , SCCPragma
122+ , AnnTypePragma
119− , SCCPragma :: RdrName -> HsDecl GhcPs
123+ , AnnValuePragma :: RdrName -> HsDecl GhcPs
120pattern TypeSignature n <- (sigRdrName -> Just n)
124pattern TypeSignature n <- (sigRdrName -> Just n)
121pattern FunctionBody n <- ValD NoExt (FunBind NoExt (L _ n) _ _ _)
125pattern FunctionBody n <- ValD NoExt (FunBind NoExt (L _ n) _ _ _)
122pattern InlinePragma n <- SigD NoExt (InlineSig NoExt (L _ n) _)
126pattern InlinePragma n <- SigD NoExt (InlineSig NoExt (L _ n) _)
123pattern SpecializePragma n <- SigD NoExt (SpecSig NoExt (L _ n) _ _)
127pattern SpecializePragma n <- SigD NoExt (SpecSig NoExt (L _ n) _ _)
124pattern SCCPragma n <- SigD NoExt (SCCFunSig NoExt _ (L _ n) _)
128pattern SCCPragma n <- SigD NoExt (SCCFunSig NoExt _ (L _ n) _)
129+pattern AnnTypePragma n <- AnnD NoExt (HsAnnotation NoExt _ (TypeAnnProvenance (L _ n)) _)
130+pattern AnnValuePragma n <- AnnD NoExt (HsAnnotation NoExt _ (ValueAnnProvenance (L _ n)) _)
125
131
126sigRdrName :: HsDecl GhcPs -> Maybe RdrName
132sigRdrName :: HsDecl GhcPs -> Maybe RdrName
127sigRdrName (SigD NoExt (TypeSig NoExt ((L _ n):_) _)) = Just n
133sigRdrName (SigD NoExt (TypeSig NoExt ((L _ n):_) _)) = Just n
src/Ormolu/Printer/Meat/Declaration/Annotation.hs+1−1
@@ -14,7 +14,7 @@ import Ormolu.Utils
14
14
15p_annDecl :: AnnDecl GhcPs -> R ()
15p_annDecl :: AnnDecl GhcPs -> R ()
16p_annDecl = \case
16p_annDecl = \case
17− HsAnnotation NoExt _ annProv expr -> pragma "ANN" $ do
17+ HsAnnotation NoExt _ annProv expr -> line . pragma "ANN" $ do
18 p_annProv annProv
18 p_annProv annProv
19 breakpoint
19 breakpoint
20 located expr p_hsExpr
20 located expr p_hsExpr