
#14880: GHC panic: updateRole -------------------------------------+------------------------------------- Reporter: RyanGlScott | Owner: goldfire Type: bug | Status: new Priority: normal | Milestone: 8.8.1 Component: Compiler (Type | Version: 8.2.2 checker) | Resolution: | Keywords: TypeInType Operating System: Unknown/Multiple | Architecture: Type of failure: Compile-time | Unknown/Multiple crash or panic | Test Case: Blocked By: | Blocking: Related Tickets: #15076 | Differential Rev(s): Phab:D4769, Wiki Page: | Phab:D5141, Phab:D5147, Phab:D5150 -------------------------------------+------------------------------------- Comment (by tdammers): The first test to fail is `T14880-2`, a new test based on the reproduction case in comment:2. GHC 8.4 fails with a panic; the GHC version in `wip/T14880-2-step3` compiles it without errors when compiling core lint disabled, but enabling core lint (as in the test suite) triggers a lint failure: {{{ =====> T14880-2(normal) 1 of 1 [0, 0, 0] cd "dependent/should_compile/T14880-2.run" && "/home/tobias/well- typed/devel/ghc-phab/inplace/test spaces/ghc-stage2" -c T14880-2.hs -dcore-lint -dcmm-lint -no-user-package-db -rtsopts -fno-warn-missed- specialisations -fshow-warning-groups -fdiagnostics-color=never -fno- diagnostics-show-caret -dno-debug-output Compile failed (exit code 1) errors were: *** Core Lint errors : in result of Desugar (before optimization) *** <no location info>: warning: In the type ‘Proxy (Foo arg_a1eO)’ Kind application error in type ‘Proxy a_a1eN’ Function kind = forall k. k -> * Arg kinds = [(arg_a1eO, *), (a_a1eN, arg_a1eM)] Fun: arg_a1eO (a_a1eN, arg_a1eM) <no location info>: warning: In the type ‘Proxy (Foo arg_a1eO)’ Kind application error in type ‘Foo arg_a1eO’ Function kind = forall x -> forall (a :: x). Proxy a -> * Arg kinds = [(arg_a1eO, *), (a_a1eN, arg_a1eM)] Forall: a_aZA arg_a1eO (a_a1eN, arg_a1eM) *** Offending Program *** Rec { $tcFoo :: TyCon [LclIdX] $tcFoo = TyCon 1426396007728932770## 937350176756910988## $trModule (TrNameS "Foo"#) 2# $krep_a1qj $krep_a1qm [InlPrag=NOUSERINLINE[~]] :: KindRep [LclId] $krep_a1qm = $WKindRepVar (I# 1#) $krep_a1ql [InlPrag=NOUSERINLINE[~]] :: KindRep [LclId] $krep_a1ql = $WKindRepVar (I# 0#) $krep_a1qj [InlPrag=NOUSERINLINE[~]] :: KindRep [LclId] $krep_a1qj = KindRepFun $krep_a1qk krep$* $krep_a1qk [InlPrag=NOUSERINLINE[~]] :: KindRep [LclId] $krep_a1qk = KindRepTyConApp $tcProxy (: @ KindRep $krep_a1ql (: @ KindRep $krep_a1qm ([] @ KindRep))) $trModule :: Module [LclIdX] $trModule = Module (TrNameS "main"#) (TrNameS "Bug"#) quux :: forall arg (a :: arg) arg. Proxy (Foo arg) -> () [LclIdX] quux = \ (@ arg_a1eM) (@ (a_a1eN :: arg_a1eM)) (@ arg_a1eO) (ds_d1qn :: Proxy (Foo arg_a1eO)) -> () end Rec } *** End of Offense *** }}} I can't tell whether this means that the Core is indeed incorrect, or that the core linter is wrong in rejecting this program. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14880#comment:140 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler