[GHC] #11606: name shadowing warnings don't trigger on standalone declarations in ghci
GHC
ghc-devs at haskell.org
Thu Feb 18 18:00:38 UTC 2016
#11606: name shadowing warnings don't trigger on standalone declarations in ghci
-------------------------------------+-------------------------------------
Reporter: rwbarton | Owner:
Type: bug | Status: new
Priority: high | Milestone: 8.0.1
Component: GHCi | Version: 7.10.3
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:
-------------------------------------+-------------------------------------
The name shadowing warnings in ghci catch shadowing from top-level binds
and `let` statements, but not from standalone declarations (new in 8.0).
{{{
rwbarton at morphism:/tmp$ ~/ghc-HEAD/bin/ghci -fwarn-name-shadowing
GHCi, version 8.1.20160212: http://www.haskell.org/ghc/ :? for help
Prelude> a <- return ()
Prelude> a <- return ()
<interactive>:2:1: warning:
This binding for ‘a’ shadows the existing binding
defined at <interactive>:1:1
Prelude> let b = return ()
Prelude> let b = return ()
<interactive>:4:5: warning:
This binding for ‘b’ shadows the existing binding
defined at <interactive>:3:5
Prelude> c = return ()
Prelude> c = return ()
Prelude>
}}}
I'm hoping this can be fixed for 8.0, since I would also very much like to
turn on name shadowing warnings in ghci by default (in the interactive
flags), to reduce confusion from examples like the below, which is now
possible for the first time in 8.0:
{{{
Prelude> fact 0 = 1
Prelude> fact n = n * fact (n-1)
Prelude> fact 5
^C^CInterrupted.
Prelude> -- why did it run forever?
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/11606>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list