[GHC] #12509: ghci -XSafe fails in an inscrutable way
GHC
ghc-devs at haskell.org
Fri Dec 21 19:11:11 UTC 2018
#12509: ghci -XSafe fails in an inscrutable way
-------------------------------------+-------------------------------------
Reporter: int-e | Owner: RolandSenn
Type: bug | Status: patch
Priority: normal | Milestone:
Component: Compiler | Version: 8.0.1
Resolution: | Keywords: SafeHaskell
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case: make test
| TEST=T12509
Blocked By: | Blocking:
Related Tickets: #13385, #14342 | Differential Rev(s): Gitlab Merge
Wiki Page: | Request 23
-------------------------------------+-------------------------------------
Comment (by int-e):
Following in RolandSenn's trail... `ghci` evaluates some code internally.
One such piece of code comes from `ghc/GHCi/UI/Monad.hs`,
`initInterpBuffering`, which evaluates `System.IO.hSetBuffering
System.IO.stdin System.IO.NoBuffering` (and the same for `stdout` and
`stderr`). This works fine without `-XSafe`, but with `-XSafe` there is a
stricter check that requires `System.IO` to actually be imported:
{{{
$ ghci
GHCi, version 8.6.1: http://www.haskell.org/ghc/ :? for help
Prelude> System.IO.hSetBuffering System.IO.stdin System.IO.NoBuffering
Prelude> :set -XSafe
Prelude> System.IO.hSetBuffering System.IO.stdin System.IO.NoBuffering
<interactive>:3:1: error:
Not in scope: ‘System.IO.hSetBuffering’
No module named ‘System.IO’ is imported.
<interactive>:3:25: error:
Not in scope: ‘System.IO.stdin’
No module named ‘System.IO’ is imported.
<interactive>:3:41: error:
Not in scope: data constructor ‘System.IO.NoBuffering’
No module named ‘System.IO’ is imported.
Prelude> import System.IO
Prelude System.IO> System.IO.hSetBuffering System.IO.stdin
System.IO.NoBuffering
Prelude System.IO>
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12509#comment:10>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list