
#11390: GHC does not warn about redundant equations -------------------------------------+------------------------------------- Reporter: Iceland_jack | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.1 Keywords: warnings | Operating System: Unknown/Multiple Architecture: | Type of failure: None/Unknown Unknown/Multiple | Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- Given the Phab:D1535 effort in GHC 8.0 I was curious how an example from Richard's post [https://typesandkinds.wordpress.com/2015/09/09/what-are- type-families/ What are type families?] would fare: {{{ % ghci -Wall -XTypeFamilies -ignore-dot-ghci GHCi, version 8.1.20160105: http://www.haskell.org/ghc/ :? for help Prelude> :set +m Prelude> type family F1 a where Prelude| F1 Int = Bool Prelude| Prelude> let Prelude| sillyId :: F1 Char -> F1 Char Prelude| sillyId x = x Prelude| Prelude> }}} This seems to fly, even though as the blog post noted, ”[...] sillyId can’t ever be called on a value.” Isn't the clause redundant and should be defined using `EmptyCase` (#2431) as `sillyId x = case x of {}`? It seems GHC doesn't care that the pattern match in the equation `absurd2 _ = ...` is redundant either: {{{#!hs data Void absurd1 :: Void -> a; absurd1 = \case absurd2 :: Void -> a absurd2 _ = undefined }}} Is this intended or known behaviour? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11390 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler