diff options
author | Thomas Miedema <thomasmiedema@gmail.com> | 2015-11-27 16:19:24 +0100 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2015-11-29 13:22:14 +0100 |
commit | 71c0cc1531c3e548e47f435432ed31cb79512607 (patch) | |
tree | e82d07d40e1f5f909e11905816a71e59f5107f0a /compiler | |
parent | 399a5b46591dfbee0499d6afa1bb80ad2fd52598 (diff) | |
download | haskell-71c0cc1531c3e548e47f435432ed31cb79512607.tar.gz |
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
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/typecheck/TcRnDriver.hs | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/compiler/typecheck/TcRnDriver.hs b/compiler/typecheck/TcRnDriver.hs index fb27c26cb9..3c68dcf462 100644 --- a/compiler/typecheck/TcRnDriver.hs +++ b/compiler/typecheck/TcRnDriver.hs @@ -1641,7 +1641,8 @@ tcUserStmt (L loc (BodyStmt expr _ _ _)) -- naked expression. Deferring type errors here is unhelpful because the -- expression gets evaluated right away anyway. It also would potentially -- emit two redundant type-error warnings, one from each plan. - ; plan <- unsetGOptM Opt_DeferTypeErrors $ runPlans [ + ; plan <- unsetGOptM Opt_DeferTypeErrors $ + unsetGOptM Opt_DeferTypedHoles $ runPlans [ -- Plan A do { stuff@([it_id], _) <- tcGhciStmts [bind_stmt, print_it] ; it_ty <- zonkTcType (idType it_id) |