diff options
author | Vladislav Zavialov <vlad.z.4096@gmail.com> | 2019-12-02 23:10:33 +0300 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2019-12-05 16:07:49 -0500 |
commit | 3354c68ec6c90bbccc0f361aa7973eeb75ea229c (patch) | |
tree | b9c5e2f9627b25b6d7bdf745b281b6771b8d5990 /testsuite/tests/generics | |
parent | c4ca29c796fa86ad9d5cd4dfa1a5cdd4e0565fb0 (diff) | |
download | haskell-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/generics')
-rw-r--r-- | testsuite/tests/generics/T10604/T10604_deriving.stderr | 101 |
1 files changed, 48 insertions, 53 deletions
diff --git a/testsuite/tests/generics/T10604/T10604_deriving.stderr b/testsuite/tests/generics/T10604/T10604_deriving.stderr index f8a4acc371..99c5ee8088 100644 --- a/testsuite/tests/generics/T10604/T10604_deriving.stderr +++ b/testsuite/tests/generics/T10604/T10604_deriving.stderr @@ -18,7 +18,7 @@ Derived class instances: (GHC.Generics.R1 (GHC.Generics.M1 (GHC.Generics.M1 (GHC.Generics.K1 g1)))) -> T10604_deriving.Starify2 g1 - instance GHC.Generics.Generic1 @* T10604_deriving.Starify where + instance GHC.Generics.Generic1 @(*) T10604_deriving.Starify where GHC.Generics.from1 x = GHC.Generics.M1 (case x of @@ -140,7 +140,7 @@ Derived class instances: (GHC.Generics.M1 (GHC.Generics.M1 g1)) -> T10604_deriving.Wrap (GHC.Generics.unRec1 g1) } - instance GHC.Base.Functor (T10604_deriving.Proxy @*) where + instance GHC.Base.Functor (T10604_deriving.Proxy @(*)) where GHC.Base.fmap _ = GHC.Prim.coerce instance forall k (a :: k). @@ -183,7 +183,7 @@ Derived type family instances: "main" 'GHC.Types.False) ((GHC.Generics.:+:) - @* + @(*) (GHC.Generics.C1 @{*} ('GHC.Generics.MetaCons @@ -215,46 +215,41 @@ Derived type family instances: 'GHC.Generics.DecidedLazy) (GHC.Generics.Rec0 @{*} GHC.Types.Int)))) - type GHC.Generics.Rep1 @* T10604_deriving.Starify = GHC.Generics.D1 - @{*} - ('GHC.Generics.MetaData - "Starify" - "T10604_deriving" - "main" - 'GHC.Types.False) - ((GHC.Generics.:+:) - @* - (GHC.Generics.C1 - @{*} - ('GHC.Generics.MetaCons - "Starify1" - 'GHC.Generics.PrefixI - 'GHC.Types.False) - (GHC.Generics.S1 - @{*} - ('GHC.Generics.MetaSel - ('GHC.Maybe.Nothing - @GHC.Types.Symbol) - 'GHC.Generics.NoSourceUnpackedness - 'GHC.Generics.NoSourceStrictness - 'GHC.Generics.DecidedLazy) - GHC.Generics.Par1)) - (GHC.Generics.C1 - @{*} - ('GHC.Generics.MetaCons - "Starify2" - 'GHC.Generics.PrefixI - 'GHC.Types.False) - (GHC.Generics.S1 - @{*} - ('GHC.Generics.MetaSel - ('GHC.Maybe.Nothing - @GHC.Types.Symbol) - 'GHC.Generics.NoSourceUnpackedness - 'GHC.Generics.NoSourceStrictness - 'GHC.Generics.DecidedLazy) - (GHC.Generics.Rec0 - @{*} GHC.Types.Int)))) + type GHC.Generics.Rep1 + @(*) T10604_deriving.Starify = GHC.Generics.D1 + @{*} + ('GHC.Generics.MetaData + "Starify" "T10604_deriving" "main" 'GHC.Types.False) + ((GHC.Generics.:+:) + @(*) + (GHC.Generics.C1 + @{*} + ('GHC.Generics.MetaCons + "Starify1" + 'GHC.Generics.PrefixI + 'GHC.Types.False) + (GHC.Generics.S1 + @{*} + ('GHC.Generics.MetaSel + ('GHC.Maybe.Nothing @GHC.Types.Symbol) + 'GHC.Generics.NoSourceUnpackedness + 'GHC.Generics.NoSourceStrictness + 'GHC.Generics.DecidedLazy) + GHC.Generics.Par1)) + (GHC.Generics.C1 + @{*} + ('GHC.Generics.MetaCons + "Starify2" + 'GHC.Generics.PrefixI + 'GHC.Types.False) + (GHC.Generics.S1 + @{*} + ('GHC.Generics.MetaSel + ('GHC.Maybe.Nothing @GHC.Types.Symbol) + 'GHC.Generics.NoSourceUnpackedness + 'GHC.Generics.NoSourceStrictness + 'GHC.Generics.DecidedLazy) + (GHC.Generics.Rec0 @{*} GHC.Types.Int)))) type GHC.Generics.Rep (T10604_deriving.SumOfProducts @{k} a) = GHC.Generics.D1 @{*} @@ -264,7 +259,7 @@ Derived type family instances: "main" 'GHC.Types.False) ((GHC.Generics.:+:) - @* + @(*) (GHC.Generics.C1 @{*} ('GHC.Generics.MetaCons @@ -272,7 +267,7 @@ Derived type family instances: 'GHC.Generics.PrefixI 'GHC.Types.False) ((GHC.Generics.:*:) - @* + @(*) (GHC.Generics.S1 @{*} ('GHC.Generics.MetaSel @@ -302,7 +297,7 @@ Derived type family instances: 'GHC.Generics.PrefixI 'GHC.Types.False) ((GHC.Generics.:*:) - @* + @(*) (GHC.Generics.S1 @{*} ('GHC.Generics.MetaSel @@ -412,7 +407,7 @@ Derived type family instances: (GHC.Generics.Rec0 @{*} (T10604_deriving.Proxy - @* (T10604_deriving.Proxy @(k -> *) a))))) + @(*) (T10604_deriving.Proxy @(k -> *) a))))) type GHC.Generics.Rep1 @(k -> *) (T10604_deriving.Wrap2 @k) = GHC.Generics.D1 @{k -> *} @@ -435,9 +430,9 @@ Derived type family instances: 'GHC.Generics.NoSourceStrictness 'GHC.Generics.DecidedLazy) ((GHC.Generics.:.:) - @* + @(*) @(k -> *) - (T10604_deriving.Proxy @*) + (T10604_deriving.Proxy @(*)) (GHC.Generics.Rec1 @(k -> *) (T10604_deriving.Proxy @(k -> *)))))) @@ -491,7 +486,7 @@ Derived type family instances: @{*} ('GHC.Generics.MetaCons "Proxy" 'GHC.Generics.PrefixI 'GHC.Types.False) - (GHC.Generics.U1 @*)) + (GHC.Generics.U1 @(*))) type GHC.Generics.Rep1 @k (T10604_deriving.Proxy @k) = GHC.Generics.D1 @{k} @@ -509,7 +504,7 @@ Derived type family instances: "T10604_deriving" "main" 'GHC.Types.False) - (GHC.Generics.V1 @*) + (GHC.Generics.V1 @(*)) type GHC.Generics.Rep1 @GHC.Types.Bool T10604_deriving.Empty = GHC.Generics.D1 @{GHC.Types.Bool} @@ -523,7 +518,7 @@ Derived type family instances: ==================== Filling in method body ==================== -GHC.Base.Functor [T10604_deriving.Proxy @*] - GHC.Base.<$ = GHC.Base.$dm<$ @(T10604_deriving.Proxy @*) +GHC.Base.Functor [T10604_deriving.Proxy @(*)] + GHC.Base.<$ = GHC.Base.$dm<$ @(T10604_deriving.Proxy @(*)) |