+------------------------------------------
+-- Pragmas
+------------------------------------------
+
+cvtPragmaD :: Pragma -> CvtM (Sig RdrName)
+cvtPragmaD (InlineP nm ispec)
+ = do { nm' <- vNameL nm
+ ; return $ InlineSig nm' (cvtInlineSpec (Just ispec))
+ }
+cvtPragmaD (SpecialiseP nm ty opt_ispec)
+ = do { nm' <- vNameL nm
+ ; ty' <- cvtType ty
+ ; return $ SpecSig nm' ty' (cvtInlineSpec opt_ispec)
+ }
+
+cvtInlineSpec :: Maybe TH.InlineSpec -> Hs.InlineSpec
+cvtInlineSpec Nothing
+ = defaultInlineSpec
+cvtInlineSpec (Just (TH.InlineSpec inline conlike opt_activation))
+ = mkInlineSpec opt_activation' matchinfo inline
+ where
+ matchinfo = cvtRuleMatchInfo conlike
+ opt_activation' = fmap cvtActivation opt_activation
+
+ cvtRuleMatchInfo False = FunLike
+ cvtRuleMatchInfo True = ConLike
+
+ cvtActivation (False, phase) = ActiveBefore phase
+ cvtActivation (True , phase) = ActiveAfter phase