[commit: ghc] master: More tc-tracing (03d7268)
git at git.haskell.org
git at git.haskell.org
Tue Jul 10 11:45:28 UTC 2018
Repository : ssh://git@git.haskell.org/ghc
On branch : master
Link : http://ghc.haskell.org/trac/ghc/changeset/03d726837ad3a73133fee26de86dd57544f2d757/ghc
>---------------------------------------------------------------
commit 03d726837ad3a73133fee26de86dd57544f2d757
Author: Simon Peyton Jones <simonpj at microsoft.com>
Date: Mon Jul 9 17:27:47 2018 +0100
More tc-tracing
And I added some HasDebugCallStack constraints to tcExpectedKind
and related functions too.
>---------------------------------------------------------------
03d726837ad3a73133fee26de86dd57544f2d757
compiler/typecheck/TcExpr.hs | 2 ++
compiler/typecheck/TcHsType.hs | 10 +++++++---
compiler/typecheck/TcTyClsDecls.hs | 14 ++++++++------
3 files changed, 17 insertions(+), 9 deletions(-)
diff --git a/compiler/typecheck/TcExpr.hs b/compiler/typecheck/TcExpr.hs
index c638ab9..47e3bc4 100644
--- a/compiler/typecheck/TcExpr.hs
+++ b/compiler/typecheck/TcExpr.hs
@@ -1350,7 +1350,9 @@ tcArgs fun orig_fun_ty fun_orig orig_args herald
; traceTc "VTA" (vcat [ppr tv, debugPprType kind
, debugPprType ty_arg
, debugPprType (typeKind ty_arg)
+ , debugPprType inner_ty
, debugPprType insted_ty ])
+
; (inner_wrap, args', res_ty)
<- go acc_args (n+1) insted_ty args
-- inner_wrap :: insted_ty "->" (map typeOf args') -> res_ty
diff --git a/compiler/typecheck/TcHsType.hs b/compiler/typecheck/TcHsType.hs
index 463c7e0..624e920 100644
--- a/compiler/typecheck/TcHsType.hs
+++ b/compiler/typecheck/TcHsType.hs
@@ -837,7 +837,7 @@ tcWildCardOcc wc_info exp_kind
---------------------------
-- | Call 'tc_infer_hs_type' and check its result against an expected kind.
-tc_infer_hs_type_ek :: TcTyMode -> HsType GhcRn -> TcKind -> TcM TcType
+tc_infer_hs_type_ek :: HasDebugCallStack => TcTyMode -> HsType GhcRn -> TcKind -> TcM TcType
tc_infer_hs_type_ek mode hs_ty ek
= do { (ty, k) <- tc_infer_hs_type mode hs_ty
; checkExpectedKind hs_ty ty k ek }
@@ -1004,7 +1004,8 @@ tcTyApps mode orig_hs_ty fun_ty fun_ki args
--------------------------
-- Like checkExpectedKindX, but returns only the final type; convenient wrapper
-- Obeys Note [The tcType invariant]
-checkExpectedKind :: HsType GhcRn -- type we're checking (for printing)
+checkExpectedKind :: HasDebugCallStack
+ => HsType GhcRn -- type we're checking (for printing)
-> TcType -- type we're checking (might be knot-tied)
-> TcKind -- the known kind of that type
-> TcKind -- the expected kind
@@ -1012,7 +1013,8 @@ checkExpectedKind :: HsType GhcRn -- type we're checking (for printing)
checkExpectedKind hs_ty ty act exp
= fstOf3 <$> checkExpectedKindX Nothing (ppr hs_ty) ty act exp
-checkExpectedKindX :: Maybe (VarEnv Kind) -- Possibly, instantiations for kind vars
+checkExpectedKindX :: HasDebugCallStack
+ => Maybe (VarEnv Kind) -- Possibly, instantiations for kind vars
-> SDoc -- HsType whose kind we're checking
-> TcType -- the type whose kind we're checking
-> TcKind -- the known kind of that type, k
@@ -2712,6 +2714,7 @@ tcLHsKindSig ctxt hs_kind
-- See Note [Recipe for checking a signature] in TcHsType
= do { kind <- solveLocalEqualities $
tc_lhs_kind kindLevelMode hs_kind
+ ; traceTc "tcLHsKindSig" (ppr kind)
; kind <- zonkPromoteType kind
-- This zonk is very important in the case of higher rank kinds
-- E.g. Trac #13879 f :: forall (p :: forall z (y::z). <blah>).
@@ -2721,6 +2724,7 @@ tcLHsKindSig ctxt hs_kind
-- else we may fail to substitute properly
; checkValidType ctxt kind
+ ; traceTc "tcLHsKindSig2" (ppr kind)
; return kind }
tc_lhs_kind :: TcTyMode -> LHsKind GhcRn -> TcM Kind
diff --git a/compiler/typecheck/TcTyClsDecls.hs b/compiler/typecheck/TcTyClsDecls.hs
index a1c3d43..f212fdd 100644
--- a/compiler/typecheck/TcTyClsDecls.hs
+++ b/compiler/typecheck/TcTyClsDecls.hs
@@ -1563,17 +1563,17 @@ kcFamTyPats :: TcTyCon
kcFamTyPats tc_fam_tc tv_names arg_pats kind_checker
= discardResult $
kcImplicitTKBndrs tv_names $
- do { let loc = nameSrcSpan name
- lhs_fun = L loc (HsTyVar noExt NotPromoted (L loc name))
- -- lhs_fun is for error messages only
- no_fun = pprPanic "kcFamTyPats" (ppr name)
+ do { let name = tyConName tc_fam_tc
+ loc = nameSrcSpan name
+ lhs_fun = L loc (HsTyVar noExt NotPromoted (L loc name))
+ -- lhs_fun is for error messages only
+ no_fun = pprPanic "kcFamTyPats" (ppr name)
fun_kind = tyConKind tc_fam_tc
; (_, _, res_kind_out) <- tcInferApps typeLevelMode Nothing lhs_fun no_fun
fun_kind arg_pats
+ ; traceTc "kcFamTyPats" (vcat [ ppr tc_fam_tc, ppr arg_pats, ppr res_kind_out ])
; kind_checker res_kind_out }
- where
- name = tyConName tc_fam_tc
tcFamTyPats :: TyCon
-> Maybe ClsInstInfo
@@ -1628,6 +1628,8 @@ tcFamTyPats fam_tc mb_clsinfo
<- tcInferApps typeLevelMode mb_kind_env
lhs_fun fun_ty fun_kind arg_pats
+ ; traceTc "tcFamTyPats 1" (vcat [ ppr fam_tc, ppr arg_pats, ppr res_kind_out ])
+
; stuff <- kind_checker res_kind_out
; return (args, stuff) }
More information about the ghc-commits
mailing list