@@ -10,7 +10,7 @@ module Ormolu.Printer.Meat.Declaration.Signature
13−import BasicTypes (Fixity (..))
13+import BasicTypes
14import Control.Monad
14import Control.Monad
16import Ormolu.Printer.Combinators
16import Ormolu.Printer.Combinators
@@ -26,6 +26,7 @@ p_sigDecl' = \case
26 TypeSig NoExt names hswc -> p_typeSig names hswc
26 TypeSig NoExt names hswc -> p_typeSig names hswc
27 ClassOpSig NoExt def names hsib -> p_classOpSig def names hsib
27 ClassOpSig NoExt def names hsib -> p_classOpSig def names hsib
28 FixSig NoExt sig -> p_fixSig sig
28 FixSig NoExt sig -> p_fixSig sig
29+ InlineSig NoExt name inlinePragma -> p_inlineSig name inlinePragma
29 _ -> notImplemented "certain types of signature declarations"
30 _ -> notImplemented "certain types of signature declarations"
@@ -63,3 +64,27 @@ p_fixSig = \case
64 sequence_ (withSep comma p_rdrName names)
65 sequence_ (withSep comma p_rdrName names)
65 XFixitySig NoExt -> notImplemented "XFixitySig"
66 XFixitySig NoExt -> notImplemented "XFixitySig"
69+ :: Located RdrName -- ^ Name
70+ -> InlinePragma -- ^ Inline pragma specification
72+p_inlineSig name InlinePragma {..} = do
74+ txt $ case inl_inline of
76+ Inlinable -> "INLINEABLE"
77+ NoInline -> "NOINLINE"
78+ NoUserInline -> notImplemented "NoUserInline"
81+ NeverActive -> return ()
82+ AlwaysActive -> return ()
83+ ActiveBefore _ n -> do
84+ brackets (txt "~" >> atom n)
86+ ActiveAfter _ n -> do