diff --git a/ghc/compiler/typecheck/TcIfaceSig.lhs b/ghc/compiler/typecheck/TcIfaceSig.lhs index 1646bfb3a0a4441d69e3882190db3570b9e6e405..000386fc1eb443381850efaf9d0e9bd6f2b0419d 100644 --- a/ghc/compiler/typecheck/TcIfaceSig.lhs +++ b/ghc/compiler/typecheck/TcIfaceSig.lhs @@ -101,8 +101,12 @@ tcIdInfo unf_env name ty info info_ins = tcStrictness unf_env ty info strict tcPrag info (HsSpecialise tyvars tys rhs) - = tcTyVarScope tyvars $ \ tyvars' -> - mapTc tcHsType tys `thenTc` \ tys' -> + = tcTyVarScope tyvars $ \ tyvars' -> + mapAndUnzipTc tcHsTypeKind tys `thenTc` \ (kinds, tys') -> + -- Assume that the kinds match the kinds of the + -- type variables of the function; this is, after all, an + -- interface file generated by the compiler! + tcPragExpr unf_env name rhs `thenNF_Tc` \ maybe_rhs' -> let -- If spec_env isn't looked at, none of this