summaryrefslogtreecommitdiff
path: root/compiler/iface/ToIface.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/iface/ToIface.hs')
-rw-r--r--compiler/iface/ToIface.hs10
1 files changed, 8 insertions, 2 deletions
diff --git a/compiler/iface/ToIface.hs b/compiler/iface/ToIface.hs
index aa4e53cfb4..535c1080f2 100644
--- a/compiler/iface/ToIface.hs
+++ b/compiler/iface/ToIface.hs
@@ -309,8 +309,14 @@ toIfaceAppArgsX fr kind ty_args
t' = toIfaceTypeX fr t
ts' = go (extendTCvSubst env tv t) res ts
- go env (FunTy { ft_res = res }) (t:ts) -- No type-class args in tycon apps
- = IA_Arg (toIfaceTypeX fr t) Required (go env res ts)
+ go env (FunTy { ft_af = af, ft_res = res }) (t:ts)
+ = IA_Arg (toIfaceTypeX fr t) argf (go env res ts)
+ where
+ argf = case af of
+ VisArg -> Required
+ InvisArg -> Inferred
+ -- It's rare for a kind to have a constraint argument, but
+ -- it can happen. See Note [AnonTCB InvisArg] in TyCon.
go env ty ts@(t1:ts1)
| not (isEmptyTCvSubst env)