@@ -10,7 +10,7 @@ module Ormolu.Printer.Meat.Declaration.Signature
1010 )
1111where
1212
13−import BasicTypes (Fixity (..))
13+import BasicTypes
1414import Control.Monad
1515import GHC
1616import Ormolu.Printer.Combinators
@@ -26,6 +26,7 @@ p_sigDecl' = \case
2626 TypeSig NoExt names hswc -> p_typeSig names hswc
2727 ClassOpSig NoExt def names hsib -> p_classOpSig def names hsib
2828 FixSig NoExt sig -> p_fixSig sig
29+ InlineSig NoExt name inlinePragma -> p_inlineSig name inlinePragma
2930 _ -> notImplemented "certain types of signature declarations"
3031
3132p_typeSig
@@ -63,3 +64,27 @@ p_fixSig = \case
6364 space
6465 sequence_ (withSep comma p_rdrName names)
6566 XFixitySig NoExt -> notImplemented "XFixitySig"
67+
68+p_inlineSig
69+ :: Located RdrName -- ^ Name
70+ -> InlinePragma -- ^ Inline pragma specification
71+ -> R ()
72+p_inlineSig name InlinePragma {..} = do
73+ txt "{-# "
74+ txt $ case inl_inline of
75+ Inline -> "INLINE"
76+ Inlinable -> "INLINEABLE"
77+ NoInline -> "NOINLINE"
78+ NoUserInline -> notImplemented "NoUserInline"
79+ space
80+ case inl_act of
81+ NeverActive -> return ()
82+ AlwaysActive -> return ()
83+ ActiveBefore _ n -> do
84+ brackets (txt "~" >> atom n)
85+ space
86+ ActiveAfter _ n -> do
87+ brackets (atom n)
88+ space
89+ p_rdrName name
90+ txt " #-}"