summaryrefslogtreecommitdiff
path: root/testsuite/tests/indexed-types/should_fail/T9171.stderr
diff options
context:
space:
mode:
authorVladislav Zavialov <vlad.z.4096@gmail.com>2019-12-02 23:10:33 +0300
committerMarge Bot <ben+marge-bot@smart-cactus.org>2019-12-05 16:07:49 -0500
commit3354c68ec6c90bbccc0f361aa7973eeb75ea229c (patch)
treeb9c5e2f9627b25b6d7bdf745b281b6771b8d5990 /testsuite/tests/indexed-types/should_fail/T9171.stderr
parentc4ca29c796fa86ad9d5cd4dfa1a5cdd4e0565fb0 (diff)
downloadhaskell-3354c68ec6c90bbccc0f361aa7973eeb75ea229c.tar.gz
Pretty-printing of the * kind
Before this patch, GHC always printed the * kind unparenthesized. This led to two issues: 1. Sometimes GHC printed invalid or incorrect code. For example, GHC would print: type F @* x = x when it meant to print: type F @(*) x = x In the former case, instead of a kind application we were getting a type operator (@*). 2. Sometimes GHC printed kinds that were correct but hard to read. Should Either * Int be read as Either (*) Int or as (*) Either Int ? This depends on whether -XStarIsType is enabled, but it would be easier if we didn't have to check for the flag when reading the code. We can solve both problems by assigning (*) a different precedence. Note that Haskell98 kinds are not affected: ((* -> *) -> *) -> * does NOT become (((*) -> (*)) -> (*)) -> (*) The parentheses are added when (*) is used in a function argument position: F * * * becomes F (*) (*) (*) F A * B becomes F A (*) B Proxy * becomes Proxy (*) a * -> * becomes a (*) -> *
Diffstat (limited to 'testsuite/tests/indexed-types/should_fail/T9171.stderr')
-rw-r--r--testsuite/tests/indexed-types/should_fail/T9171.stderr4
1 files changed, 2 insertions, 2 deletions
diff --git a/testsuite/tests/indexed-types/should_fail/T9171.stderr b/testsuite/tests/indexed-types/should_fail/T9171.stderr
index 6567570d46..320a6add8d 100644
--- a/testsuite/tests/indexed-types/should_fail/T9171.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T9171.stderr
@@ -1,9 +1,9 @@
T9171.hs:10:20: error:
• Couldn't match expected type ‘GetParam
- @* @k2 @* Base (GetParam @* @* @k2 Base Int)’
+ @(*) @k2 @(*) Base (GetParam @(*) @(*) @k2 Base Int)’
with actual type ‘GetParam
- @* @k20 @* Base (GetParam @* @* @k20 Base Int)’
+ @(*) @k20 @(*) Base (GetParam @(*) @(*) @k20 Base Int)’
NB: ‘GetParam’ is a non-injective type family
The type variable ‘k20’ is ambiguous
• In the ambiguity check for an expression type signature