summaryrefslogtreecommitdiff
path: root/testsuite/tests/typecheck/should_fail/T18455.stderr
diff options
context:
space:
mode:
authorRyan Scott <ryan.gl.scott@gmail.com>2020-07-16 14:04:28 -0400
committerBen Gamari <ben@smart-cactus.org>2020-09-17 19:46:29 -0400
commiteae6f239db9d71143aaea4c7e83990c59874ab96 (patch)
treedc4c3d950d43b0c28f45b8ee468303e8ced63055 /testsuite/tests/typecheck/should_fail/T18455.stderr
parente8f5e16a78d7ac274d1c6e359cb455cbcd5abada (diff)
downloadhaskell-eae6f239db9d71143aaea4c7e83990c59874ab96.tar.gz
Clean up the inferred type variable restriction
This patch primarily: * Documents `checkInferredVars` (previously called `check_inferred_vars`) more carefully. This is the function which throws an error message if a user quantifies an inferred type variable in a place where specificity cannot be observed. See `Note [Unobservably inferred type variables]` in `GHC.Rename.HsType`. Note that I now invoke `checkInferredVars` _alongside_ `rnHsSigType`, `rnHsWcSigType`, etc. rather than doing so _inside_ of these functions. This results in slightly more call sites for `checkInferredVars`, but it makes it much easier to enumerate the spots where the inferred type variable restriction comes into effect. * Removes the inferred type variable restriction for default method type signatures, per the discussion in #18432. As a result, this patch fixes #18432. Along the way, I performed some various cleanup: * I moved `no_nested_foralls_contexts_err` into `GHC.Rename.Utils` (under the new name `noNestedForallsContextsErr`), since it now needs to be invoked from multiple modules. I also added a helper function `addNoNestedForallsContextsErr` that throws the error message after producing it, as this is a common idiom. * In order to ensure that users cannot sneak inferred type variables into `SPECIALISE instance` pragmas by way of nested `forall`s, I now invoke `addNoNestedForallsContextsErr` when renaming `SPECIALISE instance` pragmas, much like when we rename normal instance declarations. (This probably should have originally been done as a part of the fix for #18240, but this task was somehow overlooked.) As a result, this patch fixes #18455 as a side effect. (cherry picked from commit 502605f7ae9907a6b0b9823e8f055ae390c57b1d)
Diffstat (limited to 'testsuite/tests/typecheck/should_fail/T18455.stderr')
-rw-r--r--testsuite/tests/typecheck/should_fail/T18455.stderr4
1 files changed, 4 insertions, 0 deletions
diff --git a/testsuite/tests/typecheck/should_fail/T18455.stderr b/testsuite/tests/typecheck/should_fail/T18455.stderr
new file mode 100644
index 0000000000..15d02d1902
--- /dev/null
+++ b/testsuite/tests/typecheck/should_fail/T18455.stderr
@@ -0,0 +1,4 @@
+
+T18455.hs:7:37: error:
+ SPECIALISE instance type cannot contain nested ‘forall’s or contexts
+ In a SPECIALISE instance pragma