typechecker: fix trac issue #11708
authorCsongor Kiss <kiss.csongor.kiss@gmail.com>
Wed, 16 Mar 2016 19:26:59 +0000 (15:26 -0400)
committerRichard Eisenberg <eir@cis.upenn.edu>
Thu, 17 Mar 2016 14:07:22 +0000 (10:07 -0400)
Summary: Fixes T11708

Reviewers: austin, bgamari, goldfire, simonpj

Reviewed By: goldfire, simonpj

Subscribers: simonpj, goldfire, thomie

Differential Revision: https://phabricator.haskell.org/D2006

GHC Trac Issues: #11708

compiler/typecheck/TcHsType.hs

index f931073..37a8675 100644 (file)
@@ -938,8 +938,11 @@ tcTyVar mode name         -- Could be a tyvar, a tycon, or a datacon
 
       | otherwise
       = do { (tc_ty, kind) <- instantiateTyN 0 ty tc_kind
-           ; traceTc "tcTyVar2b" (vcat [ ppr tc <+> dcolon <+> ppr tc_kind
-                                       , ppr tc_ty $$ ppr kind ])
+           -- tc and tc_ty must not be traced here, because that would
+           -- force the evaluation of a potentially knot-tied variable (tc),
+           -- and the typechecker would hang, as per #11708
+           ; traceTc "tcTyVar2b" (vcat [ ppr tc_tc <+> dcolon <+> ppr tc_kind
+                                       , ppr kind ])
            ; return (tc_ty, kind) }
       where
         ty      = mkNakedTyConApp tc []