summaryrefslogtreecommitdiff
path: root/testsuite/tests/partial-sigs/should_fail/WildcardInInstanceSig.stderr
diff options
context:
space:
mode:
authorThomas Winant <thomas.winant@cs.kuleuven.be>2015-06-08 23:45:48 -0500
committerAustin Seipp <austin@well-typed.com>2015-06-09 00:10:21 -0500
commit058af6c90a0e8d122f2d1339b6b4fd0b5ec83d05 (patch)
tree948f6dd1823c4f3c4b7cc9d79b689e51ab40ea87 /testsuite/tests/partial-sigs/should_fail/WildcardInInstanceSig.stderr
parent7944a68f0a91033f50c5d0c56e923948bba30be1 (diff)
downloadhaskell-058af6c90a0e8d122f2d1339b6b4fd0b5ec83d05.tar.gz
Refactor wild card renaming
Summary: Refactor wild card error reporting * Merge `HsWildcardTy` and `HsNamedWildcardTy` into one constructor `HsWildCardTy` with as field the new type `HsWildCardInfo`, which has two constructors: `AnonWildCard` and `NamedWildCard`. * All partial type checks are removed from `RdrHsSyn.hs` and are now done during renaming in order to report better error messages. When wild cards are allowed in a type, the new function `rnLHsTypeWithWildCards` (or `rnHsSigTypeWithWildCards`) should be used. This will bring the named wild cards into scope before renaming them. When this is not done, renaming will trigger "Unexpected wild card..." errors. Unfortunately, this has to be done separately for anonymous wild cards because they are given a fresh name during renaming, so they will not cause an out-of-scope error. They are handled in `tc_hs_type`, as a special case of a lookup that fails. The previous opt-out approach is replaced with an opt-in approach. No more panics because of forgotten checks! * `[t| _ |]` isn't caught by the above two checks, so it is currently handled by a special case. The error message (generated in the `DsM` monad) doesn't provide as much context information as the other cases. * Instead of three (!) functions that walk `HsType`, there is now only one pure function called `collectWildCards`. * Alternative approach: catch all unwanted wild cards in `rnHsTyKi` by looking at the `HsDocContext`. This will reduce the number of places to catch unwanted wild cards form three to one, and make the error messages more uniform, albeit less informative, as the error context for renaming is not as informative as the one for type checking. A new constructor of `HsDocContext` will be required for pattern synonyms signatures. Small problem: currently type-class type signatures can't be distinguished from type signatures using the `HsDocContext`. This requires an update to the Haddock submodule. Test Plan: validate Reviewers: goldfire, simonpj, austin Reviewed By: simonpj Subscribers: bgamari, thomie, goldfire Differential Revision: https://phabricator.haskell.org/D613 GHC Trac Issues: #10098
Diffstat (limited to 'testsuite/tests/partial-sigs/should_fail/WildcardInInstanceSig.stderr')
-rw-r--r--testsuite/tests/partial-sigs/should_fail/WildcardInInstanceSig.stderr5
1 files changed, 3 insertions, 2 deletions
diff --git a/testsuite/tests/partial-sigs/should_fail/WildcardInInstanceSig.stderr b/testsuite/tests/partial-sigs/should_fail/WildcardInInstanceSig.stderr
index e8148f1bb3..339f9fac45 100644
--- a/testsuite/tests/partial-sigs/should_fail/WildcardInInstanceSig.stderr
+++ b/testsuite/tests/partial-sigs/should_fail/WildcardInInstanceSig.stderr
@@ -1,4 +1,5 @@
WildcardInInstanceSig.hs:4:35:
- Wildcard not allowed
- in instance signature: ‘negate :: _’
+ Unexpected wild card: ‘_’
+ In the type signature for ‘negate’: negate :: _
+ In the instance declaration for ‘Num Bool’