
#13990: Core Lint error on empty case -------------------------------------+------------------------------------- Reporter: mbieleck | Owner: (none) Type: bug | Status: new Priority: highest | Milestone: 8.2.2 Component: Compiler | Version: 8.2.1-rc3 Resolution: | Keywords: core-lint | case Operating System: Unknown/Multiple | Architecture: Type of failure: Compile-time | Unknown/Multiple crash or panic | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by mbieleck): Replying to [comment:7 simonpj]:
Better, I think, to say that {{{ case x of {} }}} is fine if `x :: T` where `T` has no data constructors. That would silence the warning and is obviously correct.
Unfortunately that wouldn't fix my original problem. I encountered Core Lint errors when using [https://github.com/cdepillabout/servant-checked- exceptions/blob/master/src/Servant/Checked/Exceptions/Internal/Union.hs#L152 Servant.Checked.Exceptions.Internal.Union.absurdUnion]. Here the type involved is a GADT which __does__ have data constructors, but none of them matches the type parameter `'[]`. For the purposes of simplifying the test case I replaced it with `Void`, since they are isomorphic, but it makes a difference when linting. Here's a test case better reflecting the situation: {{{#!hs {-# LANGUAGE EmptyCase, GADTs #-} module Bug where data T a where TInt :: T Int absurd :: T Bool -> a absurd v = case v of {} data Foo = Foo !(T Bool) absurdFoo :: Foo -> a absurdFoo (Foo x) = absurd x }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13990#comment:8 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler