diff options
Diffstat (limited to 'compiler/hieFile/HieUtils.hs')
-rw-r--r-- | compiler/hieFile/HieUtils.hs | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/compiler/hieFile/HieUtils.hs b/compiler/hieFile/HieUtils.hs index 5259ea1280..9231317bd0 100644 --- a/compiler/hieFile/HieUtils.hs +++ b/compiler/hieFile/HieUtils.hs @@ -63,7 +63,7 @@ resolveVisibility kind ty_args where ts' = go (extendTvSubst env tv t) res ts - go env (FunTy _ res) (t:ts) -- No type-class args in tycon apps + go env (FunTy { ft_res = res }) (t:ts) -- No type-class args in tycon apps = (True,t) : (go env res ts) go env (TyVarTy tv) ts @@ -81,8 +81,8 @@ hieTypeToIface = foldType go go (HLitTy l) = IfaceLitTy l go (HForAllTy ((n,k),af) t) = let b = (occNameFS $ getOccName n, k) in IfaceForAllTy (Bndr (IfaceTvBndr b) af) t - go (HFunTy a b) = IfaceFunTy a b - go (HQualTy pred b) = IfaceDFunTy pred b + go (HFunTy a b) = IfaceFunTy VisArg a b + go (HQualTy pred b) = IfaceFunTy InvisArg pred b go (HCastTy a) = a go HCoercionTy = IfaceTyVar "<coercion type>" go (HTyConApp a xs) = IfaceTyConApp a (hieToIfaceArgs xs) @@ -158,12 +158,12 @@ getTypeIndex t k <- getTypeIndex (varType v) i <- getTypeIndex t return $ HForAllTy ((varName v,k),a) i - go (FunTy a b) = do + go (FunTy { ft_af = af, ft_arg = a, ft_res = b }) = do ai <- getTypeIndex a bi <- getTypeIndex b - return $ if isPredTy a - then HQualTy ai bi - else HFunTy ai bi + return $ case af of + InvisArg -> HQualTy ai bi + VisArg -> HFunTy ai bi go (LitTy a) = return $ HLitTy $ toIfaceTyLit a go (CastTy t _) = do i <- getTypeIndex t |