Fix the in-scope set in TcHsType.instantiateTyN
authorSimon Peyton Jones <simonpj@microsoft.com>
Wed, 28 Jun 2017 11:32:48 +0000 (12:32 +0100)
committerSimon Peyton Jones <simonpj@microsoft.com>
Wed, 28 Jun 2017 11:32:48 +0000 (12:32 +0100)
See Trac #13879

compiler/typecheck/TcHsType.hs

index 46b306d..7c8a89a 100644 (file)
@@ -929,11 +929,16 @@ instantiateTyN n ty ki
         num_to_inst                  = length bndrs - n
            -- NB: splitAt is forgiving with invalid numbers
         (inst_bndrs, leftover_bndrs) = splitAt num_to_inst bndrs
+        empty_subst = mkEmptyTCvSubst (mkInScopeSet (tyCoVarsOfType ki))
     in
     if num_to_inst <= 0 then return (ty, ki) else
-    do { (subst, inst_args) <- tcInstBinders inst_bndrs
+    do { (subst, inst_args) <- tcInstBindersX empty_subst Nothing inst_bndrs
        ; let rebuilt_ki = mkPiTys leftover_bndrs inner_ki
              ki'        = substTy subst rebuilt_ki
+       ; traceTc "instantiateTyN" (vcat [ ppr ty <+> dcolon <+> ppr ki
+                                        , ppr subst
+                                        , ppr rebuilt_ki
+                                        , ppr ki' ])
        ; return (mkNakedAppTys ty inst_args, ki') }
 
 ---------------------------