import OccName
import SrcLoc
import Type
+import Coercion
import TysWiredIn
import BasicTypes as Hs
import ForeignCall
; ty' <- cvtType ty
; return $ SpecSig nm' ty' (cvtInlineSpec opt_ispec) }
-cvtInlineSpec :: Maybe TH.InlineSpec -> Hs.InlineSpec
+cvtInlineSpec :: Maybe TH.InlineSpec -> Hs.InlinePragma
cvtInlineSpec Nothing
- = defaultInlineSpec
+ = defaultInlinePragma
cvtInlineSpec (Just (TH.InlineSpec inline conlike opt_activation))
- = mkInlineSpec opt_activation' matchinfo inline
+ = InlinePragma { inl_act = opt_activation', inl_rule = matchinfo
+ , inl_inline = inline, inl_sat = Nothing }
where
matchinfo = cvtRuleMatchInfo conlike
- opt_activation' = fmap cvtActivation opt_activation
+ opt_activation' = cvtActivation opt_activation
cvtRuleMatchInfo False = FunLike
cvtRuleMatchInfo True = ConLike
- cvtActivation (False, phase) = ActiveBefore phase
- cvtActivation (True , phase) = ActiveAfter phase
+ cvtActivation Nothing | inline = AlwaysActive
+ | otherwise = NeverActive
+ cvtActivation (Just (False, phase)) = ActiveBefore phase
+ cvtActivation (Just (True , phase)) = ActiveAfter phase
---------------------------------------------------
-- Declarations
cvt_tv :: TH.TyVarBndr -> CvtM (LHsTyVarBndr RdrName)
cvt_tv (TH.PlainTV nm)
= do { nm' <- tName nm
- ; returnL $ UserTyVar nm'
+ ; returnL $ UserTyVar nm' placeHolderKind
}
cvt_tv (TH.KindedTV nm ki)
= do { nm' <- tName nm