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