
#15552: Infinite loop/panic with an existential type. -------------------------------------+------------------------------------- Reporter: howtonotwin | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: 8.6.1 Component: Compiler | Version: 8.4.3 Resolution: | Keywords: TypeInType, | TypeFamilies Operating System: Unknown/Multiple | Architecture: Type of failure: Compile-time | Unknown/Multiple crash or panic | Test Case: Blocked By: | Blocking: Related Tickets: #14723 | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by simonpj): It's not #15473. Something to do with zonking the type in `tcyFamInstEqn` {{{ tcTyFamInstEqn fam_tc mb_clsinfo (L loc (HsIB { hsib_ext = tv_names , hsib_body = FamEqn { feqn_tycon = L _ eqn_tc_name , feqn_pats = pats , feqn_rhs = hs_ty }})) = ASSERT( getName fam_tc == eqn_tc_name ) setSrcSpan loc $ tcFamTyPats fam_tc mb_clsinfo tv_names pats (kcTyFamEqnRhs mb_clsinfo hs_ty) $ \tvs pats res_kind -> do { traceTc "tcTyFamInstEqn {" (ppr eqn_tc_name <+> ppr pats) ; rhs_ty <- solveEqualities $ tcCheckLHsType hs_ty res_kind ; traceTc "tcTyFamInstEqn 1" (ppr eqn_tc_name <+> ppr pats) ; (ze, tvs') <- zonkTyBndrsX emptyZonkEnv tvs ; traceTc "tcTyFamInstEqn 2" (ppr eqn_tc_name <+> ppr pats) ; pats' <- zonkTcTypeToTypes ze pats ; traceTc "tcTyFamInstEqn 3" (ppr eqn_tc_name <+> ppr pats $$ ppr rhs_ty) ; rhs_ty' <- zonkTcTypeToType ze rhs_ty ; traceTc "tcTyFamInstEqn 4" (ppr fam_tc <+> pprTyVars tvs') ; return (mkCoAxBranch tvs' [] pats' rhs_ty' }}} We get to "3" but not to "4". -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/15552#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler