
#10982: Warn about unused pattern variables in type families -------------------------------------+------------------------------------- Reporter: jstolarek | Owner: msosn Type: feature request | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.11 Resolution: | Keywords: newcomer Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Phab:D1576 Wiki Page: | -------------------------------------+------------------------------------- Comment (by simonpj): This is a bit fiddly. Here are some facts about the current implementation: * Named wildcards are part of the abstract syntax of types; see the `HsWildCardTy` constructor of `HsType` and the data type `HsTypes.WildCardInfo`. * If `-XNamedWildCards` is on, we make a `NamedWildCard` for any `_v` in a type; see `Parser.y` and the call to `mkNamedWildCardTy`. That puts a `NamedWildCard` in many places that it does not "belong", which is what gives rise to the fallout in comment:2 The Right Thing is probably not to put `HsWildCardTy` into types where they aren't allowed. Really they should only show up in `LHsSigWcType`. So I suppose that one simple thing would be to parse wildcards as `HsTyVar`, and then either * Make `mkLHsSigWcType` traverse the type and replace appropriate `HsTyVars` with `HsWildCardTy`, or * Make the renamer do this job. Probably the latter is best. Simon -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10982#comment:6 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler