
#13959: substTyVar's definition is highly dubious -------------------------------------+------------------------------------- Reporter: RyanGlScott | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by RyanGlScott): Here's a much more detailed stack trace when compiling `Data.Type.Equality`: {{{ $ inplace/bin/ghc-stage2 -fforce-recomp -O2 -DDEBUG -dcore-lint Bug.hs [1 of 1] Compiling Data.Type.Equality ( Bug.hs, Bug.o ) ghc-stage2: panic! (the 'impossible' happened) (GHC version 8.3.20170712 for x86_64-unknown-linux): ASSERT failed! in_scope InScope {k1_X49O a_X49V b_X49X} tenv [X49T :-> k1_X49O, X49V :-> a_X49V, X49X :-> b_X49X] tenvFVs [X49M :-> k2_X49M, X49O :-> k1_X49O, X49V :-> a_X49V, X49X :-> b_X49X] cenv [] cenvFVs [] tys [*] cos [] Call stack: CallStack (from HasCallStack): prettyCurrentCallStack, called at compiler/utils/Outputable.hs:1133:58 in ghc:Outputable callStackDoc, called at compiler/utils/Outputable.hs:1188:22 in ghc:Outputable assertPprPanic, called at compiler/types/TyCoRep.hs:2089:56 in ghc:TyCoRep checkValidSubst, called at compiler/types/TyCoRep.hs:2122:29 in ghc:TyCoRep substTy, called at compiler/types/TyCoRep.hs:2198:44 in ghc:TyCoRep Call stack: CallStack (from HasCallStack): prettyCurrentCallStack, called at compiler/utils/Outputable.hs:1133:58 in ghc:Outputable callStackDoc, called at compiler/utils/Outputable.hs:1137:37 in ghc:Outputable pprPanic, called at compiler/utils/Outputable.hs:1186:5 in ghc:Outputable assertPprPanic, called at compiler/types/TyCoRep.hs:2089:56 in ghc:TyCoRep checkValidSubst, called at compiler/types/TyCoRep.hs:2122:29 in ghc:TyCoRep substTy, called at compiler/types/TyCoRep.hs:2198:44 in ghc:TyCoRep CallStack (from -prof): Panic.panic (compiler/utils/Panic.hs:(182,1)-(186,68)) Outputable.pprDebugAndThen (compiler/utils/Outputable.hs:(1191,1)-(1194,43)) ErrUtils.prettyPrintGhcErrors.\ (compiler/main/ErrUtils.hs:(658,23)-(666,44)) GhcMonad.gcatch.\.\ (compiler/main/GhcMonad.hs:117:46-63) Panic.throwGhcException (compiler/utils/Panic.hs:171:1-35) Panic.panicDoc (compiler/utils/Panic.hs:192:1-61) Outputable.pprPanic (compiler/utils/Outputable.hs:1137:1-49) Outputable.assertPprPanic (compiler/utils/Outputable.hs:(1185,1)-(1188,35)) TyCoRep.checkValidSubst (compiler/types/TyCoRep.hs:(2088,1)-(2113,57)) TyCoRep.substTy (compiler/types/TyCoRep.hs:(2120,1)-(2123,45)) Var.updateTyVarKind (compiler/basicTypes/Var.hs:456:1-64) TyCoRep.substTyVar (compiler/types/TyCoRep.hs:(2194,1)-(2198,61)) TyCoRep.subst_ty.go (compiler/types/TyCoRep.hs:(2176,5)-(2191,60)) TyCoRep.subst_ty (compiler/types/TyCoRep.hs:(2173,1)-(2191,60)) TyCoRep.subst_co.go_ty (compiler/types/TyCoRep.hs:2240:5-26) TyCoRep.subst_co.go (compiler/types/TyCoRep.hs:(2243,5)-(2264,66)) TyCoRep.subst_co (compiler/types/TyCoRep.hs:(2236,1)-(2270,36)) TyCoRep.substCoUnchecked (compiler/types/TyCoRep.hs:(2223,1)-(2225,33)) TyCoRep.substCoWithUnchecked (compiler/types/TyCoRep.hs:(2045,1)-(2047,41)) Coercion.mkInstCo (compiler/types/Coercion.hs:(950,1)-(952,31)) CoreOpt.pushCoTyArg.co2 (compiler/coreSyn/CoreOpt.hs:1012:5-62) CoreOpt.pushCoTyArg (compiler/coreSyn/CoreOpt.hs:(990,1)-(1012,62)) Simplify.simplCast.addCoerce (compiler/simplCore/Simplify.hs:(1427,8)-(1461,53)) Simplify.simplCast (compiler/simplCore/Simplify.hs:(1421,1)-(1461,53)) Simplify.rebuildCall (compiler/simplCore/Simplify.hs:(1761,1)-(1853,47)) Simplify.completeCall (compiler/simplCore/Simplify.hs:(1718,1)-(1749,60)) Simplify.simplIdF (compiler/simplCore/Simplify.hs:(1680,1)-(1712,53)) Simplify.simplExprC (compiler/simplCore/Simplify.hs:(1035,1)-(1041,42)) Simplify.simplExpr (compiler/simplCore/Simplify.hs:(1018,1)-(1026,45)) Simplify.simplLam (compiler/simplCore/Simplify.hs:(1501,1)-(1538,37)) Simplify.simplExprF1 (compiler/simplCore/Simplify.hs:(1064,1)-(1140,52)) Simplify.simplExprF (compiler/simplCore/Simplify.hs:(1049,1)-(1059,26)) Simplify.simplLazyBind (compiler/simplCore/Simplify.hs:(381,1)-(432,68)) Simplify.simplBind (compiler/simplCore/Simplify.hs:(362,1)-(368,58)) Simplify.simplRecOrTopPair.trace_bind (compiler/simplCore/Simplify.hs:(330,5)-(334,56)) Simplify.simplRecOrTopPair (compiler/simplCore/Simplify.hs:(321,1)-(334,56)) Simplify.simplTopBinds.simpl_bind (compiler/simplCore/Simplify.hs:(268,5)-(272,65)) Simplify.simplTopBinds.simpl_binds (compiler/simplCore/Simplify.hs:(264,5)-(266,64)) Simplify.simplTopBinds (compiler/simplCore/Simplify.hs:(248,1)-(272,65)) SimplCore.SimplTopBinds (compiler/simplCore/SimplCore.hs:758:29-64) SimplMonad.initSmpl (compiler/simplCore/SimplMonad.hs:(72,1)-(78,36)) SimplCore.simplifyPgmIO.do_iteration (compiler/simplCore/SimplCore.hs:(691,5)-(798,48)) SimplCore.simplifyPgmIO (compiler/simplCore/SimplCore.hs:(658,1)-(800,47)) IOEnv.liftIO (compiler/utils/IOEnv.hs:188:5-33) CoreMonad.liftIO (compiler/simplCore/CoreMonad.hs:615:5-37) CoreMonad.liftIOWithCount (compiler/simplCore/CoreMonad.hs:619:1-87) SimplCore.simplifyPgm (compiler/simplCore/SimplCore.hs:(644,1)-(649,48)) SimplCore.Simplify (compiler/simplCore/SimplCore.hs:456:40-55) SimplCore.doCorePass (compiler/simplCore/SimplCore.hs:(455,1)-(500,50)) SimplCore.runCorePasses.do_pass (compiler/simplCore/SimplCore.hs:(442,5)-(450,28)) SimplCore.runCorePasses (compiler/simplCore/SimplCore.hs:(439,1)-(452,24)) IOEnv.thenM.\ (compiler/utils/IOEnv.hs:(83,37)-(84,60)) IOEnv.thenM (compiler/utils/IOEnv.hs:(83,1)-(84,61)) CoreMonad.>>=.\ (compiler/simplCore/CoreMonad.hs:(524,30)-(528,38)) CoreMonad.>>= (compiler/simplCore/CoreMonad.hs:(524,5)-(528,38)) IOEnv.runIOEnv (compiler/utils/IOEnv.hs:127:1-30) CoreMonad.runCoreM (compiler/simplCore/CoreMonad.hs:(565,1)-(581,63)) SimplCore.core2core (compiler/simplCore/SimplCore.hs:(75,1)-(99,54)) HscTypes.liftIO.\ (compiler/main/HscTypes.hs:245:31-55) HscTypes.liftIO (compiler/main/HscTypes.hs:245:5-55) HscMain.Core2Core (compiler/main/HscMain.hs:1173:7-42) HscMain.hscSimplify' (compiler/main/HscMain.hs:(1170,1)-(1173,42)) HscMain.finish (compiler/main/HscMain.hs:(702,1)-(740,70)) HscTypes.>>=.\ (compiler/main/HscTypes.hs:(240,33)-(242,56)) HscTypes.>>= (compiler/main/HscTypes.hs:(240,5)-(242,56)) HscTypes.runHsc (compiler/main/HscTypes.hs:(251,1)-(254,12)) HscMain.hscIncrementalCompile (compiler/main/HscMain.hs:(644,1)-(690,60)) DriverPipeline.compileOne' (compiler/main/DriverPipeline.hs:(134,1)-(289,55)) GhcMake.upsweep_mod.compile_it_discard_iface (compiler/main/GhcMake.hs:(1436,13)-(1438,61)) GhcMake.upsweep_mod (compiler/main/GhcMake.hs:(1376,1)-(1532,49)) GhcMonad.liftIO (compiler/main/GhcMonad.hs:110:3-30) GhcMake.upsweep.upsweep' (compiler/main/GhcMake.hs:(1245,3)-(1344,91)) GhcMake.upsweep (compiler/main/GhcMake.hs:(1237,1)-(1344,91)) GhcMake.load'.upsweep_fn (compiler/main/GhcMake.hs:(389,9)-(390,41)) GhcMake.load' (compiler/main/GhcMake.hs:(242,1)-(490,38)) GhcMake.load (compiler/main/GhcMake.hs:(234,1)-(236,44)) Main.doMake (ghc/Main.hs:(695,1)-(720,13)) GhcMonad.gcatch.\ (compiler/main/GhcMonad.hs:117:19-63) GhcMonad.gcatch (compiler/main/GhcMonad.hs:(116,3)-(117,63)) ErrUtils.prettyPrintGhcErrors (compiler/main/ErrUtils.hs:(657,1)-(666,44)) Main.main' (ghc/Main.hs:(154,1)-(258,33)) GhcMonad.gmask.\.\.g_restore.\ (compiler/main/GhcMonad.hs:121:65-80) GhcMonad.gmask.\.\.g_restore (compiler/main/GhcMonad.hs:121:33-80) GhcMonad.gmask.\.\ (compiler/main/GhcMonad.hs:(120,30)-(123,53)) Exception.gmask.\ (compiler/utils/Exception.hs:64:27-29) Exception.gmask (compiler/utils/Exception.hs:64:3-30) GhcMonad.gmask.\ (compiler/main/GhcMonad.hs:(119,19)-(123,53)) GhcMonad.gmask (compiler/main/GhcMonad.hs:(118,3)-(123,53)) Exception.gfinally (compiler/utils/Exception.hs:(56,3)-(60,14)) GhcMonad.>>=.\ (compiler/main/GhcMonad.hs:107:26-57) GhcMonad.>>= (compiler/main/GhcMonad.hs:107:3-57) Panic.withSignalHandlers (compiler/utils/Panic.hs:(240,1)-(298,37)) GHC.runGhc (compiler/main/GHC.hs:(440,1)-(445,26)) Exception.gcatch (compiler/utils/Exception.hs:63:3-37) Exception.ghandle (compiler/utils/Exception.hs:73:1-21) GHC.defaultErrorHandler (compiler/main/GHC.hs:(380,1)-(412,7)) Main.main (ghc/Main.hs:(90,1)-(150,64)) }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13959#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler