GHCi should not defer typed holes
authorThomas Miedema <thomasmiedema@gmail.com>
Fri, 27 Nov 2015 15:19:24 +0000 (16:19 +0100)
committerBen Gamari <ben@smart-cactus.org>
Sun, 29 Nov 2015 12:22:14 +0000 (13:22 +0100)
commit71c0cc1531c3e548e47f435432ed31cb79512607
treee82d07d40e1f5f909e11905816a71e59f5107f0a
parent399a5b46591dfbee0499d6afa1bb80ad2fd52598
GHCi should not defer typed holes

In the function `tcUserStmt` in compiler/typecheck/TcRnDriver.hs, before
going over the different ways ('plans') to lift an expression typed at
the prompt into the GHCi monad, `Opt_DeferTypeErrors` is disabled. Here is
the accompanying comment:

```
-- Ensure that type errors don't get deferred when type checking the
-- naked expression. Deferring type errors here is unhelpful because the
-- expression gets evaluated right away anyway. It also would potentially
-- emit redundant type-error warnings, one from each plan.
; plan <- unsetGOptM Opt_DeferTypeErrors $
```

Since `Opt_DeferTypeErrors` implies `Opt_DeferTypedHoles`,
`Opt_DeferTypedHoles` should be disabled here as well. This improves
the error message for T10248 (it doesn't mention ghciStepIO anymore).
This is a partial fix for #10249, and a complete fix for #11130.

Depends on D1526

Reviewers: simonpj, austin, bgamari

Reviewed By: simonpj

Subscribers: simonpj

Differential Revision: https://phabricator.haskell.org/D1527

GHC Trac Issues: #10249, #11130
compiler/typecheck/TcRnDriver.hs
testsuite/tests/ghci/scripts/T10248.stderr