
#12435: Turn "No alternatives for a case scrutinee not known to diverge for sure" into a warning -------------------------------------+------------------------------------- Reporter: nomeata | Owner: Type: task | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.1 Keywords: | Operating System: Unknown/Multiple Architecture: | Type of failure: None/Unknown Unknown/Multiple | Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- This was discussed in the context of #10180, #11290 and Phab:D851; let’s focus on this here. In changeset:a0678f1f0e62496c108491e1c80d5eef3936474a/ghc we introduced a lint ''error'' that would abort compilation if there is an empty case with a scrutinee not known to diverge for sure. It is then nature of such a test that it is never complete (we’d solve the halting problem). Occasionally, when working on other parts of the code, together with other transformations (such as CSE), we get Core code that does not pass the test, even though the scrutinee ''is'' diverging. Whenever it occurs, we have to find out why needs to be done to make the test pass again, e.g. by ensuring that CSE cse’s things in the right order, or whatnot. This slows down development (e.g. I cannot test my work on #12368 on the auto-builders because of this). It feels wrong to me to give a necessarily non-complete test such a high priority. I therefore propose to turn this check into a lint ''warning''. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12435 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler