[GHC] #14318: TH shadowing bind statement triggers -Wunused-matches

GHC ghc-devs at haskell.org
Sun Feb 25 23:05:53 UTC 2018


#14318: TH shadowing bind statement triggers -Wunused-matches
-------------------------------------+-------------------------------------
        Reporter:  lyxia             |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Template Haskell  |              Version:  8.2.1
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  Incorrect         |  Unknown/Multiple
  error/warning at compile-time      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------
Description changed by lyxia:

Old description:

> {{{
> $(newName "x" >>= \x ->
>   newName "f" >>= \f ->
>   lamE [varP f, varP x]
>     (doE [ bindS (varP x) (listE [varE f `appE` varE x])
>          , noBindS (varE x)])
>  )
> }}}
>
> generates the following expression:
>
> {{{
> \f x -> do
>   x <- f x
>   x
> }}}
>
> and `-Wunused-matches` complains that `x` is not used, while both bound
> occurrences are in fact used.

New description:

 {{{
 {-# LANGUAGE TemplateHaskell #-}
 module Test where

 import Language.Haskell.TH

 m :: (a -> [b]) -> a -> [b]
 m =
   $(newName "x" >>= \x ->
     newName "f" >>= \f ->
     lamE [varP f, varP x]
       (doE [ bindS (varP x) (listE [varE f `appE` varE x])
            , noBindS (varE x)])
    )
 }}}

 The splice generates the following expression:

 {{{
 \f x -> do
   x <- [f x]
   x
 }}}

 and `-Wunused-matches` complains that `x` is not used, while both bound
 occurrences are in fact used (the two uses have different types so that's
 quite certain).

--

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14318#comment:2>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list