@@ -1,3 +1,4 @@
1+{-# LANGUAGE LambdaCase #-}
1{-# LANGUAGE OverloadedStrings #-}
2{-# LANGUAGE OverloadedStrings #-}
2{-# LANGUAGE PatternSynonyms #-}
3{-# LANGUAGE PatternSynonyms #-}
3{-# LANGUAGE RecordWildCards #-}
4{-# LANGUAGE RecordWildCards #-}
@@ -9,8 +10,10 @@ module Ormolu.Printer.Meat.Module
13+import BasicTypes hiding (InlinePragma)
12import Control.Monad
14import Control.Monad
13import Data.Maybe (isJust)
15import Data.Maybe (isJust)
16+import Data.Text (Text)
15import Ormolu.Imports
18import Ormolu.Imports
16import Ormolu.Printer.Combinators
19import Ormolu.Printer.Combinators
@@ -35,6 +38,7 @@ p_hsModule loc@(L moduleSpan hsModule) = do
35 Nothing -> pure ()
38 Nothing -> pure ()
36 Just hsmodName' -> line $ do
39 Just hsmodName' -> line $ do
37 located hsmodName' p_hsmodName
40 located hsmodName' p_hsmodName
41+ maybe (pure ()) (located' p_warningTxt) hsmodDeprecMessage
38 case hsmodExports of
42 case hsmodExports of
39 Nothing -> return ()
43 Nothing -> return ()
40 Just hsmodExports' -> do
44 Just hsmodExports' -> do
@@ -59,6 +63,26 @@ p_hsModule loc@(L moduleSpan hsModule) = do
59 when (trailingComments && isJust hsmodName) newline
63 when (trailingComments && isJust hsmodName) newline
60 spitRemainingComments
64 spitRemainingComments
66+-- | Layout the WARNING/DEPRECATED pragmas in the module head
68+p_warningTxt :: WarningTxt -> R ()
70+ WarningTxt _ lits -> p_pragma "WARNING" lits
71+ DeprecatedTxt _ lits -> p_pragma "DEPRECATED" lits
73+ p_pragma :: Text -> [Located StringLiteral] -> R ()
74+ p_pragma pragmaText lits = switchLayout (litsSpan lits) $ do
76+ inci $ pragma (litsSpan lits) pragmaText (p_lits lits)
78+ litsSpan :: [Located StringLiteral] -> SrcSpan
79+ litsSpan lits = combineSrcSpans (getLoc $ head lits) (getLoc $ last lits)
81+ p_lits :: [Located StringLiteral] -> R ()
84+ ls -> brackets . velt $ withSep comma atom ls
62-- | Determine if these declarations should be separated by a blank line.
86-- | Determine if these declarations should be separated by a blank line.
64separatedDecls
88separatedDecls