
#13474: GHC HEAD regression: Prelude.!!: index too large -------------------------------------+------------------------------------- Reporter: RyanGlScott | Owner: (none) Type: bug | Status: new Priority: highest | Milestone: 8.2.1 Component: Compiler | Version: 8.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: GHC rejects | Unknown/Multiple valid program | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by simonpj): I'm pretty sure Phab:D3316 will fix. I thought it was merged already. As a side comment, Richard, we were discussing yesterday why we meed `match_co` in rule matching. Here we do! See #13476! Also: '''Ben''', once you have merged Phab:D3316, and checked that it works, can you also swap the order of these two equations in `Rules.match_co`? {{{ match_co renv subst co1 co2 | Just (tc1, cos1) <- splitTyConAppCo_maybe co1 = case splitTyConAppCo_maybe co2 of Just (tc2, cos2) | tc1 == tc2 -> match_cos renv subst cos1 cos2 _ -> Nothing match_co renv subst co1 co2 | Just (arg1, res1) <- splitFunCo_maybe co1 = case splitFunCo_maybe co2 of Just (arg2, res2) -> match_cos renv subst [arg1, res1] [arg2, res2] _ -> Nothing }}} Currently the second will never match because `splitTyConAppCo_maybe` succeeds (inefficiently) on `FunCo`. Swapping them will make it more efficient. Swapping them will probably conceal the bug, so test the fix first! -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13474#comment:6 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler