From 679bbc9705371af8ca65a5bfeb702e14bc406f51 Mon Sep 17 00:00:00 2001 From: Vladislav Zavialov <vlad.z.4096@gmail.com> Date: Thu, 8 Jun 2023 12:22:16 +0200 Subject: [PATCH] testsuite: Do not require CUSKs Numerous tests make use of CUSKs (complete user-supplied kinds), a legacy feature scheduled for deprecation. In order to proceed with the said deprecation, the tests have been updated to use SAKS instead (standalone kind signatures). This also allows us to remove the Haskell2010 language pragmas that were added in 115cd3c85a8 to work around the lack of CUSKs in GHC2021. --- .../tests/dependent/should_compile/Dep2.hs | 6 +- .../dependent/should_compile/DkNameRes.hs | 4 +- .../should_compile/KindEqualities2.hs | 4 +- .../dependent/should_compile/RaeBlogPost.hs | 10 +- .../dependent/should_compile/RaeJobTalk.hs | 10 +- .../tests/dependent/should_compile/T11711.hs | 12 +- .../tests/dependent/should_compile/T12442.hs | 7 +- .../tests/dependent/should_compile/T14066a.hs | 9 +- .../dependent/should_compile/T14066a.stderr | 4 +- .../tests/dependent/should_compile/T14556.hs | 16 +- .../tests/dependent/should_compile/T14749.hs | 7 +- .../should_compile/T16326_Compile1.hs | 12 +- .../dependent/should_compile/TypeLevelVec.hs | 4 +- .../dependent/should_compile/dynamic-paper.hs | 7 +- .../dependent/should_compile/mkGADTVars.hs | 4 +- .../tests/dependent/should_fail/T13601.hs | 8 +- .../tests/dependent/should_fail/T13780c.hs | 5 +- .../dependent/should_fail/T13780c.stderr | 4 +- .../tests/dependent/should_fail/T15380.hs | 4 +- testsuite/tests/ghci/scripts/T7939.hs | 4 +- testsuite/tests/ghci/scripts/T7939.stdout | 14 +- .../indexed-types/should_compile/T14554.hs | 10 +- .../indexed-types/should_compile/T15122.hs | 4 +- .../indexed-types/should_compile/T15352.hs | 13 +- .../should_compile/T16356_Compile1.hs | 4 +- .../indexed-types/should_compile/T17008b.hs | 17 +- .../indexed-types/should_fail/ClosedFam3.hs | 1 - .../should_fail/ClosedFam3.hs-boot | 4 +- .../should_fail/ClosedFam3.stderr | 4 +- .../tests/indexed-types/should_fail/T14246.hs | 10 +- .../indexed-types/should_fail/T14246.stderr | 8 +- .../parser/should_compile/DumpParsedAst.hs | 3 +- .../should_compile/DumpParsedAst.stderr | 682 ++++++++++++------ .../parser/should_compile/DumpRenamedAst.hs | 3 +- .../should_compile/DumpRenamedAst.stderr | 437 +++++++---- .../should_compile/DumpTypecheckedAst.hs | 3 +- .../should_compile/DumpTypecheckedAst.stderr | 24 +- .../tests/patsyn/should_compile/T10997_1a.hs | 4 +- .../tests/patsyn/should_compile/T12698.hs | 4 +- testsuite/tests/patsyn/should_fail/T14507.hs | 4 +- testsuite/tests/patsyn/should_fail/T15694.hs | 4 +- testsuite/tests/patsyn/should_fail/T15695.hs | 4 +- .../tests/pmcheck/complete_sigs/T14253.hs | 4 +- testsuite/tests/polykinds/T10670a.hs | 5 +- testsuite/tests/polykinds/T11362.hs | 4 +- testsuite/tests/polykinds/T11480a.hs | 4 +- testsuite/tests/polykinds/T11480b.hs | 4 +- testsuite/tests/polykinds/T11520.hs | 6 +- testsuite/tests/polykinds/T11520.stderr | 4 +- testsuite/tests/polykinds/T11523.hs | 4 +- testsuite/tests/polykinds/T12055.hs | 7 +- testsuite/tests/polykinds/T12055a.hs | 11 +- testsuite/tests/polykinds/T12055a.stderr | 2 +- testsuite/tests/polykinds/T14270.hs | 7 +- testsuite/tests/polykinds/T14450.hs | 7 +- testsuite/tests/polykinds/T14450.stderr | 2 +- testsuite/tests/polykinds/T15787.hs | 7 +- testsuite/tests/polykinds/T15787.stderr | 4 +- testsuite/tests/polykinds/T16244.hs | 9 +- testsuite/tests/polykinds/T16244.stderr | 6 +- testsuite/tests/polykinds/T16245.hs | 9 +- testsuite/tests/polykinds/T16245.stderr | 6 +- testsuite/tests/polykinds/T16245a.hs | 4 +- testsuite/tests/polykinds/T16245a.stderr | 6 +- testsuite/tests/polykinds/T17841.hs | 6 +- testsuite/tests/polykinds/T17841.stderr | 4 +- testsuite/tests/polykinds/T6137.hs | 4 +- testsuite/tests/polykinds/T7053.hs | 3 +- testsuite/tests/polykinds/T7053.stderr | 6 + testsuite/tests/polykinds/T7053a.hs | 5 +- testsuite/tests/polykinds/T7224.hs | 6 +- testsuite/tests/polykinds/T7224.stderr | 8 +- testsuite/tests/polykinds/T9200.hs | 23 +- testsuite/tests/polykinds/all.T | 2 +- .../tests/simplCore/should_compile/T14270a.hs | 4 +- .../tests/simplCore/should_compile/T16979b.hs | 19 +- testsuite/tests/th/ClosedFam2TH.hs | 10 +- testsuite/tests/th/T12045TH1.hs | 4 +- testsuite/tests/th/T12045TH1.stderr | 9 +- testsuite/tests/th/T12045TH2.hs | 9 +- testsuite/tests/th/T12045TH2.stderr | 1 + testsuite/tests/th/T12646.hs | 4 +- testsuite/tests/th/T15243.hs | 4 +- testsuite/tests/th/T15243.stderr | 9 +- .../tests/typecheck/should_compile/SplitWD.hs | 4 +- .../tests/typecheck/should_compile/T11524.hs | 6 +- .../tests/typecheck/should_compile/T12919.hs | 4 +- .../tests/typecheck/should_compile/T13333.hs | 6 +- .../tests/typecheck/should_compile/T13822.hs | 8 +- .../tests/typecheck/should_compile/T13879.hs | 4 +- .../tests/typecheck/should_compile/T14366.hs | 4 +- .../tests/typecheck/should_compile/T14451.hs | 9 +- .../tests/typecheck/should_compile/T15079.hs | 11 +- .../tests/typecheck/should_compile/T6018.hs | 4 +- .../typecheck/should_compile/T6018.stderr | 8 +- .../tests/typecheck/should_compile/T7503a.hs | 4 +- .../tests/typecheck/should_compile/T9151.hs | 5 +- .../typecheck/should_fail/LevPolyBounded.hs | 5 +- .../should_fail/LevPolyBounded.stderr | 8 +- .../tests/typecheck/should_fail/T12785b.hs | 7 +- .../tests/typecheck/should_fail/T14904a.hs | 4 +- .../tests/typecheck/should_fail/T15552a.hs | 4 +- .../tests/typecheck/should_fail/T16255.hs | 2 +- .../tests/typecheck/should_fail/T16255.stderr | 2 +- .../tests/typecheck/should_fail/T9201.hs | 6 +- .../tests/typecheck/should_fail/T9201.stderr | 6 +- 106 files changed, 1131 insertions(+), 654 deletions(-) create mode 100644 testsuite/tests/polykinds/T7053.stderr diff --git a/testsuite/tests/dependent/should_compile/Dep2.hs b/testsuite/tests/dependent/should_compile/Dep2.hs index adaf5c3f99e1..061ca2412ffa 100644 --- a/testsuite/tests/dependent/should_compile/Dep2.hs +++ b/testsuite/tests/dependent/should_compile/Dep2.hs @@ -1,8 +1,10 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE PolyKinds, GADTs #-} module Dep2 where -data G (a :: k) where +import Data.Kind (Type) + +type G :: k -> Type +data G a where G1 :: G Int G2 :: G Maybe diff --git a/testsuite/tests/dependent/should_compile/DkNameRes.hs b/testsuite/tests/dependent/should_compile/DkNameRes.hs index f871c9cf890d..6922f1ccf4ad 100644 --- a/testsuite/tests/dependent/should_compile/DkNameRes.hs +++ b/testsuite/tests/dependent/should_compile/DkNameRes.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE TypeFamilies, DataKinds, PolyKinds #-} module DkNameRes where @@ -6,5 +5,6 @@ module DkNameRes where import Data.Proxy import Data.Kind -type family IfK (e :: Proxy (j :: Bool)) :: Type where +type IfK :: Proxy (j :: Bool) -> Type +type family IfK e where IfK (_ :: Proxy True) = () diff --git a/testsuite/tests/dependent/should_compile/KindEqualities2.hs b/testsuite/tests/dependent/should_compile/KindEqualities2.hs index c798524434fa..4369b6bddd49 100644 --- a/testsuite/tests/dependent/should_compile/KindEqualities2.hs +++ b/testsuite/tests/dependent/should_compile/KindEqualities2.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE DataKinds, GADTs, PolyKinds, TypeFamilies, ExplicitForAll, TemplateHaskell, UndecidableInstances, ScopedTypeVariables #-} @@ -16,7 +15,8 @@ data Ty :: Kind -> Type where TApp :: Ty (Arr k1 k2) -> Ty k1 -> Ty k2 -data TyRep (k :: Kind) (t :: Ty k) where +type TyRep :: forall (k :: Kind) -> Ty k -> Type +data TyRep k t where TyInt :: TyRep Star TInt TyBool :: TyRep Star TBool TyMaybe :: TyRep (Arr Star Star) TMaybe diff --git a/testsuite/tests/dependent/should_compile/RaeBlogPost.hs b/testsuite/tests/dependent/should_compile/RaeBlogPost.hs index d0961dd3845a..420600d717c4 100644 --- a/testsuite/tests/dependent/should_compile/RaeBlogPost.hs +++ b/testsuite/tests/dependent/should_compile/RaeBlogPost.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE DataKinds, PolyKinds, GADTs, TypeOperators, TypeFamilies #-} {-# OPTIONS_GHC -fwarn-unticked-promoted-constructors #-} @@ -23,7 +22,8 @@ data E :: D c -> Type -- note that E :: forall (a :: A) (b :: B a) (c :: C b). D c -> Type -- a kind-indexed GADT -data TypeRep (a :: k) where +type TypeRep :: k -> Type +data TypeRep a where TInt :: TypeRep Int TMaybe :: TypeRep Maybe TApp :: TypeRep a -> TypeRep b -> TypeRep (a b) @@ -37,13 +37,15 @@ type family a + b where 'Zero + b = b ('Succ a) + b = 'Succ (a + b) -data Vec :: Type -> Nat -> Type where +type Vec :: Type -> Nat -> Type +data Vec a n where Nil :: Vec a 'Zero (:>) :: a -> Vec a n -> Vec a ('Succ n) infixr 5 :> -- promoted GADT, and using + as a "kind family": -type family (x :: Vec a n) ++ (y :: Vec a m) :: Vec a (n + m) where +type (++) :: Vec a n -> Vec a m -> Vec a (n + m) +type family x ++ y where 'Nil ++ y = y (h ':> t) ++ y = h ':> (t ++ y) diff --git a/testsuite/tests/dependent/should_compile/RaeJobTalk.hs b/testsuite/tests/dependent/should_compile/RaeJobTalk.hs index 008ab860e9ca..cbaac9dcc444 100644 --- a/testsuite/tests/dependent/should_compile/RaeJobTalk.hs +++ b/testsuite/tests/dependent/should_compile/RaeJobTalk.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {- Copyright (c) 2016 Richard Eisenberg -} @@ -27,7 +26,8 @@ import qualified GHC.Exts as Exts -- Utilities -- Heterogeneous propositional equality -data (a :: k1) :~~: (b :: k2) where +type (:~~:) :: k1 -> k2 -> Type +data a :~~: b where HRefl :: a :~~: a -- Type-level inequality @@ -76,7 +76,8 @@ Nil %:++ x = x -- Type-indexed type representations -- Based on "A reflection on types" -data TyCon (a :: k) where +type TyCon :: k -> Type +data TyCon a where Int :: TyCon Int Bool :: TyCon Bool Char :: TyCon Char @@ -110,7 +111,8 @@ type family Primitive (a :: k) :: Constraint where Primitive (_ _) = ('False ~ 'True) Primitive _ = (() :: Constraint) -data TypeRep (a :: k) where +type TypeRep :: k -> Type +data TypeRep a where TyCon :: forall k (a :: k). (Primitive a, Typeable k) => TyCon a -> TypeRep a TyApp :: TypeRep a -> TypeRep b -> TypeRep (a b) diff --git a/testsuite/tests/dependent/should_compile/T11711.hs b/testsuite/tests/dependent/should_compile/T11711.hs index bcbb7cec8303..24111e22536c 100644 --- a/testsuite/tests/dependent/should_compile/T11711.hs +++ b/testsuite/tests/dependent/should_compile/T11711.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE RankNTypes #-} @@ -11,19 +10,22 @@ module T11711 where -import Data.Kind (Type) +import Data.Kind (Type, Constraint) -data (:~~:) (a :: k1) (b :: k2) where +type (:~~:) :: k1 -> k2 -> Type +data (:~~:) a b where HRefl :: a :~~: a -data TypeRep (a :: k) where +type TypeRep :: k -> Type +data TypeRep a where TrTyCon :: String -> TypeRep k -> TypeRep (a :: k) TrApp :: forall k1 k2 (a :: k1 -> k2) (b :: k1). TypeRep (a :: k1 -> k2) -> TypeRep (b :: k1) -> TypeRep (a b) -class Typeable (a :: k) where +type Typeable :: k -> Constraint +class Typeable a where typeRep :: TypeRep a data SomeTypeRep where diff --git a/testsuite/tests/dependent/should_compile/T12442.hs b/testsuite/tests/dependent/should_compile/T12442.hs index fa0096b4e424..f6203de8544f 100644 --- a/testsuite/tests/dependent/should_compile/T12442.hs +++ b/testsuite/tests/dependent/should_compile/T12442.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} -- Based on https://github.com/idris-lang/Idris-dev/blob/v0.9.10/libs/effects/Effects.idr {-# LANGUAGE DataKinds, PolyKinds, ScopedTypeVariables, TypeOperators, @@ -34,9 +33,9 @@ data EffElem :: (Type ~> Type ~> Type ~> Type) -> Type -> [EFFECT] -> Type where data instance Sing (elem :: EffElem x a xs) where SHere :: Sing Here -type family UpdateResTy (b :: Type) (t :: Type) - (xs :: [EFFECT]) (elem :: EffElem e a xs) - (thing :: e @@ a @@ b @@ t) :: [EFFECT] where +type UpdateResTy :: forall e a. forall b t xs -> + EffElem e a xs -> e @@ a @@ b @@ t -> [EFFECT] +type family UpdateResTy b t xs elem thing where UpdateResTy b _ (MkEff a e ': xs) Here n = MkEff b e ': xs data EffM :: (Type ~> Type) -> [EFFECT] -> [EFFECT] -> Type -> Type diff --git a/testsuite/tests/dependent/should_compile/T14066a.hs b/testsuite/tests/dependent/should_compile/T14066a.hs index 23574a202901..47ef16ed4f47 100644 --- a/testsuite/tests/dependent/should_compile/T14066a.hs +++ b/testsuite/tests/dependent/should_compile/T14066a.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE TypeFamilies, DataKinds, PolyKinds, ExplicitForAll, GADTs, UndecidableInstances, RankNTypes, ScopedTypeVariables #-} @@ -32,7 +31,8 @@ type family G x a where -- this last example just checks that GADT pattern-matching on kinds still works. -- nothing new here. -data T (a :: k) where +type T :: k -> Type +data T a where MkT :: T (a :: Type -> Type) data S (a :: Type -> Type) where @@ -54,9 +54,12 @@ type P k a = Proxy (a :: k) -- Naively, we don't know about c's kind early enough. data SameKind :: forall k. k -> k -> Type -type family IfK (e :: Proxy (j :: Bool)) (f :: m) (g :: n) :: If j m n where + +type IfK :: Proxy (j :: Bool) -> m -> n -> If j m n +type family IfK e f g where IfK (_ :: Proxy True) f _ = f IfK (_ :: Proxy False) _ g = g + x :: forall c. (forall a b (d :: a). SameKind (IfK c b d) d) -> (Proxy (c :: Proxy True)) x _ = Proxy diff --git a/testsuite/tests/dependent/should_compile/T14066a.stderr b/testsuite/tests/dependent/should_compile/T14066a.stderr index f46e985a4ce1..2eda96aaf56f 100644 --- a/testsuite/tests/dependent/should_compile/T14066a.stderr +++ b/testsuite/tests/dependent/should_compile/T14066a.stderr @@ -1,5 +1,5 @@ -T14066a.hs:14:3: warning: [GHC-28129] [-Winaccessible-code (in -Wdefault)] +T14066a.hs:13:3: warning: [GHC-28129] [-Winaccessible-code (in -Wdefault)] Type family instance equation is overlapped: forall {c} {x :: c} {d} {y :: d}. - Bar x y = Bool -- Defined at T14066a.hs:14:3 + Bar x y = Bool -- Defined at T14066a.hs:13:3 diff --git a/testsuite/tests/dependent/should_compile/T14556.hs b/testsuite/tests/dependent/should_compile/T14556.hs index dd51b05726fe..d4e8cfaabb46 100644 --- a/testsuite/tests/dependent/should_compile/T14556.hs +++ b/testsuite/tests/dependent/should_compile/T14556.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# Language UndecidableInstances, DataKinds, TypeOperators, PolyKinds, TypeFamilies, GADTs, LambdaCase, ScopedTypeVariables #-} @@ -10,8 +9,8 @@ import Data.Proxy data Fn a b where IdSym :: Fn Type Type -type family - (@@) (f::Fn k k') (a::k)::k' where +type (@@) :: Fn k k' -> k -> k' +type family f @@ a where IdSym @@ a = a data KIND = X | FNARR KIND KIND @@ -20,19 +19,20 @@ data TY :: KIND -> Type where ID :: TY (FNARR X X) FNAPP :: TY (FNARR k k') -> TY k -> TY k' -data TyRep (kind::KIND) :: TY kind -> Type where +type TyRep :: forall (kind::KIND) -> TY kind -> Type +data TyRep k t where TID :: TyRep (FNARR X X) ID TFnApp :: TyRep (FNARR k k') f -> TyRep k a -> TyRep k' (FNAPP f a) -type family - IK (kind::KIND) :: Type where +type IK :: KIND -> Type +type family IK k where IK X = Type IK (FNARR k k') = Fn (IK k) (IK k') -type family - IT (ty::TY kind) :: IK kind where +type IT :: TY kind -> IK kind +type family IT t where IT ID = IdSym IT (FNAPP f x) = IT f @@ IT x diff --git a/testsuite/tests/dependent/should_compile/T14749.hs b/testsuite/tests/dependent/should_compile/T14749.hs index 5e9bfb0ea4ae..352685666198 100644 --- a/testsuite/tests/dependent/should_compile/T14749.hs +++ b/testsuite/tests/dependent/should_compile/T14749.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE GADTs, TypeOperators, DataKinds, TypeFamilies, PolyKinds, TypeFamilyDependencies #-} module T14749 where @@ -15,11 +14,13 @@ type family IK (k :: KIND) = (res :: Type) where IK STAR = Type IK (a:>b) = IK a -> IK b -type family I (t :: Ty k) = (res :: IK k) where +type I :: Ty k -> IK k +type family I t = res where I TMaybe = Maybe I (TApp f a) = (I f) (I a) -data TyRep (k :: KIND) (t :: Ty k) where +type TyRep :: forall (k :: KIND) -> Ty k -> Type +data TyRep k t where TyMaybe :: TyRep (STAR:>STAR) TMaybe TyApp :: TyRep (a:>b) f -> TyRep a x -> TyRep b (TApp f x) diff --git a/testsuite/tests/dependent/should_compile/T16326_Compile1.hs b/testsuite/tests/dependent/should_compile/T16326_Compile1.hs index 857716d489fb..0efae546fc1b 100644 --- a/testsuite/tests/dependent/should_compile/T16326_Compile1.hs +++ b/testsuite/tests/dependent/should_compile/T16326_Compile1.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE PolyKinds #-} @@ -21,14 +20,9 @@ type DComp a (x :: a) = f (g x) --- Ensure that ElimList has a CUSK, beuas it is --- is used polymorphically its RHS (c.f. #16344) -type family ElimList (a :: Type) - (p :: [a] -> Type) - (s :: [a]) - (pNil :: p '[]) - (pCons :: forall (x :: a) (xs :: [a]) -> p xs -> p (x:xs)) - :: p s where +type ElimList :: forall (a :: Type) (p :: [a] -> Type) (s :: [a]) -> + p '[] -> (forall (x :: a) (xs :: [a]) -> p xs -> p (x:xs)) -> p s +type family ElimList a p s pNil pCons where forall a p pNil (pCons :: forall (x :: a) (xs :: [a]) -> p xs -> p (x:xs)). ElimList a p '[] pNil pCons = pNil diff --git a/testsuite/tests/dependent/should_compile/TypeLevelVec.hs b/testsuite/tests/dependent/should_compile/TypeLevelVec.hs index 9f67efa64482..87d38b6cb6cf 100644 --- a/testsuite/tests/dependent/should_compile/TypeLevelVec.hs +++ b/testsuite/tests/dependent/should_compile/TypeLevelVec.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE DataKinds, PolyKinds, UnicodeSyntax, GADTs, NoImplicitPrelude, TypeOperators, TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-unticked-promoted-constructors #-} @@ -21,7 +20,8 @@ data Vec ∷ â„• → Type → Type where (:>) ∷ a → Vec n a → Vec (S n) a infixr 8 :> -type family (x ∷ Vec n a) ++ (y ∷ Vec m a) ∷ Vec (n + m) a where +type (++) ∷ Vec n a → Vec m a → Vec (n + m) a +type family x ++ y where Nil ++ y = y (x :> xs) ++ y = x :> (xs ++ y) infixl 5 ++ diff --git a/testsuite/tests/dependent/should_compile/dynamic-paper.hs b/testsuite/tests/dependent/should_compile/dynamic-paper.hs index eaba011625b6..f9678cd46f33 100644 --- a/testsuite/tests/dependent/should_compile/dynamic-paper.hs +++ b/testsuite/tests/dependent/should_compile/dynamic-paper.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {- This is the code extracted from "A reflection on types", by Simon PJ, Stephanie Weirich, Richard Eisenberg, and Dimitrios Vytiniotis, 2016. -} @@ -186,7 +185,8 @@ dynFst (Dyn (rpab :: TypeRep pab) (x :: pab)) eqT :: forall k1 k2 (a :: k1) (b :: k2). TypeRep a -> TypeRep b -> Maybe (a :~: b) -data (a :: k1) :~: (b :: k2) where +type (:~:) :: k1 -> k2 -> Type +data a :~: b where Refl :: forall k (a :: k). a :~: a castDance :: (Typeable a, Typeable b) => a -> Maybe b @@ -236,7 +236,8 @@ data OrderingT a b where EQT :: OrderingT t t GTT :: OrderingT a b -data TypeRep (a :: k) where +type TypeRep :: k -> Type +data TypeRep a where TrApp :: TypeRep a -> TypeRep b -> TypeRep (a b) TrTyCon :: TyCon -> TypeRep k -> TypeRep (a :: k) diff --git a/testsuite/tests/dependent/should_compile/mkGADTVars.hs b/testsuite/tests/dependent/should_compile/mkGADTVars.hs index 13a647b9ce9f..e45588a6041e 100644 --- a/testsuite/tests/dependent/should_compile/mkGADTVars.hs +++ b/testsuite/tests/dependent/should_compile/mkGADTVars.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE GADTs, PolyKinds, RankNTypes #-} module GADTVars where @@ -6,5 +5,6 @@ module GADTVars where import Data.Kind import Data.Proxy -data T (k1 :: Type) (k2 :: Type) (a :: k2) (b :: k2) where +type T :: Type -> forall (k2 :: Type) -> k2 -> k2 -> Type +data T k1 k2 a b where MkT :: T x1 Type (Proxy (y :: x1), z) z diff --git a/testsuite/tests/dependent/should_fail/T13601.hs b/testsuite/tests/dependent/should_fail/T13601.hs index 7667201add18..814b4d1e90ae 100644 --- a/testsuite/tests/dependent/should_fail/T13601.hs +++ b/testsuite/tests/dependent/should_fail/T13601.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE TypeFamilies, DataKinds, PolyKinds #-} import GHC.Exts @@ -16,25 +15,32 @@ type family -- Rep PtrRepUnlifted = IntRep -- Rep PtrRepLifted = PtrRepLifted +type Eq :: TYPE rep -> Constraint class Boolean (Logic a) => Eq (a :: TYPE rep) where type Logic (a :: TYPE rep) :: TYPE (Rep rep) (==) :: a -> a -> Logic a +type POrd :: TYPE rep -> Constraint class Eq a => POrd (a :: TYPE rep) where inf :: a -> a -> a +type MinBound :: TYPE rep -> Constraint class POrd a => MinBound (a :: TYPE rep) where minBound :: () -> a +type Lattice :: TYPE rep -> Constraint class POrd a => Lattice (a :: TYPE rep) where sup :: a -> a -> a +type Bounded :: TYPE rep -> Constraint class (Lattice a, MinBound a) => Bounded (a :: TYPE rep) where maxBound :: () -> a +type Complemented :: TYPE rep -> Constraint class Bounded a => Complemented (a :: TYPE rep) where not :: a -> a +type Heyting :: TYPE rep -> Constraint class Bounded a => Heyting (a :: TYPE rep) where infixr 3 ==> (==>) :: a -> a -> a diff --git a/testsuite/tests/dependent/should_fail/T13780c.hs b/testsuite/tests/dependent/should_fail/T13780c.hs index c26f9ddbe997..dfa52b62e758 100644 --- a/testsuite/tests/dependent/should_fail/T13780c.hs +++ b/testsuite/tests/dependent/should_fail/T13780c.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE DataKinds, PolyKinds #-} @@ -7,7 +6,7 @@ module T13780c where import Data.Kind import T13780b -type family ElimBool (p :: Bool -> Type) (b :: Bool) (s :: Sing b) - (pFalse :: p False) (pTrue :: p True) :: p b where +type ElimBool :: (Bool -> Type) -> forall (b :: Bool) -> Sing b -> p False -> p True -> p b +type family ElimBool p b s pFalse pTrue where ElimBool _ _ SFalse pFalse _ = pFalse ElimBool _ _ STrue _ pTrue = pTrue diff --git a/testsuite/tests/dependent/should_fail/T13780c.stderr b/testsuite/tests/dependent/should_fail/T13780c.stderr index 51291ba9ae83..24c5157f8faa 100644 --- a/testsuite/tests/dependent/should_fail/T13780c.stderr +++ b/testsuite/tests/dependent/should_fail/T13780c.stderr @@ -1,13 +1,13 @@ [1 of 2] Compiling T13780b ( T13780b.hs, T13780b.o ) [2 of 2] Compiling T13780c ( T13780c.hs, T13780c.o ) -T13780c.hs:12:16: error: [GHC-64578] +T13780c.hs:11:16: error: [GHC-64578] • Data constructor ‘SFalse’ cannot be used here (it comes from a data family instance) • In the third argument of ‘ElimBool’, namely ‘SFalse’ In the type family declaration for ‘ElimBool’ -T13780c.hs:13:16: error: [GHC-64578] +T13780c.hs:12:16: error: [GHC-64578] • Data constructor ‘STrue’ cannot be used here (it comes from a data family instance) • In the third argument of ‘ElimBool’, namely ‘STrue’ diff --git a/testsuite/tests/dependent/should_fail/T15380.hs b/testsuite/tests/dependent/should_fail/T15380.hs index ac81e5532b25..6dbe330eda52 100644 --- a/testsuite/tests/dependent/should_fail/T15380.hs +++ b/testsuite/tests/dependent/should_fail/T15380.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE DataKinds #-} @@ -14,7 +13,8 @@ class Generic a where class PGeneric a where type To a (x :: Rep a) :: a -type family MDefault (x :: a) :: a where +type MDefault :: a -> a +type family MDefault x where MDefault x = To (M x) class C a where diff --git a/testsuite/tests/ghci/scripts/T7939.hs b/testsuite/tests/ghci/scripts/T7939.hs index 493c6538d138..1f12bedf92f0 100644 --- a/testsuite/tests/ghci/scripts/T7939.hs +++ b/testsuite/tests/ghci/scripts/T7939.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE TypeFamilies, PolyKinds, DataKinds, TypeOperators #-} module T7939 where import Data.Kind (Type) @@ -23,6 +22,7 @@ type family K a where K '[] = Nothing K (h ': t) = Just h -type family L (a :: k) (b :: Type) :: k where +type L :: k -> Type -> k +type family L a b where L Int Int = Bool L Maybe Bool = IO diff --git a/testsuite/tests/ghci/scripts/T7939.stdout b/testsuite/tests/ghci/scripts/T7939.stdout index 83445adc242e..54a633db4fc1 100644 --- a/testsuite/tests/ghci/scripts/T7939.stdout +++ b/testsuite/tests/ghci/scripts/T7939.stdout @@ -2,32 +2,32 @@ type Foo :: forall {k}. k -> Constraint class Foo a where type Bar :: forall {k}. k -> * -> * type family Bar a b - -- Defined at T7939.hs:7:4 + -- Defined at T7939.hs:6:4 Bar :: k -> * -> * type F :: * -> * type family F a - -- Defined at T7939.hs:9:1 -type instance F Int = Bool -- Defined at T7939.hs:10:15 + -- Defined at T7939.hs:8:1 +type instance F Int = Bool -- Defined at T7939.hs:9:15 F :: * -> * type G :: * -> * type family G a where G Int = Bool - -- Defined at T7939.hs:12:1 + -- Defined at T7939.hs:11:1 G :: * -> * type H :: Bool -> Bool type family H a where H False = True - -- Defined at T7939.hs:15:1 + -- Defined at T7939.hs:14:1 H :: Bool -> Bool type J :: forall {a}. [a] -> Bool type family J a1 where J '[] = False forall a (h :: a) (t :: [a]). J (h : t) = True - -- Defined at T7939.hs:18:1 + -- Defined at T7939.hs:17:1 J :: [a] -> Bool type K :: forall {a}. [a] -> Maybe a type family K a1 where K '[] = Nothing forall a (h :: a) (t :: [a]). K (h : t) = Just h - -- Defined at T7939.hs:22:1 + -- Defined at T7939.hs:21:1 K :: [a] -> Maybe a diff --git a/testsuite/tests/indexed-types/should_compile/T14554.hs b/testsuite/tests/indexed-types/should_compile/T14554.hs index e101fbdc7491..2ff9b966ee30 100644 --- a/testsuite/tests/indexed-types/should_compile/T14554.hs +++ b/testsuite/tests/indexed-types/should_compile/T14554.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# Language UndecidableInstances, DataKinds, TypeOperators, TypeFamilies, PolyKinds, GADTs, LambdaCase, ScopedTypeVariables #-} @@ -17,17 +16,20 @@ data TY :: KIND -> Type where ID :: TY (FNARR X X) FNAPP :: TY (FNARR k k') -> TY k -> TY k' -data TyRep (kind::KIND) :: TY kind -> Type where +type TyRep :: forall (kind::KIND) -> TY kind -> Type +data TyRep k t where TID :: TyRep (FNARR X X) ID TFnApp :: TyRep (FNARR k k') f -> TyRep k a -> TyRep k' (FNAPP f a) -type family IK (kind::KIND) :: Type where +type IK :: KIND -> Type +type family IK k where IK X = Type IK (FNARR k k') = IK k ~> IK k' -type family IT (ty::TY kind) :: IK kind +type IT :: TY kind -> IK kind +type family IT t zero :: TyRep X a -> IT a zero x = case x of diff --git a/testsuite/tests/indexed-types/should_compile/T15122.hs b/testsuite/tests/indexed-types/should_compile/T15122.hs index ac10b530a045..fdc0d77f61b2 100644 --- a/testsuite/tests/indexed-types/should_compile/T15122.hs +++ b/testsuite/tests/indexed-types/should_compile/T15122.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} @@ -9,7 +8,8 @@ module T15122 where import Data.Kind import Data.Proxy -data IsStar (a :: k) where +type IsStar :: k -> Type +data IsStar a where IsStar :: IsStar (a :: Type) type family F (a :: k) :: k diff --git a/testsuite/tests/indexed-types/should_compile/T15352.hs b/testsuite/tests/indexed-types/should_compile/T15352.hs index 0f8e5614cfe1..7e7a80222fb2 100644 --- a/testsuite/tests/indexed-types/should_compile/T15352.hs +++ b/testsuite/tests/indexed-types/should_compile/T15352.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE TypeFamilies #-} @@ -16,18 +15,16 @@ type Hom k = k -> k -> Type type family Ob (p :: Hom k) :: k -> Constraint +type Functor' :: forall i j. + (i -> Constraint) -> Hom i -> Hom i -> + (j -> Constraint) -> Hom j -> Hom j -> + (i -> j) -> Constraint class ( obP ~ Ob p , opP ~ Dom p , obQ ~ Ob q , opQ ~ Dom q , p ~ Dom f , q ~ Cod f - ) => Functor' (obP :: i -> Constraint) - (opP :: Hom i) - (p :: Hom i) - (obQ :: j -> Constraint) - (opQ :: Hom j) - (q :: Hom j) - (f :: i -> j) where + ) => Functor' @i @j obP opP p obQ opQ q f where type Dom f :: Hom i type Cod f :: Hom j diff --git a/testsuite/tests/indexed-types/should_compile/T16356_Compile1.hs b/testsuite/tests/indexed-types/should_compile/T16356_Compile1.hs index 6622d513d7f8..3a6c954212a8 100644 --- a/testsuite/tests/indexed-types/should_compile/T16356_Compile1.hs +++ b/testsuite/tests/indexed-types/should_compile/T16356_Compile1.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE TypeApplications #-} @@ -9,7 +8,8 @@ import Data.Kind (Type) data B (a :: k) -type family FClosed :: k -> Type where +type FClosed :: k -> Type +type family FClosed @k where FClosed @k = B @k type family FOpen :: k -> Type diff --git a/testsuite/tests/indexed-types/should_compile/T17008b.hs b/testsuite/tests/indexed-types/should_compile/T17008b.hs index 845eb8329410..e5cb4b11c5ba 100644 --- a/testsuite/tests/indexed-types/should_compile/T17008b.hs +++ b/testsuite/tests/indexed-types/should_compile/T17008b.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE PolyKinds #-} @@ -10,19 +9,27 @@ import Data.Kind type family ConstType1 (a :: Type) :: Type where ConstType1 _ = Type -type family F1 (x :: ConstType1 a) :: Type where +type F1 :: ConstType1 a -> Type +type family F1 x where F1 @a (x :: ConstType1 a) = a -type family F2 (x :: ConstType1 a) :: ConstType1 a where + +type F2 :: ConstType1 a -> ConstType1 a +type family F2 x where F2 @a (x :: ConstType1 a) = x :: ConstType1 a + type F3 (x :: ConstType1 a) = a type F4 (x :: ConstType1 a) = x :: ConstType1 a type ConstType2 (a :: Type) = Type -type family G1 (x :: ConstType2 a) :: Type where +type G1 :: ConstType2 a -> Type +type family G1 x where G1 @a (x :: ConstType2 a) = a -type family G2 (x :: ConstType2 a) :: ConstType2 a where + +type G2 :: ConstType2 a -> Type +type family G2 x where G2 @a (x :: ConstType2 a) = x :: ConstType1 a + type G3 (x :: ConstType2 a) = a type G4 (x :: ConstType2 a) = x :: ConstType2 a diff --git a/testsuite/tests/indexed-types/should_fail/ClosedFam3.hs b/testsuite/tests/indexed-types/should_fail/ClosedFam3.hs index 5d0366446d0a..3dd140b615b3 100644 --- a/testsuite/tests/indexed-types/should_fail/ClosedFam3.hs +++ b/testsuite/tests/indexed-types/should_fail/ClosedFam3.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE TypeFamilies #-} module ClosedFam3 where diff --git a/testsuite/tests/indexed-types/should_fail/ClosedFam3.hs-boot b/testsuite/tests/indexed-types/should_fail/ClosedFam3.hs-boot index 7b72a0276a99..705114e64ff0 100644 --- a/testsuite/tests/indexed-types/should_fail/ClosedFam3.hs-boot +++ b/testsuite/tests/indexed-types/should_fail/ClosedFam3.hs-boot @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE TypeFamilies, PolyKinds #-} module ClosedFam3 where @@ -12,5 +11,6 @@ type family Bar a where Bar Int = Bool Bar Double = Char -type family Baz (a :: k) :: Type where +type Baz :: k -> Type +type family Baz a where Baz Int = Bool diff --git a/testsuite/tests/indexed-types/should_fail/ClosedFam3.stderr b/testsuite/tests/indexed-types/should_fail/ClosedFam3.stderr index f02c4d94bc03..fc297a1d0c7e 100644 --- a/testsuite/tests/indexed-types/should_fail/ClosedFam3.stderr +++ b/testsuite/tests/indexed-types/should_fail/ClosedFam3.stderr @@ -1,5 +1,5 @@ -ClosedFam3.hs-boot:8:1: error: [GHC-15843] +ClosedFam3.hs-boot:7:1: error: [GHC-15843] Type constructor ‘Foo’ has conflicting definitions in the module and its hs-boot file. Main module: type Foo :: * -> * @@ -12,7 +12,7 @@ ClosedFam3.hs-boot:8:1: error: [GHC-15843] Type family equations do not match: The number of equations differs. -ClosedFam3.hs-boot:11:1: error: [GHC-15843] +ClosedFam3.hs-boot:10:1: error: [GHC-15843] Type constructor ‘Bar’ has conflicting definitions in the module and its hs-boot file. Main module: type Bar :: * -> * diff --git a/testsuite/tests/indexed-types/should_fail/T14246.hs b/testsuite/tests/indexed-types/should_fail/T14246.hs index 71e59f8c71d1..5e3c56c3ddd4 100644 --- a/testsuite/tests/indexed-types/should_fail/T14246.hs +++ b/testsuite/tests/indexed-types/should_fail/T14246.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE RankNTypes, GADTs, TypeOperators, PolyKinds, DataKinds, TypeFamilies, AllowAmbiguousTypes, UndecidableInstances #-} module T14246 where @@ -7,7 +6,8 @@ import Data.Kind data Nat = Z | S Nat -data Vect :: Nat -> Type -> Type where +type Vect :: Nat -> Type -> Type +data Vect n a where Nil :: Vect Z a Cons :: a -> Vect n a -> Vect (S n) a @@ -15,10 +15,12 @@ data Label a = Label a data L -type family KLN (n :: k) :: Nat where +type KLN :: k -> Nat +type family KLN n where KLN (f :: v -> k) = S (KLN (forall t. f t)) KLN (f :: Type) = Z -type family Reveal (n :: k) (l :: Vect (KLN n) L) :: Type where +type Reveal :: forall k. forall (n :: k) -> Vect (KLN n) L -> Type +type family Reveal n l where Reveal (f :: v -> k) (Cons (Label (t :: v)) l) = Reveal (f t) l Reveal (a :: Type) Nil = a diff --git a/testsuite/tests/indexed-types/should_fail/T14246.stderr b/testsuite/tests/indexed-types/should_fail/T14246.stderr index 91aebe9dc508..7ab738a56ea0 100644 --- a/testsuite/tests/indexed-types/should_fail/T14246.stderr +++ b/testsuite/tests/indexed-types/should_fail/T14246.stderr @@ -1,10 +1,10 @@ -T14246.hs:19:5: error: [GHC-91510] +T14246.hs:20:5: error: [GHC-91510] • Illegal polymorphic type: forall (t :: v). f t • In the equations for closed type family ‘KLN’ In the type family declaration for ‘KLN’ -T14246.hs:23:27: error: [GHC-83865] +T14246.hs:25:27: error: [GHC-83865] • Couldn't match kind ‘*’ with ‘L’ Expected kind ‘Vect (KLN f) L’, but ‘Cons (Label (t :: v)) l’ has kind ‘Vect (S (KLN (f t))) (*)’ @@ -12,7 +12,7 @@ T14246.hs:23:27: error: [GHC-83865] ‘(Cons (Label (t :: v)) l)’ In the type family declaration for ‘Reveal’ -T14246.hs:23:67: error: [GHC-83865] +T14246.hs:25:67: error: [GHC-83865] • Couldn't match kind ‘*’ with ‘L’ Expected kind ‘Vect (KLN (f t)) L’, but ‘l’ has kind ‘Vect (KLN (f t)) (*)’ @@ -20,7 +20,7 @@ T14246.hs:23:67: error: [GHC-83865] In the type ‘Reveal (f t) l’ In the type family declaration for ‘Reveal’ -T14246.hs:24:24: error: [GHC-83865] +T14246.hs:26:24: error: [GHC-83865] • Couldn't match kind ‘Z’ with ‘KLN a’ Expected kind ‘Vect (KLN a) L’, but ‘Nil’ has kind ‘Vect Z L’ • In the second argument of ‘Reveal’, namely ‘Nil’ diff --git a/testsuite/tests/parser/should_compile/DumpParsedAst.hs b/testsuite/tests/parser/should_compile/DumpParsedAst.hs index cd7c7c53e93f..faa5b97684fa 100644 --- a/testsuite/tests/parser/should_compile/DumpParsedAst.hs +++ b/testsuite/tests/parser/should_compile/DumpParsedAst.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE DataKinds, GADTs, PolyKinds, RankNTypes, TypeOperators, TypeFamilies , TypeApplications #-} @@ -7,6 +6,7 @@ import Data.Kind data Peano = Zero | Succ Peano +type Length :: [k] -> Peano type family Length (as :: [k]) :: Peano where Length (a : as) = Succ (Length as) Length '[] = Zero @@ -14,6 +14,7 @@ type family Length (as :: [k]) :: Peano where -- vis kind app data T f (a :: k) = MkT (f a) +type F1 :: k -> (k -> Type) -> Type type family F1 (a :: k) (f :: k -> Type) :: Type where F1 @Peano a f = T @Peano f a diff --git a/testsuite/tests/parser/should_compile/DumpParsedAst.stderr b/testsuite/tests/parser/should_compile/DumpParsedAst.stderr index da150a03a62c..34eefa8fd524 100644 --- a/testsuite/tests/parser/should_compile/DumpParsedAst.stderr +++ b/testsuite/tests/parser/should_compile/DumpParsedAst.stderr @@ -10,13 +10,13 @@ { DumpParsedAst.hs:1:1 } (UnchangedAnchor)) (AnnsModule - [(AddEpAnn AnnModule (EpaSpan { DumpParsedAst.hs:5:1-6 })) - ,(AddEpAnn AnnWhere (EpaSpan { DumpParsedAst.hs:5:22-26 }))] + [(AddEpAnn AnnModule (EpaSpan { DumpParsedAst.hs:4:1-6 })) + ,(AddEpAnn AnnWhere (EpaSpan { DumpParsedAst.hs:4:22-26 }))] [] (Just ((,) - { DumpParsedAst.hs:25:1 } - { DumpParsedAst.hs:24:17-23 }))) + { DumpParsedAst.hs:26:1 } + { DumpParsedAst.hs:25:17-23 }))) (EpaCommentsBalanced [] [])) @@ -26,19 +26,19 @@ (Nothing)) (Just (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:5:8-20 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:4:8-20 }) {ModuleName: DumpParsedAst})) (Nothing) [(L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:6:1-16 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:5:1-16 }) (ImportDecl (XImportDeclPass (EpAnn (Anchor - { DumpParsedAst.hs:6:1-6 } + { DumpParsedAst.hs:5:1-6 } (UnchangedAnchor)) (EpAnnImportDecl - (EpaSpan { DumpParsedAst.hs:6:1-6 }) + (EpaSpan { DumpParsedAst.hs:5:1-6 }) (Nothing) (Nothing) (Nothing) @@ -49,7 +49,7 @@ (NoSourceText) (False)) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:6:8-16 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:5:8-16 }) {ModuleName: Data.Kind}) (NoRawPkgQual) (NotBoot) @@ -60,25 +60,25 @@ [(L (SrcSpanAnn (EpAnn (Anchor - { DumpParsedAst.hs:8:1-30 } + { DumpParsedAst.hs:7:1-30 } (UnchangedAnchor)) (AnnListItem []) (EpaComments - [])) { DumpParsedAst.hs:8:1-30 }) + [])) { DumpParsedAst.hs:7:1-30 }) (TyClD (NoExtField) (DataDecl (EpAnn (Anchor - { DumpParsedAst.hs:8:1-30 } + { DumpParsedAst.hs:7:1-30 } (UnchangedAnchor)) - [(AddEpAnn AnnData (EpaSpan { DumpParsedAst.hs:8:1-4 })) - ,(AddEpAnn AnnEqual (EpaSpan { DumpParsedAst.hs:8:12 }))] + [(AddEpAnn AnnData (EpaSpan { DumpParsedAst.hs:7:1-4 })) + ,(AddEpAnn AnnEqual (EpaSpan { DumpParsedAst.hs:7:12 }))] (EpaComments [])) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:8:6-10 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:7:6-10 }) (Unqual {OccName: Peano})) (HsQTvs @@ -95,23 +95,23 @@ [(L (SrcSpanAnn (EpAnn (Anchor - { DumpParsedAst.hs:8:14-17 } + { DumpParsedAst.hs:7:14-17 } (UnchangedAnchor)) (AnnListItem [(AddVbarAnn - (EpaSpan { DumpParsedAst.hs:8:19 }))]) + (EpaSpan { DumpParsedAst.hs:7:19 }))]) (EpaComments - [])) { DumpParsedAst.hs:8:14-17 }) + [])) { DumpParsedAst.hs:7:14-17 }) (ConDeclH98 (EpAnn (Anchor - { DumpParsedAst.hs:8:14-17 } + { DumpParsedAst.hs:7:14-17 } (UnchangedAnchor)) [] (EpaComments [])) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:8:14-17 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:7:14-17 }) (Unqual {OccName: Zero})) (False) @@ -122,17 +122,17 @@ []) (Nothing))) ,(L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:8:21-30 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:7:21-30 }) (ConDeclH98 (EpAnn (Anchor - { DumpParsedAst.hs:8:21-30 } + { DumpParsedAst.hs:7:21-30 } (UnchangedAnchor)) [] (EpaComments [])) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:8:21-24 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:7:21-24 }) (Unqual {OccName: Succ})) (False) @@ -150,22 +150,110 @@ (NoTokenLoc) (HsNormalTok)))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:8:26-30 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:7:26-30 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:8:26-30 } + { DumpParsedAst.hs:7:26-30 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:8:26-30 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:7:26-30 }) (Unqual {OccName: Peano})))))]) (Nothing)))]) [])))) + ,(L + (SrcSpanAnn (EpAnn + (Anchor + { DumpParsedAst.hs:9:1-27 } + (UnchangedAnchor)) + (AnnListItem + []) + (EpaComments + [])) { DumpParsedAst.hs:9:1-27 }) + (KindSigD + (NoExtField) + (StandaloneKindSig + (EpAnn + (Anchor + { DumpParsedAst.hs:9:1-27 } + (UnchangedAnchor)) + [(AddEpAnn AnnType (EpaSpan { DumpParsedAst.hs:9:1-4 })) + ,(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:9:13-14 }))] + (EpaComments + [])) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:9:6-11 }) + (Unqual + {OccName: Length})) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:9:16-27 }) + (HsSig + (NoExtField) + (HsOuterImplicit + (NoExtField)) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:9:16-27 }) + (HsFunTy + (EpAnn + (Anchor + { DumpParsedAst.hs:9:16-18 } + (UnchangedAnchor)) + (NoEpAnns) + (EpaComments + [])) + (HsUnrestrictedArrow + (L + (TokenLoc + (EpaSpan { DumpParsedAst.hs:9:20-21 })) + (HsNormalTok))) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:9:16-18 }) + (HsListTy + (EpAnn + (Anchor + { DumpParsedAst.hs:9:16 } + (UnchangedAnchor)) + (AnnParen + (AnnParensSquare) + (EpaSpan { DumpParsedAst.hs:9:16 }) + (EpaSpan { DumpParsedAst.hs:9:18 })) + (EpaComments + [])) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:9:17 }) + (HsTyVar + (EpAnn + (Anchor + { DumpParsedAst.hs:9:17 } + (UnchangedAnchor)) + [] + (EpaComments + [])) + (NotPromoted) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:9:17 }) + (Unqual + {OccName: k})))))) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:9:23-27 }) + (HsTyVar + (EpAnn + (Anchor + { DumpParsedAst.hs:9:23-27 } + (UnchangedAnchor)) + [] + (EpaComments + [])) + (NotPromoted) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:9:23-27 }) + (Unqual + {OccName: Peano}))))))))))) ,(L (SrcSpanAnn (EpAnn (Anchor @@ -611,12 +699,160 @@ ,(L (SrcSpanAnn (EpAnn (Anchor - { DumpParsedAst.hs:(17,1)-(18,30) } + { DumpParsedAst.hs:17:1-35 } + (UnchangedAnchor)) + (AnnListItem + []) + (EpaComments + [])) { DumpParsedAst.hs:17:1-35 }) + (KindSigD + (NoExtField) + (StandaloneKindSig + (EpAnn + (Anchor + { DumpParsedAst.hs:17:1-35 } + (UnchangedAnchor)) + [(AddEpAnn AnnType (EpaSpan { DumpParsedAst.hs:17:1-4 })) + ,(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:17:9-10 }))] + (EpaComments + [])) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:6-7 }) + (Unqual + {OccName: F1})) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:12-35 }) + (HsSig + (NoExtField) + (HsOuterImplicit + (NoExtField)) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:12-35 }) + (HsFunTy + (EpAnn + (Anchor + { DumpParsedAst.hs:17:12 } + (UnchangedAnchor)) + (NoEpAnns) + (EpaComments + [])) + (HsUnrestrictedArrow + (L + (TokenLoc + (EpaSpan { DumpParsedAst.hs:17:14-15 })) + (HsNormalTok))) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:12 }) + (HsTyVar + (EpAnn + (Anchor + { DumpParsedAst.hs:17:12 } + (UnchangedAnchor)) + [] + (EpaComments + [])) + (NotPromoted) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:12 }) + (Unqual + {OccName: k})))) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:17-35 }) + (HsFunTy + (EpAnn + (Anchor + { DumpParsedAst.hs:17:17-27 } + (UnchangedAnchor)) + (NoEpAnns) + (EpaComments + [])) + (HsUnrestrictedArrow + (L + (TokenLoc + (EpaSpan { DumpParsedAst.hs:17:29-30 })) + (HsNormalTok))) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:17-27 }) + (HsParTy + (EpAnn + (Anchor + { DumpParsedAst.hs:17:17 } + (UnchangedAnchor)) + (AnnParen + (AnnParens) + (EpaSpan { DumpParsedAst.hs:17:17 }) + (EpaSpan { DumpParsedAst.hs:17:27 })) + (EpaComments + [])) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:18-26 }) + (HsFunTy + (EpAnn + (Anchor + { DumpParsedAst.hs:17:18 } + (UnchangedAnchor)) + (NoEpAnns) + (EpaComments + [])) + (HsUnrestrictedArrow + (L + (TokenLoc + (EpaSpan { DumpParsedAst.hs:17:20-21 })) + (HsNormalTok))) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:18 }) + (HsTyVar + (EpAnn + (Anchor + { DumpParsedAst.hs:17:18 } + (UnchangedAnchor)) + [] + (EpaComments + [])) + (NotPromoted) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:18 }) + (Unqual + {OccName: k})))) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:23-26 }) + (HsTyVar + (EpAnn + (Anchor + { DumpParsedAst.hs:17:23-26 } + (UnchangedAnchor)) + [] + (EpaComments + [])) + (NotPromoted) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:23-26 }) + (Unqual + {OccName: Type})))))))) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:32-35 }) + (HsTyVar + (EpAnn + (Anchor + { DumpParsedAst.hs:17:32-35 } + (UnchangedAnchor)) + [] + (EpaComments + [])) + (NotPromoted) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:32-35 }) + (Unqual + {OccName: Type}))))))))))))) + ,(L + (SrcSpanAnn (EpAnn + (Anchor + { DumpParsedAst.hs:(18,1)-(19,30) } (UnchangedAnchor)) (AnnListItem []) (EpaComments - [])) { DumpParsedAst.hs:(17,1)-(18,30) }) + [])) { DumpParsedAst.hs:(18,1)-(19,30) }) (TyClD (NoExtField) (FamDecl @@ -624,28 +860,28 @@ (FamilyDecl (EpAnn (Anchor - { DumpParsedAst.hs:(17,1)-(18,30) } + { DumpParsedAst.hs:(18,1)-(19,30) } (UnchangedAnchor)) - [(AddEpAnn AnnType (EpaSpan { DumpParsedAst.hs:17:1-4 })) - ,(AddEpAnn AnnFamily (EpaSpan { DumpParsedAst.hs:17:6-11 })) - ,(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:17:42-43 })) - ,(AddEpAnn AnnWhere (EpaSpan { DumpParsedAst.hs:17:50-54 }))] + [(AddEpAnn AnnType (EpaSpan { DumpParsedAst.hs:18:1-4 })) + ,(AddEpAnn AnnFamily (EpaSpan { DumpParsedAst.hs:18:6-11 })) + ,(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:18:42-43 })) + ,(AddEpAnn AnnWhere (EpaSpan { DumpParsedAst.hs:18:50-54 }))] (EpaComments [])) (ClosedTypeFamily (Just [(L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:3-30 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:19:3-30 }) (FamEqn (EpAnn (Anchor - { DumpParsedAst.hs:18:3-30 } + { DumpParsedAst.hs:19:3-30 } (UnchangedAnchor)) - [(AddEpAnn AnnEqual (EpaSpan { DumpParsedAst.hs:18:17 }))] + [(AddEpAnn AnnEqual (EpaSpan { DumpParsedAst.hs:19:17 }))] (EpaComments [])) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:3-4 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:19:3-4 }) (Unqual {OccName: F1})) (HsOuterImplicit @@ -653,194 +889,194 @@ [(HsTypeArg (L (TokenLoc - (EpaSpan { DumpParsedAst.hs:18:6 })) + (EpaSpan { DumpParsedAst.hs:19:6 })) (HsTok)) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:7-11 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:19:7-11 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:18:7-11 } + { DumpParsedAst.hs:19:7-11 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:7-11 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:19:7-11 }) (Unqual {OccName: Peano}))))) ,(HsValArg (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:13 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:19:13 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:18:13 } + { DumpParsedAst.hs:19:13 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:13 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:19:13 }) (Unqual {OccName: a}))))) ,(HsValArg (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:15 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:19:15 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:18:15 } + { DumpParsedAst.hs:19:15 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:15 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:19:15 }) (Unqual {OccName: f})))))] (Prefix) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:19-30 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:19:19-30 }) (HsAppTy (NoExtField) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:19-28 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:19:19-28 }) (HsAppTy (NoExtField) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:19-26 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:19:19-26 }) (HsAppKindTy (NoExtField) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:19 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:19:19 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:18:19 } + { DumpParsedAst.hs:19:19 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:19 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:19:19 }) (Unqual {OccName: T})))) (L (TokenLoc - (EpaSpan { DumpParsedAst.hs:18:21 })) + (EpaSpan { DumpParsedAst.hs:19:21 })) (HsTok)) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:22-26 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:19:22-26 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:18:22-26 } + { DumpParsedAst.hs:19:22-26 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:22-26 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:19:22-26 }) (Unqual {OccName: Peano})))))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:28 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:19:28 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:18:28 } + { DumpParsedAst.hs:19:28 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:28 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:19:28 }) (Unqual {OccName: f})))))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:30 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:19:30 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:18:30 } + { DumpParsedAst.hs:19:30 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:30 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:19:30 }) (Unqual {OccName: a}))))))))])) (TopLevel) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:13-14 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:13-14 }) (Unqual {OccName: F1})) (HsQTvs (NoExtField) [(L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:16-23 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:16-23 }) (KindedTyVar (EpAnn (Anchor - { DumpParsedAst.hs:17:16-23 } + { DumpParsedAst.hs:18:16-23 } (UnchangedAnchor)) - [(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:17:19-20 })) - ,(AddEpAnn AnnOpenP (EpaSpan { DumpParsedAst.hs:17:16 })) - ,(AddEpAnn AnnCloseP (EpaSpan { DumpParsedAst.hs:17:23 }))] + [(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:18:19-20 })) + ,(AddEpAnn AnnOpenP (EpaSpan { DumpParsedAst.hs:18:16 })) + ,(AddEpAnn AnnCloseP (EpaSpan { DumpParsedAst.hs:18:23 }))] (EpaComments [])) (HsBndrRequired) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:17 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:17 }) (Unqual {OccName: a})) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:22 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:22 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:17:22 } + { DumpParsedAst.hs:18:22 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:22 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:22 }) (Unqual {OccName: k})))))) ,(L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:25-40 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:25-40 }) (KindedTyVar (EpAnn (Anchor - { DumpParsedAst.hs:17:25-40 } + { DumpParsedAst.hs:18:25-40 } (UnchangedAnchor)) - [(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:17:28-29 })) - ,(AddEpAnn AnnOpenP (EpaSpan { DumpParsedAst.hs:17:25 })) - ,(AddEpAnn AnnCloseP (EpaSpan { DumpParsedAst.hs:17:40 }))] + [(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:18:28-29 })) + ,(AddEpAnn AnnOpenP (EpaSpan { DumpParsedAst.hs:18:25 })) + ,(AddEpAnn AnnCloseP (EpaSpan { DumpParsedAst.hs:18:40 }))] (EpaComments [])) (HsBndrRequired) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:26 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:26 }) (Unqual {OccName: f})) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:31-39 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:31-39 }) (HsFunTy (EpAnn (Anchor - { DumpParsedAst.hs:17:31 } + { DumpParsedAst.hs:18:31 } (UnchangedAnchor)) (NoEpAnns) (EpaComments @@ -848,70 +1084,70 @@ (HsUnrestrictedArrow (L (TokenLoc - (EpaSpan { DumpParsedAst.hs:17:33-34 })) + (EpaSpan { DumpParsedAst.hs:18:33-34 })) (HsNormalTok))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:31 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:31 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:17:31 } + { DumpParsedAst.hs:18:31 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:31 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:31 }) (Unqual {OccName: k})))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:36-39 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:36-39 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:17:36-39 } + { DumpParsedAst.hs:18:36-39 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:36-39 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:36-39 }) (Unqual {OccName: Type}))))))))]) (Prefix) (L (SrcSpanAnn (EpAnnNotUsed) - { DumpParsedAst.hs:17:42-48 }) + { DumpParsedAst.hs:18:42-48 }) (KindSig (NoExtField) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:45-48 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:45-48 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:17:45-48 } + { DumpParsedAst.hs:18:45-48 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:17:45-48 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:18:45-48 }) (Unqual {OccName: Type})))))) (Nothing))))) ,(L (SrcSpanAnn (EpAnn (Anchor - { DumpParsedAst.hs:20:1-33 } + { DumpParsedAst.hs:21:1-33 } (UnchangedAnchor)) (AnnListItem []) (EpaComments - [])) { DumpParsedAst.hs:20:1-33 }) + [])) { DumpParsedAst.hs:21:1-33 }) (TyClD (NoExtField) (FamDecl @@ -919,17 +1155,17 @@ (FamilyDecl (EpAnn (Anchor - { DumpParsedAst.hs:20:1-33 } + { DumpParsedAst.hs:21:1-33 } (UnchangedAnchor)) - [(AddEpAnn AnnData (EpaSpan { DumpParsedAst.hs:20:1-4 })) - ,(AddEpAnn AnnFamily (EpaSpan { DumpParsedAst.hs:20:6-11 })) - ,(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:20:17-18 }))] + [(AddEpAnn AnnData (EpaSpan { DumpParsedAst.hs:21:1-4 })) + ,(AddEpAnn AnnFamily (EpaSpan { DumpParsedAst.hs:21:6-11 })) + ,(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:21:17-18 }))] (EpaComments [])) (DataFamily) (TopLevel) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:20:13-15 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:13-15 }) (Unqual {OccName: Nat})) (HsQTvs @@ -939,15 +1175,15 @@ (L (SrcSpanAnn (EpAnnNotUsed) - { DumpParsedAst.hs:20:17-33 }) + { DumpParsedAst.hs:21:17-33 }) (KindSig (NoExtField) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:20:20-33 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:20-33 }) (HsFunTy (EpAnn (Anchor - { DumpParsedAst.hs:20:20 } + { DumpParsedAst.hs:21:20 } (UnchangedAnchor)) (NoEpAnns) (EpaComments @@ -955,29 +1191,29 @@ (HsUnrestrictedArrow (L (TokenLoc - (EpaSpan { DumpParsedAst.hs:20:22-23 })) + (EpaSpan { DumpParsedAst.hs:21:22-23 })) (HsNormalTok))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:20:20 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:20 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:20:20 } + { DumpParsedAst.hs:21:20 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:20:20 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:20 }) (Unqual {OccName: k})))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:20:25-33 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:25-33 }) (HsFunTy (EpAnn (Anchor - { DumpParsedAst.hs:20:25 } + { DumpParsedAst.hs:21:25 } (UnchangedAnchor)) (NoEpAnns) (EpaComments @@ -985,48 +1221,48 @@ (HsUnrestrictedArrow (L (TokenLoc - (EpaSpan { DumpParsedAst.hs:20:27-28 })) + (EpaSpan { DumpParsedAst.hs:21:27-28 })) (HsNormalTok))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:20:25 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:25 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:20:25 } + { DumpParsedAst.hs:21:25 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:20:25 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:25 }) (Unqual {OccName: k})))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:20:30-33 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:30-33 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:20:30-33 } + { DumpParsedAst.hs:21:30-33 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:20:30-33 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:30-33 }) (Unqual {OccName: Type})))))))))) (Nothing))))) ,(L (SrcSpanAnn (EpAnn (Anchor - { DumpParsedAst.hs:(21,1)-(22,45) } + { DumpParsedAst.hs:(22,1)-(23,45) } (UnchangedAnchor)) (AnnListItem []) (EpaComments - [])) { DumpParsedAst.hs:(21,1)-(22,45) }) + [])) { DumpParsedAst.hs:(22,1)-(23,45) }) (InstD (NoExtField) (DataFamInstD @@ -1035,65 +1271,65 @@ (FamEqn (EpAnn (Anchor - { DumpParsedAst.hs:(21,1)-(22,45) } + { DumpParsedAst.hs:(22,1)-(23,45) } (UnchangedAnchor)) - [(AddEpAnn AnnNewtype (EpaSpan { DumpParsedAst.hs:21:1-7 })) - ,(AddEpAnn AnnInstance (EpaSpan { DumpParsedAst.hs:21:9-16 })) - ,(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:21:39-40 })) - ,(AddEpAnn AnnWhere (EpaSpan { DumpParsedAst.hs:21:62-66 }))] + [(AddEpAnn AnnNewtype (EpaSpan { DumpParsedAst.hs:22:1-7 })) + ,(AddEpAnn AnnInstance (EpaSpan { DumpParsedAst.hs:22:9-16 })) + ,(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:22:39-40 })) + ,(AddEpAnn AnnWhere (EpaSpan { DumpParsedAst.hs:22:62-66 }))] (EpaComments [])) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:18-20 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:18-20 }) (Unqual {OccName: Nat})) (HsOuterImplicit (NoExtField)) [(HsValArg (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:22-37 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:22-37 }) (HsParTy (EpAnn (Anchor - { DumpParsedAst.hs:21:22 } + { DumpParsedAst.hs:22:22 } (UnchangedAnchor)) (AnnParen (AnnParens) - (EpaSpan { DumpParsedAst.hs:21:22 }) - (EpaSpan { DumpParsedAst.hs:21:37 })) + (EpaSpan { DumpParsedAst.hs:22:22 }) + (EpaSpan { DumpParsedAst.hs:22:37 })) (EpaComments [])) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:23-36 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:23-36 }) (HsKindSig (EpAnn (Anchor - { DumpParsedAst.hs:21:23 } + { DumpParsedAst.hs:22:23 } (UnchangedAnchor)) - [(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:21:25-26 }))] + [(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:22:25-26 }))] (EpaComments [])) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:23 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:23 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:21:23 } + { DumpParsedAst.hs:22:23 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:23 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:23 }) (Unqual {OccName: a})))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:28-36 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:28-36 }) (HsFunTy (EpAnn (Anchor - { DumpParsedAst.hs:21:28 } + { DumpParsedAst.hs:22:28 } (UnchangedAnchor)) (NoEpAnns) (EpaComments @@ -1101,36 +1337,36 @@ (HsUnrestrictedArrow (L (TokenLoc - (EpaSpan { DumpParsedAst.hs:21:30-31 })) + (EpaSpan { DumpParsedAst.hs:22:30-31 })) (HsNormalTok))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:28 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:28 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:21:28 } + { DumpParsedAst.hs:22:28 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:28 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:28 }) (Unqual {OccName: k})))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:33-36 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:33-36 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:21:33-36 } + { DumpParsedAst.hs:22:33-36 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:33-36 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:33-36 }) (Unqual {OccName: Type})))))))))))] (Prefix) @@ -1140,11 +1376,11 @@ (Nothing) (Just (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:42-60 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:42-60 }) (HsFunTy (EpAnn (Anchor - { DumpParsedAst.hs:21:42-52 } + { DumpParsedAst.hs:22:42-52 } (UnchangedAnchor)) (NoEpAnns) (EpaComments @@ -1152,27 +1388,27 @@ (HsUnrestrictedArrow (L (TokenLoc - (EpaSpan { DumpParsedAst.hs:21:54-55 })) + (EpaSpan { DumpParsedAst.hs:22:54-55 })) (HsNormalTok))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:42-52 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:42-52 }) (HsParTy (EpAnn (Anchor - { DumpParsedAst.hs:21:42 } + { DumpParsedAst.hs:22:42 } (UnchangedAnchor)) (AnnParen (AnnParens) - (EpaSpan { DumpParsedAst.hs:21:42 }) - (EpaSpan { DumpParsedAst.hs:21:52 })) + (EpaSpan { DumpParsedAst.hs:22:42 }) + (EpaSpan { DumpParsedAst.hs:22:52 })) (EpaComments [])) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:43-51 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:43-51 }) (HsFunTy (EpAnn (Anchor - { DumpParsedAst.hs:21:43 } + { DumpParsedAst.hs:22:43 } (UnchangedAnchor)) (NoEpAnns) (EpaComments @@ -1180,76 +1416,76 @@ (HsUnrestrictedArrow (L (TokenLoc - (EpaSpan { DumpParsedAst.hs:21:45-46 })) + (EpaSpan { DumpParsedAst.hs:22:45-46 })) (HsNormalTok))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:43 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:43 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:21:43 } + { DumpParsedAst.hs:22:43 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:43 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:43 }) (Unqual {OccName: k})))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:48-51 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:48-51 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:21:48-51 } + { DumpParsedAst.hs:22:48-51 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:48-51 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:48-51 }) (Unqual {OccName: Type})))))))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:57-60 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:57-60 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:21:57-60 } + { DumpParsedAst.hs:22:57-60 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:57-60 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:57-60 }) (Unqual {OccName: Type}))))))) (NewTypeCon (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:3-45 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:23:3-45 }) (ConDeclGADT (EpAnn (Anchor - { DumpParsedAst.hs:22:3-45 } + { DumpParsedAst.hs:23:3-45 } (UnchangedAnchor)) [] (EpaComments [])) (:| (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:3-5 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:23:3-5 }) (Unqual {OccName: Nat})) []) (L (TokenLoc - (EpaSpan { DumpParsedAst.hs:22:7-8 })) + (EpaSpan { DumpParsedAst.hs:23:7-8 })) (HsNormalTok)) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:10-45 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:23:10-45 }) (HsOuterImplicit (NoExtField))) (Nothing) @@ -1258,63 +1494,63 @@ (HsUnrestrictedArrow (L (TokenLoc - (EpaSpan { DumpParsedAst.hs:22:36-37 })) + (EpaSpan { DumpParsedAst.hs:23:36-37 })) (HsNormalTok))) (L (SrcSpanAnn (EpAnn (Anchor - { DumpParsedAst.hs:22:10-34 } + { DumpParsedAst.hs:23:10-34 } (UnchangedAnchor)) (AnnListItem []) (EpaComments - [])) { DumpParsedAst.hs:22:10-34 }) + [])) { DumpParsedAst.hs:23:10-34 }) (HsParTy (EpAnn (Anchor - { DumpParsedAst.hs:22:10 } + { DumpParsedAst.hs:23:10 } (UnchangedAnchor)) (AnnParen (AnnParens) - (EpaSpan { DumpParsedAst.hs:22:10 }) - (EpaSpan { DumpParsedAst.hs:22:34 })) + (EpaSpan { DumpParsedAst.hs:23:10 }) + (EpaSpan { DumpParsedAst.hs:23:34 })) (EpaComments [])) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:11-33 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:23:11-33 }) (HsForAllTy (NoExtField) (HsForAllInvis (EpAnn (Anchor - { DumpParsedAst.hs:22:11-16 } + { DumpParsedAst.hs:23:11-16 } (UnchangedAnchor)) ((,) - (AddEpAnn AnnForall (EpaSpan { DumpParsedAst.hs:22:11-16 })) - (AddEpAnn AnnDot (EpaSpan { DumpParsedAst.hs:22:20 }))) + (AddEpAnn AnnForall (EpaSpan { DumpParsedAst.hs:23:11-16 })) + (AddEpAnn AnnDot (EpaSpan { DumpParsedAst.hs:23:20 }))) (EpaComments [])) [(L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:18-19 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:23:18-19 }) (UserTyVar (EpAnn (Anchor - { DumpParsedAst.hs:22:18-19 } + { DumpParsedAst.hs:23:18-19 } (UnchangedAnchor)) [] (EpaComments [])) (SpecifiedSpec) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:18-19 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:23:18-19 }) (Unqual {OccName: xx}))))]) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:22-33 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:23:22-33 }) (HsFunTy (EpAnn (Anchor - { DumpParsedAst.hs:22:22-25 } + { DumpParsedAst.hs:23:22-25 } (UnchangedAnchor)) (NoEpAnns) (EpaComments @@ -1322,127 +1558,127 @@ (HsUnrestrictedArrow (L (TokenLoc - (EpaSpan { DumpParsedAst.hs:22:27-28 })) + (EpaSpan { DumpParsedAst.hs:23:27-28 })) (HsNormalTok))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:22-25 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:23:22-25 }) (HsAppTy (NoExtField) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:22 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:23:22 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:22:22 } + { DumpParsedAst.hs:23:22 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:22 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:23:22 }) (Unqual {OccName: f})))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:24-25 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:23:24-25 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:22:24-25 } + { DumpParsedAst.hs:23:24-25 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:24-25 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:23:24-25 }) (Unqual {OccName: xx})))))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:30-33 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:23:30-33 }) (HsAppTy (NoExtField) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:30 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:23:30 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:22:30 } + { DumpParsedAst.hs:23:30 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:30 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:23:30 }) (Unqual {OccName: g})))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:32-33 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:23:32-33 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:22:32-33 } + { DumpParsedAst.hs:23:32-33 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:32-33 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:23:32-33 }) (Unqual {OccName: xx})))))))))))))]) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:39-45 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:23:39-45 }) (HsAppTy (NoExtField) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:39-43 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:23:39-43 }) (HsAppTy (NoExtField) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:39-41 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:23:39-41 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:22:39-41 } + { DumpParsedAst.hs:23:39-41 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:39-41 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:23:39-41 }) (Unqual {OccName: Nat})))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:43 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:23:43 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:22:43 } + { DumpParsedAst.hs:23:43 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:43 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:23:43 }) (Unqual {OccName: f})))))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:45 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:23:45 }) (HsTyVar (EpAnn (Anchor - { DumpParsedAst.hs:22:45 } + { DumpParsedAst.hs:23:45 } (UnchangedAnchor)) [] (EpaComments [])) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:45 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:23:45 }) (Unqual {OccName: g})))))) (Nothing)))) @@ -1450,37 +1686,37 @@ ,(L (SrcSpanAnn (EpAnn (Anchor - { DumpParsedAst.hs:24:1-23 } + { DumpParsedAst.hs:25:1-23 } (UnchangedAnchor)) (AnnListItem []) (EpaComments - [])) { DumpParsedAst.hs:24:1-23 }) + [])) { DumpParsedAst.hs:25:1-23 }) (ValD (NoExtField) (FunBind (NoExtField) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:24:1-4 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:25:1-4 }) (Unqual {OccName: main})) (MG (FromSource) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:24:1-23 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:25:1-23 }) [(L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:24:1-23 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:25:1-23 }) (Match (EpAnn (Anchor - { DumpParsedAst.hs:24:1-23 } + { DumpParsedAst.hs:25:1-23 } (UnchangedAnchor)) [] (EpaComments [])) (FunRhs (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:24:1-4 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:25:1-4 }) (Unqual {OccName: main})) (Prefix) @@ -1492,42 +1728,42 @@ [(L (SrcSpanAnn (EpAnnNotUsed) - { DumpParsedAst.hs:24:6-23 }) + { DumpParsedAst.hs:25:6-23 }) (GRHS (EpAnn (Anchor - { DumpParsedAst.hs:24:6-23 } + { DumpParsedAst.hs:25:6-23 } (UnchangedAnchor)) (GrhsAnn (Nothing) - (AddEpAnn AnnEqual (EpaSpan { DumpParsedAst.hs:24:6 }))) + (AddEpAnn AnnEqual (EpaSpan { DumpParsedAst.hs:25:6 }))) (EpaComments [])) [] (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:24:8-23 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:25:8-23 }) (HsApp (EpAnn (Anchor - { DumpParsedAst.hs:24:8-23 } + { DumpParsedAst.hs:25:8-23 } (UnchangedAnchor)) (NoEpAnns) (EpaComments [])) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:24:8-15 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:25:8-15 }) (HsVar (NoExtField) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:24:8-15 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:25:8-15 }) (Unqual {OccName: putStrLn})))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:24:17-23 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:25:17-23 }) (HsLit (EpAnn (Anchor - { DumpParsedAst.hs:24:17-23 } + { DumpParsedAst.hs:25:17-23 } (UnchangedAnchor)) (NoEpAnns) (EpaComments diff --git a/testsuite/tests/parser/should_compile/DumpRenamedAst.hs b/testsuite/tests/parser/should_compile/DumpRenamedAst.hs index ba136db8e341..3fb8e360eb9d 100644 --- a/testsuite/tests/parser/should_compile/DumpRenamedAst.hs +++ b/testsuite/tests/parser/should_compile/DumpRenamedAst.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE DataKinds, GADTs, PolyKinds, RankNTypes, TypeOperators, TypeFamilies, StarIsType, TypeApplications #-} @@ -9,6 +8,7 @@ import Data.Kind (Type) data Peano = Zero | Succ Peano +type Length :: [k] -> Peano type family Length (as :: [k]) :: Peano where Length (a : as) = Succ (Length as) Length '[] = Zero @@ -21,6 +21,7 @@ newtype instance Nat (a :: k -> Type) :: (k -> Type) -> Type where data T f (a :: k) = MkT (f a) +type F1 :: k -> (k -> Type) -> Type type family F1 (a :: k) (f :: k -> Type) :: Type where F1 @Peano a f = T @Peano f a diff --git a/testsuite/tests/parser/should_compile/DumpRenamedAst.stderr b/testsuite/tests/parser/should_compile/DumpRenamedAst.stderr index cd3455b92a88..3d03be0f8fc8 100644 --- a/testsuite/tests/parser/should_compile/DumpRenamedAst.stderr +++ b/testsuite/tests/parser/should_compile/DumpRenamedAst.stderr @@ -13,29 +13,29 @@ [(L (SrcSpanAnn (EpAnn (Anchor - { DumpRenamedAst.hs:34:1-23 } + { DumpRenamedAst.hs:35:1-23 } (UnchangedAnchor)) (AnnListItem []) (EpaComments - [])) { DumpRenamedAst.hs:34:1-23 }) + [])) { DumpRenamedAst.hs:35:1-23 }) (FunBind {NameSet: []} (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:34:1-4 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:35:1-4 }) {Name: DumpRenamedAst.main}) (MG (FromSource) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:34:1-23 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:35:1-23 }) [(L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:34:1-23 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:35:1-23 }) (Match (EpAnnNotUsed) (FunRhs (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:34:1-4 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:35:1-4 }) {Name: DumpRenamedAst.main}) (Prefix) (NoSrcStrict)) @@ -46,33 +46,33 @@ [(L (SrcSpanAnn (EpAnnNotUsed) - { DumpRenamedAst.hs:34:6-23 }) + { DumpRenamedAst.hs:35:6-23 }) (GRHS (EpAnnNotUsed) [] (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:34:8-23 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:35:8-23 }) (HsApp (EpAnn (Anchor - { DumpRenamedAst.hs:34:8-23 } + { DumpRenamedAst.hs:35:8-23 } (UnchangedAnchor)) (NoEpAnns) (EpaComments [])) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:34:8-15 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:35:8-15 }) (HsVar (NoExtField) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:34:8-15 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:35:8-15 }) {Name: System.IO.putStrLn}))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:34:17-23 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:35:17-23 }) (HsLit (EpAnn (Anchor - { DumpRenamedAst.hs:34:17-23 } + { DumpRenamedAst.hs:35:17-23 } (UnchangedAnchor)) (NoEpAnns) (EpaComments @@ -89,19 +89,19 @@ [(L (SrcSpanAnn (EpAnn (Anchor - { DumpRenamedAst.hs:10:1-30 } + { DumpRenamedAst.hs:9:1-30 } (UnchangedAnchor)) (AnnListItem []) (EpaComments - [])) { DumpRenamedAst.hs:10:1-30 }) + [])) { DumpRenamedAst.hs:9:1-30 }) (DataDecl (DataDeclRn (True) {NameSet: [{Name: DumpRenamedAst.Peano}]}) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:10:6-10 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:9:6-10 }) {Name: DumpRenamedAst.Peano}) (HsQTvs [] @@ -117,17 +117,17 @@ [(L (SrcSpanAnn (EpAnn (Anchor - { DumpRenamedAst.hs:10:14-17 } + { DumpRenamedAst.hs:9:14-17 } (UnchangedAnchor)) (AnnListItem [(AddVbarAnn - (EpaSpan { DumpRenamedAst.hs:10:19 }))]) + (EpaSpan { DumpRenamedAst.hs:9:19 }))]) (EpaComments - [])) { DumpRenamedAst.hs:10:14-17 }) + [])) { DumpRenamedAst.hs:9:14-17 }) (ConDeclH98 (EpAnnNotUsed) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:10:14-17 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:9:14-17 }) {Name: DumpRenamedAst.Zero}) (False) [] @@ -137,11 +137,11 @@ []) (Nothing))) ,(L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:10:21-30 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:9:21-30 }) (ConDeclH98 (EpAnnNotUsed) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:10:21-24 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:9:21-24 }) {Name: DumpRenamedAst.Succ}) (False) [] @@ -158,12 +158,12 @@ (NoTokenLoc) (HsNormalTok)))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:10:26-30 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:9:26-30 }) (HsTyVar (EpAnnNotUsed) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:10:26-30 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:9:26-30 }) {Name: DumpRenamedAst.Peano}))))]) (Nothing)))]) [])))] @@ -348,7 +348,70 @@ {Name: DumpRenamedAst.Peano}))))) (Nothing))))] [] - [] + [(L + (SrcSpanAnn (EpAnn + (Anchor + { DumpRenamedAst.hs:11:1-27 } + (UnchangedAnchor)) + (AnnListItem + []) + (EpaComments + [])) { DumpRenamedAst.hs:11:1-27 }) + (StandaloneKindSig + (NoExtField) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:11:6-11 }) + {Name: DumpRenamedAst.Length}) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:11:16-27 }) + (HsSig + (NoExtField) + (HsOuterImplicit + [{Name: k}]) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:11:16-27 }) + (HsFunTy + (EpAnn + (Anchor + { DumpRenamedAst.hs:11:16-18 } + (UnchangedAnchor)) + (NoEpAnns) + (EpaComments + [])) + (HsUnrestrictedArrow + (L + (TokenLoc + (EpaSpan { DumpRenamedAst.hs:11:20-21 })) + (HsNormalTok))) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:11:16-18 }) + (HsListTy + (EpAnn + (Anchor + { DumpRenamedAst.hs:11:16 } + (UnchangedAnchor)) + (AnnParen + (AnnParensSquare) + (EpaSpan { DumpRenamedAst.hs:11:16 }) + (EpaSpan { DumpRenamedAst.hs:11:18 })) + (EpaComments + [])) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:11:17 }) + (HsTyVar + (EpAnnNotUsed) + (NotPromoted) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:11:17 }) + {Name: k}))))) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:11:23-27 }) + (HsTyVar + (EpAnnNotUsed) + (NotPromoted) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:11:23-27 }) + {Name: DumpRenamedAst.Peano})))))))))] []) ,(TyClGroup (NoExtField) @@ -845,12 +908,12 @@ [(L (SrcSpanAnn (EpAnn (Anchor - { DumpRenamedAst.hs:(24,1)-(25,30) } + { DumpRenamedAst.hs:(25,1)-(26,30) } (UnchangedAnchor)) (AnnListItem []) (EpaComments - [])) { DumpRenamedAst.hs:(24,1)-(25,30) }) + [])) { DumpRenamedAst.hs:(25,1)-(26,30) }) (FamDecl (NoExtField) (FamilyDecl @@ -858,11 +921,11 @@ (ClosedTypeFamily (Just [(L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:3-30 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:26:3-30 }) (FamEqn (EpAnnNotUsed) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:3-4 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:26:3-4 }) {Name: DumpRenamedAst.F1}) (HsOuterImplicit [{Name: a} @@ -870,135 +933,135 @@ [(HsTypeArg (L (TokenLoc - (EpaSpan { DumpRenamedAst.hs:25:6 })) + (EpaSpan { DumpRenamedAst.hs:26:6 })) (HsTok)) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:7-11 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:26:7-11 }) (HsTyVar (EpAnnNotUsed) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:7-11 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:26:7-11 }) {Name: DumpRenamedAst.Peano})))) ,(HsValArg (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:13 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:26:13 }) (HsTyVar (EpAnnNotUsed) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:13 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:26:13 }) {Name: a})))) ,(HsValArg (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:15 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:26:15 }) (HsTyVar (EpAnnNotUsed) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:15 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:26:15 }) {Name: f}))))] (Prefix) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:19-30 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:26:19-30 }) (HsAppTy (NoExtField) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:19-28 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:26:19-28 }) (HsAppTy (NoExtField) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:19-26 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:26:19-26 }) (HsAppKindTy (NoExtField) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:19 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:26:19 }) (HsTyVar (EpAnnNotUsed) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:19 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:26:19 }) {Name: DumpRenamedAst.T}))) (L (TokenLoc - (EpaSpan { DumpRenamedAst.hs:25:21 })) + (EpaSpan { DumpRenamedAst.hs:26:21 })) (HsTok)) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:22-26 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:26:22-26 }) (HsTyVar (EpAnnNotUsed) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:22-26 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:26:22-26 }) {Name: DumpRenamedAst.Peano}))))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:28 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:26:28 }) (HsTyVar (EpAnnNotUsed) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:28 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:26:28 }) {Name: f}))))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:30 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:26:30 }) (HsTyVar (EpAnnNotUsed) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:30 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:26:30 }) {Name: a})))))))])) (TopLevel) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:13-14 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:13-14 }) {Name: DumpRenamedAst.F1}) (HsQTvs [{Name: k}] [(L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:16-23 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:16-23 }) (KindedTyVar (EpAnn (Anchor - { DumpRenamedAst.hs:24:16-23 } + { DumpRenamedAst.hs:25:16-23 } (UnchangedAnchor)) - [(AddEpAnn AnnDcolon (EpaSpan { DumpRenamedAst.hs:24:19-20 })) - ,(AddEpAnn AnnOpenP (EpaSpan { DumpRenamedAst.hs:24:16 })) - ,(AddEpAnn AnnCloseP (EpaSpan { DumpRenamedAst.hs:24:23 }))] + [(AddEpAnn AnnDcolon (EpaSpan { DumpRenamedAst.hs:25:19-20 })) + ,(AddEpAnn AnnOpenP (EpaSpan { DumpRenamedAst.hs:25:16 })) + ,(AddEpAnn AnnCloseP (EpaSpan { DumpRenamedAst.hs:25:23 }))] (EpaComments [])) (HsBndrRequired) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:17 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:17 }) {Name: a}) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:22 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:22 }) (HsTyVar (EpAnnNotUsed) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:22 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:22 }) {Name: k}))))) ,(L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:25-40 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:25-40 }) (KindedTyVar (EpAnn (Anchor - { DumpRenamedAst.hs:24:25-40 } + { DumpRenamedAst.hs:25:25-40 } (UnchangedAnchor)) - [(AddEpAnn AnnDcolon (EpaSpan { DumpRenamedAst.hs:24:28-29 })) - ,(AddEpAnn AnnOpenP (EpaSpan { DumpRenamedAst.hs:24:25 })) - ,(AddEpAnn AnnCloseP (EpaSpan { DumpRenamedAst.hs:24:40 }))] + [(AddEpAnn AnnDcolon (EpaSpan { DumpRenamedAst.hs:25:28-29 })) + ,(AddEpAnn AnnOpenP (EpaSpan { DumpRenamedAst.hs:25:25 })) + ,(AddEpAnn AnnCloseP (EpaSpan { DumpRenamedAst.hs:25:40 }))] (EpaComments [])) (HsBndrRequired) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:26 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:26 }) {Name: f}) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:31-39 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:31-39 }) (HsFunTy (EpAnn (Anchor - { DumpRenamedAst.hs:24:31 } + { DumpRenamedAst.hs:25:31 } (UnchangedAnchor)) (NoEpAnns) (EpaComments @@ -1006,54 +1069,154 @@ (HsUnrestrictedArrow (L (TokenLoc - (EpaSpan { DumpRenamedAst.hs:24:33-34 })) + (EpaSpan { DumpRenamedAst.hs:25:33-34 })) (HsNormalTok))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:31 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:31 }) (HsTyVar (EpAnnNotUsed) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:31 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:31 }) {Name: k}))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:36-39 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:36-39 }) (HsTyVar (EpAnnNotUsed) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:36-39 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:36-39 }) {Name: GHC.Types.Type})))))))]) (Prefix) (L (SrcSpanAnn (EpAnnNotUsed) - { DumpRenamedAst.hs:24:42-48 }) + { DumpRenamedAst.hs:25:42-48 }) (KindSig (NoExtField) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:45-48 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:45-48 }) (HsTyVar (EpAnnNotUsed) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:45-48 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:25:45-48 }) {Name: GHC.Types.Type}))))) (Nothing))))] [] - [] + [(L + (SrcSpanAnn (EpAnn + (Anchor + { DumpRenamedAst.hs:24:1-35 } + (UnchangedAnchor)) + (AnnListItem + []) + (EpaComments + [])) { DumpRenamedAst.hs:24:1-35 }) + (StandaloneKindSig + (NoExtField) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:6-7 }) + {Name: DumpRenamedAst.F1}) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:12-35 }) + (HsSig + (NoExtField) + (HsOuterImplicit + [{Name: k}]) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:12-35 }) + (HsFunTy + (EpAnn + (Anchor + { DumpRenamedAst.hs:24:12 } + (UnchangedAnchor)) + (NoEpAnns) + (EpaComments + [])) + (HsUnrestrictedArrow + (L + (TokenLoc + (EpaSpan { DumpRenamedAst.hs:24:14-15 })) + (HsNormalTok))) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:12 }) + (HsTyVar + (EpAnnNotUsed) + (NotPromoted) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:12 }) + {Name: k}))) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:17-35 }) + (HsFunTy + (EpAnn + (Anchor + { DumpRenamedAst.hs:24:17-27 } + (UnchangedAnchor)) + (NoEpAnns) + (EpaComments + [])) + (HsUnrestrictedArrow + (L + (TokenLoc + (EpaSpan { DumpRenamedAst.hs:24:29-30 })) + (HsNormalTok))) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:17-27 }) + (HsParTy + (EpAnnNotUsed) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:18-26 }) + (HsFunTy + (EpAnn + (Anchor + { DumpRenamedAst.hs:24:18 } + (UnchangedAnchor)) + (NoEpAnns) + (EpaComments + [])) + (HsUnrestrictedArrow + (L + (TokenLoc + (EpaSpan { DumpRenamedAst.hs:24:20-21 })) + (HsNormalTok))) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:18 }) + (HsTyVar + (EpAnnNotUsed) + (NotPromoted) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:18 }) + {Name: k}))) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:23-26 }) + (HsTyVar + (EpAnnNotUsed) + (NotPromoted) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:23-26 }) + {Name: GHC.Types.Type}))))))) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:32-35 }) + (HsTyVar + (EpAnnNotUsed) + (NotPromoted) + (L + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:24:32-35 }) + {Name: GHC.Types.Type})))))))))))] []) ,(TyClGroup (NoExtField) [(L (SrcSpanAnn (EpAnn (Anchor - { DumpRenamedAst.hs:(27,1)-(28,12) } + { DumpRenamedAst.hs:(28,1)-(29,12) } (UnchangedAnchor)) (AnnListItem []) (EpaComments - [])) { DumpRenamedAst.hs:(27,1)-(28,12) }) + [])) { DumpRenamedAst.hs:(28,1)-(29,12) }) (ClassDecl {NameSet: []} @@ -1061,23 +1224,23 @@ (3)) (Nothing) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:27:7 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:28:7 }) {Name: DumpRenamedAst.C}) (HsQTvs [] [(L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:27:9 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:28:9 }) (UserTyVar (EpAnn (Anchor - { DumpRenamedAst.hs:27:9 } + { DumpRenamedAst.hs:28:9 } (UnchangedAnchor)) [] (EpaComments [])) (HsBndrRequired) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:27:9 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:28:9 }) {Name: a})))]) (Prefix) [] @@ -1085,43 +1248,43 @@ {Bag(LocatedA (HsBind Name)): []} [(L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:28:3-12 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:29:3-12 }) (FamilyDecl (EpAnnNotUsed) (OpenTypeFamily) (NotTopLevel) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:28:8 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:29:8 }) {Name: DumpRenamedAst.F}) (HsQTvs [] [(L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:28:10 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:29:10 }) (UserTyVar (EpAnn (Anchor - { DumpRenamedAst.hs:28:10 } + { DumpRenamedAst.hs:29:10 } (UnchangedAnchor)) [] (EpaComments [])) (HsBndrRequired) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:28:10 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:29:10 }) {Name: a}))) ,(L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:28:12 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:29:12 }) (UserTyVar (EpAnn (Anchor - { DumpRenamedAst.hs:28:12 } + { DumpRenamedAst.hs:29:12 } (UnchangedAnchor)) [] (EpaComments [])) (HsBndrRequired) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:28:12 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:29:12 }) {Name: b})))]) (Prefix) (L @@ -1138,138 +1301,138 @@ [(L (SrcSpanAnn (EpAnn (Anchor - { DumpRenamedAst.hs:(30,1)-(31,27) } + { DumpRenamedAst.hs:(31,1)-(32,27) } (UnchangedAnchor)) (AnnListItem []) (EpaComments - [])) { DumpRenamedAst.hs:(30,1)-(31,27) }) + [])) { DumpRenamedAst.hs:(31,1)-(32,27) }) (ClsInstD (NoExtField) (ClsInstDecl (NoExtField) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:30:10-14 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:31:10-14 }) (HsSig (NoExtField) (HsOuterImplicit [{Name: a}]) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:30:10-14 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:31:10-14 }) (HsAppTy (NoExtField) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:30:10 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:31:10 }) (HsTyVar (EpAnnNotUsed) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:30:10 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:31:10 }) {Name: DumpRenamedAst.C}))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:30:12-14 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:31:12-14 }) (HsListTy (EpAnn (Anchor - { DumpRenamedAst.hs:30:12 } + { DumpRenamedAst.hs:31:12 } (UnchangedAnchor)) (AnnParen (AnnParensSquare) - (EpaSpan { DumpRenamedAst.hs:30:12 }) - (EpaSpan { DumpRenamedAst.hs:30:14 })) + (EpaSpan { DumpRenamedAst.hs:31:12 }) + (EpaSpan { DumpRenamedAst.hs:31:14 })) (EpaComments [])) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:30:13 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:31:13 }) (HsTyVar (EpAnnNotUsed) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:30:13 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:31:13 }) {Name: a}))))))))) {Bag(LocatedA (HsBind Name)): []} [] [(L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:31:3-27 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:32:3-27 }) (TyFamInstDecl (EpAnn (Anchor - { DumpRenamedAst.hs:31:3-27 } + { DumpRenamedAst.hs:32:3-27 } (UnchangedAnchor)) - [(AddEpAnn AnnType (EpaSpan { DumpRenamedAst.hs:31:3-6 }))] + [(AddEpAnn AnnType (EpaSpan { DumpRenamedAst.hs:32:3-6 }))] (EpaComments [])) (FamEqn (EpAnnNotUsed) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:31:8 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:32:8 }) {Name: DumpRenamedAst.F}) (HsOuterImplicit [{Name: b}]) [(HsValArg (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:31:10-12 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:32:10-12 }) (HsListTy (EpAnn (Anchor - { DumpRenamedAst.hs:31:10 } + { DumpRenamedAst.hs:32:10 } (UnchangedAnchor)) (AnnParen (AnnParensSquare) - (EpaSpan { DumpRenamedAst.hs:31:10 }) - (EpaSpan { DumpRenamedAst.hs:31:12 })) + (EpaSpan { DumpRenamedAst.hs:32:10 }) + (EpaSpan { DumpRenamedAst.hs:32:12 })) (EpaComments [])) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:31:11 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:32:11 }) (HsTyVar (EpAnnNotUsed) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:31:11 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:32:11 }) {Name: a})))))) ,(HsValArg (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:31:14 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:32:14 }) (HsTyVar (EpAnnNotUsed) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:31:14 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:32:14 }) {Name: b}))))] (Prefix) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:31:18-27 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:32:18-27 }) (HsAppTy (NoExtField) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:31:18-25 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:32:18-25 }) (HsAppTy (NoExtField) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:31:18-23 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:32:18-23 }) (HsTyVar (EpAnnNotUsed) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:31:18-23 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:32:18-23 }) {Name: Data.Either.Either}))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:31:25 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:32:25 }) (HsTyVar (EpAnnNotUsed) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:31:25 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:32:25 }) {Name: a}))))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:31:27 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:32:27 }) (HsTyVar (EpAnnNotUsed) (NotPromoted) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:31:27 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:32:27 }) {Name: b}))))))))] [] (Nothing))))])] @@ -1282,14 +1445,14 @@ [] []) [(L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:5:8-21 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:4:8-21 }) (ImportDecl (XImportDeclPass (EpAnnNotUsed) (NoSourceText) (True)) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:5:8-21 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:4:8-21 }) {ModuleName: Prelude}) (NoPkgQual) (NotBoot) @@ -1298,15 +1461,15 @@ (Nothing) (Nothing))) ,(L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:6:1-16 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:5:1-16 }) (ImportDecl (XImportDeclPass (EpAnn (Anchor - { DumpRenamedAst.hs:6:1-6 } + { DumpRenamedAst.hs:5:1-6 } (UnchangedAnchor)) (EpAnnImportDecl - (EpaSpan { DumpRenamedAst.hs:6:1-6 }) + (EpaSpan { DumpRenamedAst.hs:5:1-6 }) (Nothing) (Nothing) (Nothing) @@ -1317,7 +1480,7 @@ (NoSourceText) (False)) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:6:8-16 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:5:8-16 }) {ModuleName: Data.Kind}) (NoPkgQual) (NotBoot) @@ -1326,15 +1489,15 @@ (Nothing) (Nothing))) ,(L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:8:1-23 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:7:1-23 }) (ImportDecl (XImportDeclPass (EpAnn (Anchor - { DumpRenamedAst.hs:8:1-6 } + { DumpRenamedAst.hs:7:1-6 } (UnchangedAnchor)) (EpAnnImportDecl - (EpaSpan { DumpRenamedAst.hs:8:1-6 }) + (EpaSpan { DumpRenamedAst.hs:7:1-6 }) (Nothing) (Nothing) (Nothing) @@ -1345,7 +1508,7 @@ (NoSourceText) (False)) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:8:8-16 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:7:8-16 }) {ModuleName: Data.Kind}) (NoPkgQual) (NotBoot) @@ -1358,30 +1521,30 @@ (L (SrcSpanAnn (EpAnn (Anchor - { DumpRenamedAst.hs:8:18-23 } + { DumpRenamedAst.hs:7:18-23 } (UnchangedAnchor)) (AnnList (Nothing) (Just - (AddEpAnn AnnOpenP (EpaSpan { DumpRenamedAst.hs:8:18 }))) + (AddEpAnn AnnOpenP (EpaSpan { DumpRenamedAst.hs:7:18 }))) (Just - (AddEpAnn AnnCloseP (EpaSpan { DumpRenamedAst.hs:8:23 }))) + (AddEpAnn AnnCloseP (EpaSpan { DumpRenamedAst.hs:7:23 }))) [] []) (EpaComments - [])) { DumpRenamedAst.hs:8:18-23 }) + [])) { DumpRenamedAst.hs:7:18-23 }) [(L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:8:19-22 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:7:19-22 }) (IEThingAbs ((,) (Nothing) (EpAnnNotUsed)) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:8:19-22 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:7:19-22 }) (IEName (NoExtField) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:8:19-22 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpRenamedAst.hs:7:19-22 }) {Name: GHC.Types.Type})))))])))))] (Nothing) (Nothing))) diff --git a/testsuite/tests/parser/should_compile/DumpTypecheckedAst.hs b/testsuite/tests/parser/should_compile/DumpTypecheckedAst.hs index 202be3f1101b..cc54b8ccd826 100644 --- a/testsuite/tests/parser/should_compile/DumpTypecheckedAst.hs +++ b/testsuite/tests/parser/should_compile/DumpTypecheckedAst.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE DataKinds, PolyKinds, TypeOperators, TypeFamilies , TypeApplications #-} @@ -7,12 +6,14 @@ import Data.Kind data Peano = Zero | Succ Peano +type Length :: [k] -> Peano type family Length (as :: [k]) :: Peano where Length (a : as) = Succ (Length as) Length '[] = Zero data T f (a :: k) = MkT (f a) +type F :: k -> (k -> Type) -> Type type family F (a :: k) (f :: k -> Type) :: Type where F @Peano a f = T @Peano f a diff --git a/testsuite/tests/parser/should_compile/DumpTypecheckedAst.stderr b/testsuite/tests/parser/should_compile/DumpTypecheckedAst.stderr index 8f31c0a2481d..a3794a79c6fe 100644 --- a/testsuite/tests/parser/should_compile/DumpTypecheckedAst.stderr +++ b/testsuite/tests/parser/should_compile/DumpTypecheckedAst.stderr @@ -1513,7 +1513,7 @@ (NoTokenLoc) (HsTok)))))))) ,(L - (SrcSpanAnn (EpAnnNotUsed) { DumpTypecheckedAst.hs:19:1-23 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpTypecheckedAst.hs:20:1-23 }) (XHsBindsLR (AbsBinds [] @@ -1529,18 +1529,18 @@ [(L (SrcSpanAnn (EpAnn (Anchor - { DumpTypecheckedAst.hs:19:1-23 } + { DumpTypecheckedAst.hs:20:1-23 } (UnchangedAnchor)) (AnnListItem []) (EpaComments - [])) { DumpTypecheckedAst.hs:19:1-23 }) + [])) { DumpTypecheckedAst.hs:20:1-23 }) (FunBind ((,) (WpHole) []) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpTypecheckedAst.hs:19:1-4 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpTypecheckedAst.hs:20:1-4 }) {Var: main}) (MG (MatchGroupTc @@ -1552,14 +1552,14 @@ [])]) (FromSource)) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpTypecheckedAst.hs:19:1-23 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpTypecheckedAst.hs:20:1-23 }) [(L - (SrcSpanAnn (EpAnnNotUsed) { DumpTypecheckedAst.hs:19:1-23 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpTypecheckedAst.hs:20:1-23 }) (Match (EpAnnNotUsed) (FunRhs (L - (SrcSpanAnn (EpAnnNotUsed) { DumpTypecheckedAst.hs:19:1-4 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpTypecheckedAst.hs:20:1-4 }) {Name: main}) (Prefix) (NoSrcStrict)) @@ -1570,27 +1570,27 @@ [(L (SrcSpanAnn (EpAnnNotUsed) - { DumpTypecheckedAst.hs:19:6-23 }) + { DumpTypecheckedAst.hs:20:6-23 }) (GRHS (EpAnnNotUsed) [] (L - (SrcSpanAnn (EpAnnNotUsed) { DumpTypecheckedAst.hs:19:8-23 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpTypecheckedAst.hs:20:8-23 }) (HsApp (EpAnnNotUsed) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpTypecheckedAst.hs:19:8-15 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpTypecheckedAst.hs:20:8-15 }) (HsVar (NoExtField) (L (SrcSpanAnn (EpAnnNotUsed) { <no location info> }) {Var: putStrLn}))) (L - (SrcSpanAnn (EpAnnNotUsed) { DumpTypecheckedAst.hs:19:17-23 }) + (SrcSpanAnn (EpAnnNotUsed) { DumpTypecheckedAst.hs:20:17-23 }) (HsLit (EpAnn (Anchor - { DumpTypecheckedAst.hs:19:17-23 } + { DumpTypecheckedAst.hs:20:17-23 } (UnchangedAnchor)) (NoEpAnns) (EpaComments diff --git a/testsuite/tests/patsyn/should_compile/T10997_1a.hs b/testsuite/tests/patsyn/should_compile/T10997_1a.hs index bf69c41fa3c2..a274daef0e6d 100644 --- a/testsuite/tests/patsyn/should_compile/T10997_1a.hs +++ b/testsuite/tests/patsyn/should_compile/T10997_1a.hs @@ -1,10 +1,10 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE PatternSynonyms, ViewPatterns, ConstraintKinds, TypeFamilies, PolyKinds, KindSignatures #-} module T10997_1a where import Data.Kind -type family Showable (a :: k) :: Constraint where +type Showable :: k -> Constraint +type family Showable a where Showable (a :: Type) = (Show a) Showable a = () diff --git a/testsuite/tests/patsyn/should_compile/T12698.hs b/testsuite/tests/patsyn/should_compile/T12698.hs index bb2bccbb443a..44a101f9ca0b 100644 --- a/testsuite/tests/patsyn/should_compile/T12698.hs +++ b/testsuite/tests/patsyn/should_compile/T12698.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# Language ViewPatterns, TypeOperators, KindSignatures, PolyKinds, StandaloneDeriving, GADTs, RebindableSyntax, RankNTypes, LambdaCase, PatternSynonyms, TypeApplications #-} @@ -37,7 +36,8 @@ splitApp = \case TP -> Nothing TA f x -> Just (App f x) -data (a :: k1) :~~: (b :: k2) where +type (:~~:) :: k1 -> k2 -> Type +data a :~~: b where HRefl :: a :~~: a eqT :: T a -> T b -> Maybe (a :~~: b) diff --git a/testsuite/tests/patsyn/should_fail/T14507.hs b/testsuite/tests/patsyn/should_fail/T14507.hs index b803f5073496..90fa2e4dac95 100644 --- a/testsuite/tests/patsyn/should_fail/T14507.hs +++ b/testsuite/tests/patsyn/should_fail/T14507.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# Language PatternSynonyms, ViewPatterns, GADTs, ConstraintKinds, RankNTypes, PolyKinds, ScopedTypeVariables, DataKinds, TypeOperators, TypeApplications, TypeFamilies, TypeFamilyDependencies #-} @@ -11,7 +10,8 @@ import Data.Kind foo :: TypeRep a -> (Bool :~~: k, TypeRep a) foo rep = error "urk" -type family SING :: k -> Type where +type SING :: k -> Type +type family SING @k where SING = (TypeRep :: Bool -> Type) pattern RepN :: forall kk (a::kk). () => Bool~kk => SING a -> TypeRep (a::kk) diff --git a/testsuite/tests/patsyn/should_fail/T15694.hs b/testsuite/tests/patsyn/should_fail/T15694.hs index 44b3c7a8d658..2b2d8086afe2 100644 --- a/testsuite/tests/patsyn/should_fail/T15694.hs +++ b/testsuite/tests/patsyn/should_fail/T15694.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# Language RankNTypes, PatternSynonyms, TypeOperators, DataKinds, PolyKinds, KindSignatures, GADTs #-} module T15694 where @@ -10,7 +9,8 @@ data Ctx :: Type -> Type where E :: Ctx(Type) (:&:) :: a -> Ctx(as) -> Ctx(a -> as) -data ApplyT(kind::Type) :: kind -> Ctx(kind) -> Type where +type ApplyT :: forall (kind::Type) -> kind -> Ctx(kind) -> Type +data ApplyT k t ctx where AO :: a -> ApplyT(Type) a E AS :: ApplyT(ks) (f a) ctx -> ApplyT(k -> ks) f (a:&:ctx) diff --git a/testsuite/tests/patsyn/should_fail/T15695.hs b/testsuite/tests/patsyn/should_fail/T15695.hs index ebccb8a02e1c..bd68a56a5614 100644 --- a/testsuite/tests/patsyn/should_fail/T15695.hs +++ b/testsuite/tests/patsyn/should_fail/T15695.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# Language RankNTypes, PatternSynonyms, DataKinds, PolyKinds, GADTs, TypeOperators, MultiParamTypeClasses, TypeFamilies, TypeSynonymInstances, FlexibleInstances, InstanceSigs, FlexibleContexts #-} @@ -31,7 +30,8 @@ data NA a type SOP(kind::Type) code = NS (NP NA) code -data ApplyT(kind::Type) :: kind -> Ctx(kind) -> Type where +type ApplyT :: forall (kind::Type) -> kind -> Ctx(kind) -> Type +data ApplyT k t ctx where AO :: a -> ApplyT(Type) a E AS :: ApplyT(ks) (f a) ctx -> ApplyT(k -> ks) f (a:&:ctx) diff --git a/testsuite/tests/pmcheck/complete_sigs/T14253.hs b/testsuite/tests/pmcheck/complete_sigs/T14253.hs index fc594b435555..c2e6240c6c75 100644 --- a/testsuite/tests/pmcheck/complete_sigs/T14253.hs +++ b/testsuite/tests/pmcheck/complete_sigs/T14253.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE TypeOperators #-} @@ -10,7 +9,8 @@ module T14253 where import GHC.Exts import Data.Kind -data TypeRep (a :: k) where +type TypeRep :: k -> Type +data TypeRep a where Con :: TypeRep (a :: k) TrFun :: forall (r1 :: RuntimeRep) (r2 :: RuntimeRep) (a :: TYPE r1) (b :: TYPE r2). diff --git a/testsuite/tests/polykinds/T10670a.hs b/testsuite/tests/polykinds/T10670a.hs index 489e1d56c579..c0649a29bc7a 100644 --- a/testsuite/tests/polykinds/T10670a.hs +++ b/testsuite/tests/polykinds/T10670a.hs @@ -1,8 +1,8 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE GADTs , PolyKinds #-} module Bug2 where +import Data.Kind (Type) import Unsafe.Coerce data TyConT (a::k) = TyConT String @@ -16,7 +16,8 @@ tyConTArr :: TyConT (->) tyConTArr = TyConT "(->)" -data TypeRepT (a::k) where +type TypeRepT :: k -> Type +data TypeRepT a where TRCon :: TyConT a -> TypeRepT a TRApp :: TypeRepT a -> TypeRepT b -> TypeRepT (a b) diff --git a/testsuite/tests/polykinds/T11362.hs b/testsuite/tests/polykinds/T11362.hs index 7763cf460da9..94c4f20c9808 100644 --- a/testsuite/tests/polykinds/T11362.hs +++ b/testsuite/tests/polykinds/T11362.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE KindSignatures #-} @@ -25,5 +24,6 @@ data instance In (F f) r o where MkIn :: In f (Sum1 r (In (F f) r)) o -> In (F f) r o -- Requires polymorphic recursion -data In' (f :: Code i o) :: (i -> Type) -> o -> Type where +type In' :: Code i o -> (i -> Type) -> o -> Type +data In' f r t where MkIn' :: In' g (Sum1 r (In' (F g) r)) t -> In' (F g) r t diff --git a/testsuite/tests/polykinds/T11480a.hs b/testsuite/tests/polykinds/T11480a.hs index 26e53807b289..2f2bbdca9144 100644 --- a/testsuite/tests/polykinds/T11480a.hs +++ b/testsuite/tests/polykinds/T11480a.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# language KindSignatures, PolyKinds, TypeFamilies, NoImplicitPrelude, FlexibleContexts, MultiParamTypeClasses, GADTs, @@ -12,7 +11,8 @@ import qualified Prelude data Nat (c :: i -> i -> Type) (d :: j -> j -> Type) (f :: i -> j) (g :: i -> j) -class Functor p (Nat p (->)) p => Category (p :: i -> i -> Type) +type Category :: (i -> i -> Type) -> Constraint +class Functor p (Nat p (->)) p => Category p class (Category dom, Category cod) => Functor (dom :: i -> i -> Type) (cod :: j -> j -> Type) (f :: i -> j) diff --git a/testsuite/tests/polykinds/T11480b.hs b/testsuite/tests/polykinds/T11480b.hs index a144c97a34e2..635ee4efac5f 100644 --- a/testsuite/tests/polykinds/T11480b.hs +++ b/testsuite/tests/polykinds/T11480b.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# language KindSignatures #-} {-# language PolyKinds #-} {-# language DataKinds #-} @@ -40,7 +39,8 @@ instance Vacuous p a data Dict (p :: Constraint) where Dict :: p => Dict p -class Functor (Op p) (Nat p (->)) p => Category (p :: i -> i -> Type) where +type Category :: (i -> i -> Type) -> Constraint +class Functor (Op p) (Nat p (->)) p => Category @i p where type Ob p :: i -> Constraint type Ob p = Vacuous p diff --git a/testsuite/tests/polykinds/T11520.hs b/testsuite/tests/polykinds/T11520.hs index 18881f333f32..e0b315392ba8 100644 --- a/testsuite/tests/polykinds/T11520.hs +++ b/testsuite/tests/polykinds/T11520.hs @@ -1,12 +1,14 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE RankNTypes, PolyKinds, GADTs, UndecidableSuperClasses, UndecidableInstances #-} module T11520 where +import Data.Kind (Type, Constraint) import GHC.Types hiding (TyCon) -data TypeRep (a :: k) +type TypeRep :: k -> Type +data TypeRep a +type Typeable :: k -> Constraint class Typeable k => Typeable (a :: k) where typeRep :: TypeRep a diff --git a/testsuite/tests/polykinds/T11520.stderr b/testsuite/tests/polykinds/T11520.stderr index 38d871f58658..d29fd443e5af 100644 --- a/testsuite/tests/polykinds/T11520.stderr +++ b/testsuite/tests/polykinds/T11520.stderr @@ -1,9 +1,9 @@ -T11520.hs:16:77: error: [GHC-25897] +T11520.hs:18:77: error: [GHC-25897] • Expected kind ‘k2 -> k1’, but ‘g’ has kind ‘k4’ ‘k4’ is a rigid type variable bound by an instance declaration - at T11520.hs:16:10-78 + at T11520.hs:18:10-78 • In the second argument of ‘Compose’, namely ‘g’ In the first argument of ‘Typeable’, namely ‘(Compose f g)’ In the instance declaration for ‘Typeable (Compose f g)’ diff --git a/testsuite/tests/polykinds/T11523.hs b/testsuite/tests/polykinds/T11523.hs index 679d1d13d528..e81ad4a82966 100644 --- a/testsuite/tests/polykinds/T11523.hs +++ b/testsuite/tests/polykinds/T11523.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# language KindSignatures #-} {-# language PolyKinds #-} {-# language DataKinds #-} @@ -30,7 +29,8 @@ newtype Y (p :: i -> j -> Type) (a :: j) (b :: i) = Y { getY :: p b a } class Vacuous (a :: i) instance Vacuous a -class (Functor p, Dom p ~ Op p, Cod p ~ Nat p (->)) => Category (p :: Cat i) where +type Category :: Cat i -> Constraint +class (Functor p, Dom p ~ Op p, Cod p ~ Nat p (->)) => Category @i p where type Op p :: Cat i type Op p = Y p type Ob p :: i -> Constraint diff --git a/testsuite/tests/polykinds/T12055.hs b/testsuite/tests/polykinds/T12055.hs index 72c208d77d90..7d1662bc3053 100644 --- a/testsuite/tests/polykinds/T12055.hs +++ b/testsuite/tests/polykinds/T12055.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE NoImplicitPrelude #-} @@ -22,10 +21,12 @@ import Data.Type.Equality (type (~), type (~~)) type Cat k = k -> k -> Type -class Category (p :: Cat k) where +type Category :: forall k. Cat k -> Constraint +class Category @k p where type Ob p :: k -> Constraint -class (Category (Dom f), Category (Cod f)) => Functor (f :: j -> k) where +type Functor :: forall j k. (j -> k) -> Constraint +class (Category (Dom f), Category (Cod f)) => Functor @j @k f where type Dom f :: Cat j type Cod f :: Cat k functor :: forall a b. diff --git a/testsuite/tests/polykinds/T12055a.hs b/testsuite/tests/polykinds/T12055a.hs index e26da3246c59..23ea606d22ff 100644 --- a/testsuite/tests/polykinds/T12055a.hs +++ b/testsuite/tests/polykinds/T12055a.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE NoImplicitPrelude #-} @@ -13,19 +12,21 @@ -- The code from the ticket lacked necessary extension FlexibleContexts -- which crashed the compiler with "GHC internal error" -- This test case reproduces that scenario -{- # LANGUAGE FlexibleContexts #-} +{-# LANGUAGE NoFlexibleContexts #-} module T12055a where import GHC.Base ( Constraint, Type ) -import GHC.Exts ( type (~~) ) +import GHC.Exts ( type (~), type (~~) ) type Cat k = k -> k -> Type -class Category (p :: Cat k) where +type Category :: forall k. Cat k -> Constraint +class Category @k p where type Ob p :: k -> Constraint -class (Category (Dom f), Category (Cod f)) => Functor (f :: j -> k) where +type Functor :: forall j k. (j -> k) -> Constraint +class (Category (Dom f), Category (Cod f)) => Functor @j @k f where type Dom f :: Cat j type Cod f :: Cat k functor :: forall a b. diff --git a/testsuite/tests/polykinds/T12055a.stderr b/testsuite/tests/polykinds/T12055a.stderr index 4e19219a2366..aa56cc143076 100644 --- a/testsuite/tests/polykinds/T12055a.stderr +++ b/testsuite/tests/polykinds/T12055a.stderr @@ -1,5 +1,5 @@ -T12055a.hs:28:1: error: [GHC-80003] +T12055a.hs:29:1: error: [GHC-80003] • Non type-variable argument in the constraint: Category (Dom f) • In the context: (Category (Dom f), Category (Cod f)) While checking the super-classes of class ‘Functor’ diff --git a/testsuite/tests/polykinds/T14270.hs b/testsuite/tests/polykinds/T14270.hs index efdc68cc5a79..5051e3daa943 100644 --- a/testsuite/tests/polykinds/T14270.hs +++ b/testsuite/tests/polykinds/T14270.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE ViewPatterns #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE RankNTypes #-} @@ -15,10 +14,12 @@ import Data.Kind (Type) import GHC.Fingerprint (Fingerprint, fingerprintFingerprints) import GHC.Types (RuntimeRep, TYPE, TyCon) -data (a :: k1) :~~: (b :: k2) where +type (:~~:) :: k1 -> k2 -> Type +data a :~~: b where HRefl :: a :~~: a -data TypeRep (a :: k) where +type TypeRep :: k -> Type +data TypeRep a where TrTyCon :: {-# UNPACK #-} !Fingerprint -> !TyCon -> [SomeTypeRep] -> TypeRep (a :: k) diff --git a/testsuite/tests/polykinds/T14450.hs b/testsuite/tests/polykinds/T14450.hs index e660263b19d3..c1246056a3f8 100644 --- a/testsuite/tests/polykinds/T14450.hs +++ b/testsuite/tests/polykinds/T14450.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# Language KindSignatures, TypeOperators, PolyKinds, TypeOperators, ConstraintKinds, TypeFamilies, DataKinds, GADTs, AllowAmbiguousTypes, InstanceSigs #-} @@ -13,9 +12,11 @@ type a ~> b = TyFun a b -> Type type Cat ob = ob -> ob -> Type -type SameKind (a :: k) (b :: k) = (() :: Constraint) +type SameKind :: k -> k -> Constraint +type SameKind a b = () -type family Apply (f :: a ~> b) (x :: a) :: b where +type Apply :: (a ~> b) -> (a -> b) +type family Apply f x where Apply IddSym0 x = Idd x class Varpi (f :: i ~> j) where diff --git a/testsuite/tests/polykinds/T14450.stderr b/testsuite/tests/polykinds/T14450.stderr index 0c5110a4428b..485ff0be9591 100644 --- a/testsuite/tests/polykinds/T14450.stderr +++ b/testsuite/tests/polykinds/T14450.stderr @@ -1,5 +1,5 @@ -T14450.hs:34:3: error: +T14450.hs:35:3: error: • Type indexes must match class instance head Expected: Dom @k @k (IddSym0 @k) Actual: Dom @(*) @(*) (IddSym0 @(*)) diff --git a/testsuite/tests/polykinds/T15787.hs b/testsuite/tests/polykinds/T15787.hs index fbe67f3356f3..3f224aaa94c3 100644 --- a/testsuite/tests/polykinds/T15787.hs +++ b/testsuite/tests/polykinds/T15787.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# Language RankNTypes #-} {-# Language TypeApplications #-} {-# Language DataKinds #-} @@ -6,13 +5,15 @@ {-# Language GADTs #-} {-# Language TypeFamilies #-} +module T15787 where + import Data.Kind class RÃki (ob :: Type) where type Hom :: ob -> ob -> Type -data - Kl_kind :: forall ob . (ob -> ob) -> ob -> Type where +type Kl_kind :: forall ob . (ob -> ob) -> ob -> Type +data Kl_kind m k where Kl :: k -> Kl_kind (m :: ob -> ob) k type family diff --git a/testsuite/tests/polykinds/T15787.stderr b/testsuite/tests/polykinds/T15787.stderr index 831cde0235a8..5eceea0c8871 100644 --- a/testsuite/tests/polykinds/T15787.stderr +++ b/testsuite/tests/polykinds/T15787.stderr @@ -1,9 +1,9 @@ -T15787.hs:16:14: error: [GHC-25897] +T15787.hs:17:14: error: [GHC-25897] • Expected a type, but ‘k’ has kind ‘ob1’ ‘ob1’ is a rigid type variable bound by the type signature for ‘Kl’ - at T15787.hs:16:3-43 + at T15787.hs:17:3-43 • In the type ‘k’ In the definition of data constructor ‘Kl’ In the data declaration for ‘Kl_kind’ diff --git a/testsuite/tests/polykinds/T16244.hs b/testsuite/tests/polykinds/T16244.hs index 9b29c2237ac5..8af40f70155a 100644 --- a/testsuite/tests/polykinds/T16244.hs +++ b/testsuite/tests/polykinds/T16244.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE MultiParamTypeClasses #-} @@ -8,5 +7,9 @@ module T16244 where import Data.Kind type Const a b = a -type SameKind (a :: k) (b :: k) = (() :: Constraint) -class SameKind a b => C (k :: Const Type a) (b :: k) + +type SameKind :: k -> k -> Constraint +type SameKind a b = () + +type C :: forall a. forall (k :: Const Type a) -> k -> Constraint +class SameKind a b => C @a k b diff --git a/testsuite/tests/polykinds/T16244.stderr b/testsuite/tests/polykinds/T16244.stderr index 1d9a4560968f..92baf84db864 100644 --- a/testsuite/tests/polykinds/T16244.stderr +++ b/testsuite/tests/polykinds/T16244.stderr @@ -1,11 +1,11 @@ -T16244.hs:12:18: error: [GHC-25897] +T16244.hs:15:18: error: [GHC-25897] • Expected kind ‘k1’, but ‘b’ has kind ‘k2’ ‘k2’ is a rigid type variable bound by the class declaration for ‘C’ - at T16244.hs:12:26 + at T16244.hs:15:28 ‘k1’ is a rigid type variable bound by the class declaration for ‘C’ - at T16244.hs:12:1-52 + at T16244.hs:14:11-65 • In the second argument of ‘SameKind’, namely ‘b’ In the class declaration for ‘C’ diff --git a/testsuite/tests/polykinds/T16245.hs b/testsuite/tests/polykinds/T16245.hs index ba8c6bd566e2..4aecdbca3fc4 100644 --- a/testsuite/tests/polykinds/T16245.hs +++ b/testsuite/tests/polykinds/T16245.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE PolyKinds #-} @@ -8,5 +7,9 @@ module T16245 where import Data.Kind type Const a b = a -type SameKind (a :: k) (b :: k) = (() :: Constraint) -class (forall (b :: k). SameKind a b) => C (k :: Const Type a) + +type SameKind :: k -> k -> Constraint +type SameKind a b = () + +type C :: forall a. Const Type a -> Constraint +class (forall (b :: k). SameKind a b) => C @a k diff --git a/testsuite/tests/polykinds/T16245.stderr b/testsuite/tests/polykinds/T16245.stderr index 41c7d0d8ab2c..a57b85425021 100644 --- a/testsuite/tests/polykinds/T16245.stderr +++ b/testsuite/tests/polykinds/T16245.stderr @@ -1,11 +1,11 @@ -T16245.hs:12:36: error: [GHC-25897] +T16245.hs:15:36: error: [GHC-25897] • Expected kind ‘k1’, but ‘b’ has kind ‘k2’ ‘k2’ is a rigid type variable bound by the class declaration for ‘C’ - at T16245.hs:12:45 + at T16245.hs:15:47 ‘k1’ is a rigid type variable bound by the class declaration for ‘C’ - at T16245.hs:12:1-62 + at T16245.hs:14:11-46 • In the second argument of ‘SameKind’, namely ‘b’ In the class declaration for ‘C’ diff --git a/testsuite/tests/polykinds/T16245a.hs b/testsuite/tests/polykinds/T16245a.hs index 2defabb36db2..18e10df4b673 100644 --- a/testsuite/tests/polykinds/T16245a.hs +++ b/testsuite/tests/polykinds/T16245a.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE DataKinds #-} @@ -9,4 +8,5 @@ import Data.Kind type Const a b = a data SameKind :: k -> k -> Type -newtype T (k :: Const Type a) = MkT (forall (b :: k). SameKind a b) +type T :: forall a. Const Type a -> Type +newtype T @a k = MkT (forall (b :: k). SameKind a b) diff --git a/testsuite/tests/polykinds/T16245a.stderr b/testsuite/tests/polykinds/T16245a.stderr index 2d99b7f41540..6d04f5f6896f 100644 --- a/testsuite/tests/polykinds/T16245a.stderr +++ b/testsuite/tests/polykinds/T16245a.stderr @@ -1,12 +1,12 @@ -T16245a.hs:12:66: error: [GHC-25897] +T16245a.hs:12:51: error: [GHC-25897] • Expected kind ‘k1’, but ‘b’ has kind ‘k2’ ‘k2’ is a rigid type variable bound by the newtype declaration for ‘T’ - at T16245a.hs:12:12 + at T16245a.hs:12:14 ‘k1’ is a rigid type variable bound by the newtype declaration for ‘T’ - at T16245a.hs:12:1-67 + at T16245a.hs:11:11-40 • In the second argument of ‘SameKind’, namely ‘b’ In the type ‘(forall (b :: k). SameKind a b)’ In the definition of data constructor ‘MkT’ diff --git a/testsuite/tests/polykinds/T17841.hs b/testsuite/tests/polykinds/T17841.hs index 24189a6e8403..f5f4657c0c41 100644 --- a/testsuite/tests/polykinds/T17841.hs +++ b/testsuite/tests/polykinds/T17841.hs @@ -1,8 +1,10 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE PolyKinds #-} module T17841 where +import Data.Kind + data Proxy a = Proxy -class Foo (t :: k) where foo :: Proxy (a :: t) +type Foo :: k -> Constraint +class Foo t where foo :: Proxy (a :: t) diff --git a/testsuite/tests/polykinds/T17841.stderr b/testsuite/tests/polykinds/T17841.stderr index 5c95fb8d0677..d93800d95107 100644 --- a/testsuite/tests/polykinds/T17841.stderr +++ b/testsuite/tests/polykinds/T17841.stderr @@ -1,9 +1,9 @@ -T17841.hs:8:45: error: [GHC-25897] +T17841.hs:10:38: error: [GHC-25897] • Expected a type, but ‘t’ has kind ‘k’ ‘k’ is a rigid type variable bound by the class declaration for ‘Foo’ - at T17841.hs:8:12-17 + at T17841.hs:9:13-27 • In the kind ‘t’ In the first argument of ‘Proxy’, namely ‘(a :: t)’ In the type signature: foo :: Proxy (a :: t) diff --git a/testsuite/tests/polykinds/T6137.hs b/testsuite/tests/polykinds/T6137.hs index 6b7ebc47cc46..6b7368f2c6b3 100644 --- a/testsuite/tests/polykinds/T6137.hs +++ b/testsuite/tests/polykinds/T6137.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE KindSignatures #-} @@ -43,5 +42,6 @@ data instance In (F f) r x where D:R:InioFrx0 :: R:InioFrx o i f ~ In i o ('F i o f) -} -- Requires polymorphic recursion -data In' (f :: Code i o) :: (i -> Type) -> o -> Type where +type In' :: Code i o -> (i -> Type) -> o -> Type +data In' f r t where MkIn' :: In' g (Sum1 r (In' (F g) r)) t -> In' (F g) r t diff --git a/testsuite/tests/polykinds/T7053.hs b/testsuite/tests/polykinds/T7053.hs index 9540e71c422b..9dc7d96f6b82 100644 --- a/testsuite/tests/polykinds/T7053.hs +++ b/testsuite/tests/polykinds/T7053.hs @@ -1,8 +1,9 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE PolyKinds, GADTs #-} module T7053 where +-- No standalone kind signature or return kind annotation. +-- We are testing that GHC does not panic without either of those. data TypeRep (a :: k) where TyApp :: TypeRep a -> TypeRep b -> TypeRep (a b) diff --git a/testsuite/tests/polykinds/T7053.stderr b/testsuite/tests/polykinds/T7053.stderr new file mode 100644 index 000000000000..49f2fe68bc92 --- /dev/null +++ b/testsuite/tests/polykinds/T7053.stderr @@ -0,0 +1,6 @@ + +T7053.hs:8:23: error: [GHC-25897] + • Expected kind ‘k’, but ‘a’ has kind ‘k -> k’ + • In the first argument of ‘TypeRep’, namely ‘a’ + In the type ‘TypeRep a’ + In the definition of data constructor ‘TyApp’ diff --git a/testsuite/tests/polykinds/T7053a.hs b/testsuite/tests/polykinds/T7053a.hs index 8b798d530e19..559c190a2fed 100644 --- a/testsuite/tests/polykinds/T7053a.hs +++ b/testsuite/tests/polykinds/T7053a.hs @@ -1,11 +1,10 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE PolyKinds, GADTs #-} module T7053a where import Data.Kind (Type) --- This time with a fully-specified kind signature -data TypeRep (a :: k) :: Type where +type TypeRep :: k -> Type +data TypeRep a where TyApp :: TypeRep a -> TypeRep b -> TypeRep (a b) diff --git a/testsuite/tests/polykinds/T7224.hs b/testsuite/tests/polykinds/T7224.hs index 0283b4be3cc9..e4b34c0e858e 100644 --- a/testsuite/tests/polykinds/T7224.hs +++ b/testsuite/tests/polykinds/T7224.hs @@ -1,8 +1,10 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE PolyKinds #-} module T7224 where -class PMonad' (m :: i -> i -> * -> *) where +import Data.Kind + +type PMonad' :: (i -> i -> Type -> Type) -> Constraint +class PMonad' @i m where ret' :: a -> m i i a bind' :: m i j a -> (a -> m j k b) -> m i k b diff --git a/testsuite/tests/polykinds/T7224.stderr b/testsuite/tests/polykinds/T7224.stderr index 9ef09aed7b60..87edb3d81e39 100644 --- a/testsuite/tests/polykinds/T7224.stderr +++ b/testsuite/tests/polykinds/T7224.stderr @@ -1,18 +1,18 @@ -T7224.hs:7:19: error: [GHC-25897] +T7224.hs:9:19: error: [GHC-25897] • Expected kind ‘i’, but ‘i’ has kind ‘*’ ‘i’ is a rigid type variable bound by the class declaration for ‘PMonad'’ - at T7224.hs:6:16-36 + at T7224.hs:8:16 • In the first argument of ‘m’, namely ‘i’ In the type signature: ret' :: a -> m i i a In the class declaration for ‘PMonad'’ -T7224.hs:8:14: error: [GHC-25897] +T7224.hs:10:14: error: [GHC-25897] • Expected kind ‘i’, but ‘i’ has kind ‘*’ ‘i’ is a rigid type variable bound by the class declaration for ‘PMonad'’ - at T7224.hs:6:16-36 + at T7224.hs:8:16 • In the first argument of ‘m’, namely ‘i’ In the type signature: bind' :: m i j a -> (a -> m j k b) -> m i k b diff --git a/testsuite/tests/polykinds/T9200.hs b/testsuite/tests/polykinds/T9200.hs index 96edb604adc7..43691bad4022 100644 --- a/testsuite/tests/polykinds/T9200.hs +++ b/testsuite/tests/polykinds/T9200.hs @@ -1,32 +1,37 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE PolyKinds, MultiParamTypeClasses, FlexibleContexts, DataKinds, TypeFamilies #-} module T9200 where -import Data.Kind (Type) +import Data.Kind (Type, Constraint) import Data.Proxy ------ --- test CUSK on classes +-- test SAKS on classes -class C (f :: k) (a :: k2) where +type C :: k -> k2 -> Constraint +class C f a where c_meth :: D a => Proxy f -> Proxy a -> () - + class C () a => D a --------- ---- test CUSK on type synonyms +--- test SAKS on type synonyms + data T1 a b c = MkT1 (S True b c) data T2 p q r = MkT2 (S p 5 r) data T3 x y q = MkT3 (S x y '()) -type S (f :: k1) (g :: k2) (h :: k3) = ((T1 f g h, T2 f g h, T3 f g h) :: Type) + +type S :: k1 -> k2 -> k3 -> Type +type S f g h = (T1 f g h, T2 f g h, T3 f g h) ---------- --- test CUSK on closed type families -type family F (a :: k) :: k where +-- test SAKS on closed type families + +type F :: k -> k +type family F a where F True = False F False = True F x = x diff --git a/testsuite/tests/polykinds/all.T b/testsuite/tests/polykinds/all.T index 7a8d5aa7b427..ab44471511af 100644 --- a/testsuite/tests/polykinds/all.T +++ b/testsuite/tests/polykinds/all.T @@ -52,7 +52,7 @@ test('T6137', normal, compile,['']) test('T6093', normal, compile,['']) test('T6049', normal, compile,['']) test('T6129', normal, compile_fail,['']) -test('T7053', normal, compile,['']) +test('T7053', normal, compile_fail,['']) test('T7053a', normal, compile,['']) test('T7020', normal, compile,['']) test('T7022', req_th, makefile_test, []) diff --git a/testsuite/tests/simplCore/should_compile/T14270a.hs b/testsuite/tests/simplCore/should_compile/T14270a.hs index 1cf422f709d5..f79afee9ea4e 100644 --- a/testsuite/tests/simplCore/should_compile/T14270a.hs +++ b/testsuite/tests/simplCore/should_compile/T14270a.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE TypeApplications, ScopedTypeVariables, GADTs, RankNTypes, PolyKinds, KindSignatures #-} {-# OPTIONS_GHC -O2 #-} -- We are provoking a bug in GHC.Core.Opt.SpecConstr @@ -10,7 +9,8 @@ import Data.Proxy data T a = T1 (T a) | T2 -data K (a :: k) where +type K :: k -> Type +data K a where K1 :: K (a :: Type) K2 :: K a diff --git a/testsuite/tests/simplCore/should_compile/T16979b.hs b/testsuite/tests/simplCore/should_compile/T16979b.hs index 92c6d28a07ee..00aeecf8bcd7 100644 --- a/testsuite/tests/simplCore/should_compile/T16979b.hs +++ b/testsuite/tests/simplCore/should_compile/T16979b.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-} @@ -160,7 +159,8 @@ iso :: (s -> a) -> (b -> t) -> Iso s t a b iso sa bt = dimap sa (fmap bt) {-# INLINE iso #-} -type family LookupParam (a :: k) (p :: Nat) :: Maybe Nat where +type LookupParam :: k -> Nat -> Maybe Nat +type family LookupParam a p where LookupParam (param (n :: Nat)) m = 'Nothing LookupParam (a (_ (m :: Nat))) n = IfEq m n ('Just 0) (MaybeAdd (LookupParam a n) 1) LookupParam (a _) n = MaybeAdd (LookupParam a n) 1 @@ -177,20 +177,24 @@ type family IfEq (a :: k) (b :: k) (t :: l) (f :: l) :: l where data Sub where Sub :: Nat -> k -> Sub -type family ReplaceArg (t :: k) (pos :: Nat) (to :: j) :: k where +type ReplaceArg :: k -> Nat -> j -> k +type family ReplaceArg t pos to where ReplaceArg (t a) 0 to = t to ReplaceArg (t a) pos to = ReplaceArg t (pos - 1) to a ReplaceArg t _ _ = t -type family ReplaceArgs (t :: k) (subs :: [Sub]) :: k where +type ReplaceArgs :: k -> [Sub] -> k +type family ReplaceArgs t subs where ReplaceArgs t '[] = t ReplaceArgs t ('Sub n arg ': ss) = ReplaceArgs (ReplaceArg t n arg) ss -type family ArgAt (t :: k) (n :: Nat) :: j where +type ArgAt :: k -> Nat -> j +type family ArgAt t n where ArgAt (t a) 0 = a ArgAt (t a) n = ArgAt t (n - 1) -type family Unify (a :: k) (b :: k) :: [Sub] where +type Unify :: k -> k -> [Sub] +type family Unify a b where Unify (p n _ 'PTag) a' = '[ 'Sub n a'] Unify (a x) (b y) = Unify x y ++ Unify a b Unify a a = '[] @@ -208,7 +212,8 @@ data PTag = PTag type family P :: Nat -> k -> PTag -> k type family Param :: Nat -> k where -type family Indexed (t :: k) (i :: Nat) :: k where +type Indexed :: k -> Nat -> k +type family Indexed t i where Indexed (t a) i = Indexed t (i + 1) (Param i) Indexed t _ = t diff --git a/testsuite/tests/th/ClosedFam2TH.hs b/testsuite/tests/th/ClosedFam2TH.hs index 8786e24aa609..2003557bf4af 100644 --- a/testsuite/tests/th/ClosedFam2TH.hs +++ b/testsuite/tests/th/ClosedFam2TH.hs @@ -1,11 +1,14 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE TemplateHaskell, TypeFamilies, PolyKinds, TypeApplications, TypeFamilyDependencies #-} module ClosedFam2 where import Language.Haskell.TH -$( return [ ClosedTypeFamilyD +$( return [ KiSigD (mkName "Equals") + (ArrowT `AppT` VarT (mkName "k") `AppT` + (ArrowT `AppT` VarT (mkName "k") `AppT` + VarT (mkName "k"))) + , ClosedTypeFamilyD (TypeFamilyHead (mkName "Equals") [ KindedTV (mkName "a") BndrReq (VarT (mkName "k")) @@ -27,7 +30,8 @@ a = (5 :: Int) b :: Equals Int Bool b = False -$( return [ ClosedTypeFamilyD +$( return [ KiSigD (mkName "Foo") (ArrowT `AppT` VarT (mkName "k") `AppT` StarT) + , ClosedTypeFamilyD (TypeFamilyHead (mkName "Foo") [ KindedTV (mkName "a") BndrReq (VarT (mkName "k"))] diff --git a/testsuite/tests/th/T12045TH1.hs b/testsuite/tests/th/T12045TH1.hs index 7d5ad856c31f..94797bd2aa0e 100644 --- a/testsuite/tests/th/T12045TH1.hs +++ b/testsuite/tests/th/T12045TH1.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE TemplateHaskell, DataKinds, PolyKinds , TypeApplications, TypeFamilies #-} @@ -6,7 +5,8 @@ module T12045TH1 where import Data.Kind import Language.Haskell.TH hiding (Type) -$([d| type family F (a :: k) :: Type where +$([d| type F :: k -> Type + type family F a where F @Type Int = Bool F @(Type->Type) Maybe = Char |]) diff --git a/testsuite/tests/th/T12045TH1.stderr b/testsuite/tests/th/T12045TH1.stderr index fd727295eb97..e165ef7deab5 100644 --- a/testsuite/tests/th/T12045TH1.stderr +++ b/testsuite/tests/th/T12045TH1.stderr @@ -1,9 +1,12 @@ -T12045TH1.hs:(9,2)-(11,53): Splicing declarations - [d| type family F (a :: k) :: Type where +T12045TH1.hs:(8,2)-(11,53): Splicing declarations + [d| type F :: k -> Type + + type family F a where F @Type Int = Bool F @(Type -> Type) Maybe = Char |] ======> - type family F (a :: k) :: Type where + type F :: k -> Type + type family F a where F @Type Int = Bool F @(Type -> Type) Maybe = Char T12045TH1.hs:14:2-32: Splicing declarations diff --git a/testsuite/tests/th/T12045TH2.hs b/testsuite/tests/th/T12045TH2.hs index cab400d301ca..2609cf3d391c 100644 --- a/testsuite/tests/th/T12045TH2.hs +++ b/testsuite/tests/th/T12045TH2.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE TemplateHaskell, TypeApplications, PolyKinds , TypeFamilies, DataKinds #-} @@ -8,7 +7,8 @@ import Data.Kind import Language.Haskell.TH hiding (Type) import System.IO -type family Foo (a :: k) :: Type where +type Foo :: k -> Type +type family Foo a where Foo @Type a = Bool type family Baz (a :: k) @@ -17,13 +17,16 @@ type instance Baz @(Type->Type->Type) a = Char $( do FamilyI foo@(ClosedTypeFamilyD (TypeFamilyHead _ tvbs1 res1 m_kind1) [TySynEqn (Just bndrs1) (AppT _ lhs1) rhs1]) [] <- reify ''Foo + sig1 <- reifyType ''Foo FamilyI baz@(OpenTypeFamilyD (TypeFamilyHead _ tvbs2 res2 m_kind2)) [inst@(TySynInstD (TySynEqn (Just bndrs2) (AppT _ lhs2) rhs2))] <- reify ''Baz + runIO $ putStrLn $ pprint sig1 runIO $ putStrLn $ pprint foo runIO $ putStrLn $ pprint baz runIO $ putStrLn $ pprint inst runIO $ hFlush stdout - return [ ClosedTypeFamilyD + return [ KiSigD (mkName "Foo'") sig1 + , ClosedTypeFamilyD (TypeFamilyHead (mkName "Foo'") tvbs1 res1 m_kind1) [TySynEqn (Just bndrs1) (AppT (ConT (mkName "Foo'")) lhs1) rhs1] , OpenTypeFamilyD diff --git a/testsuite/tests/th/T12045TH2.stderr b/testsuite/tests/th/T12045TH2.stderr index ce626e5e0180..5516e7d48012 100644 --- a/testsuite/tests/th/T12045TH2.stderr +++ b/testsuite/tests/th/T12045TH2.stderr @@ -1,3 +1,4 @@ +forall (k_0 :: *) . k_0 -> * type family T12045TH2.Foo (a_0 :: k_1) :: * where forall (a_2 :: *). T12045TH2.Foo (a_2 :: *) = GHC.Types.Bool type family T12045TH2.Baz (a_0 :: k_1) :: * diff --git a/testsuite/tests/th/T12646.hs b/testsuite/tests/th/T12646.hs index aa33f5cb058b..0472ce60b046 100644 --- a/testsuite/tests/th/T12646.hs +++ b/testsuite/tests/th/T12646.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-} @@ -8,7 +7,8 @@ import Language.Haskell.TH hiding (Type) import System.IO import Data.Kind (Type) -type family F (a :: k) :: Type where +type F :: k -> Type +type family F a where F (a :: Type -> Type) = Int F (a :: k) = Char diff --git a/testsuite/tests/th/T15243.hs b/testsuite/tests/th/T15243.hs index c429f783aaeb..afd446ac75ea 100644 --- a/testsuite/tests/th/T15243.hs +++ b/testsuite/tests/th/T15243.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE TemplateHaskell #-} @@ -8,7 +7,8 @@ module T15243 where data Unit = Unit -$([d| type family F (a :: k) :: k where +$([d| type F :: k -> k + type family F a where F 'Unit = 'Unit F '(,) = '(,) F '[] = '[] diff --git a/testsuite/tests/th/T15243.stderr b/testsuite/tests/th/T15243.stderr index 74f316e7d7a6..ac43033524fb 100644 --- a/testsuite/tests/th/T15243.stderr +++ b/testsuite/tests/th/T15243.stderr @@ -1,11 +1,14 @@ -T15243.hs:(11,2)-(16,7): Splicing declarations - [d| type family F (a :: k) :: k where +T15243.hs:(10,2)-(16,7): Splicing declarations + [d| type F :: k -> k + + type family F a where F 'Unit = 'Unit F '(,) = '(,) F '[] = '[] F '(:) = '(:) |] ======> - type family F (a :: k) :: k where + type F :: k -> k + type family F a where F 'Unit = 'Unit F '(,) = '(,) F '[] = '[] diff --git a/testsuite/tests/typecheck/should_compile/SplitWD.hs b/testsuite/tests/typecheck/should_compile/SplitWD.hs index b0f37cc4b1ce..55012effe1fd 100644 --- a/testsuite/tests/typecheck/should_compile/SplitWD.hs +++ b/testsuite/tests/typecheck/should_compile/SplitWD.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE ScopedTypeVariables, TypeOperators, DataKinds, PolyKinds, TypeFamilies, GADTs, StandaloneDeriving #-} @@ -18,7 +17,8 @@ data Vec :: Type -> Nat -> Type where (:>) :: a -> Vec a n -> Vec a (Succ n) infixr 5 :> -type family (xs :: Vec a n) +++ (ys :: Vec a m) :: Vec a (n + m) where +type (+++) :: Vec a n -> Vec a m -> Vec a (n + m) +type family xs +++ ys where VNil +++ ys = ys (x :> xs) +++ ys = x :> (xs +++ ys) infixr 5 +++ diff --git a/testsuite/tests/typecheck/should_compile/T11524.hs b/testsuite/tests/typecheck/should_compile/T11524.hs index a8c40c88c6d5..182df054770b 100644 --- a/testsuite/tests/typecheck/should_compile/T11524.hs +++ b/testsuite/tests/typecheck/should_compile/T11524.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE ExplicitForAll #-} @@ -7,7 +6,10 @@ module T11524 where -data AType (a :: k) where +import Data.Kind (Type) + +type AType :: k -> Type +data AType a where AMaybe :: AType Maybe AInt :: AType Int AApp :: forall k1 k2 (a :: k1 -> k2) (b :: k1). diff --git a/testsuite/tests/typecheck/should_compile/T12919.hs b/testsuite/tests/typecheck/should_compile/T12919.hs index 825b7f65c104..9fd31cdacf65 100644 --- a/testsuite/tests/typecheck/should_compile/T12919.hs +++ b/testsuite/tests/typecheck/should_compile/T12919.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE DataKinds, PolyKinds, TypeFamilies, GADTs, ConstraintKinds, TypeOperators #-} module T12919 where @@ -13,7 +12,8 @@ data V :: N -> Type where type family VC (n :: N) :: Type where VC Z = Type -type family VF (xs :: V n) (f :: VC n) :: Type where +type VF :: V n -> VC n -> Type +type family VF xs f where VF VZ f = f data Dict c where diff --git a/testsuite/tests/typecheck/should_compile/T13333.hs b/testsuite/tests/typecheck/should_compile/T13333.hs index 843b3d816502..7bf10aa4c904 100644 --- a/testsuite/tests/typecheck/should_compile/T13333.hs +++ b/testsuite/tests/typecheck/should_compile/T13333.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GADTs #-} @@ -9,12 +8,13 @@ {-# LANGUAGE TypeOperators #-} module T13333 where +import Data.Kind (Type, Constraint) import Data.Data -import GHC.Exts (Constraint) data T (phantom :: k) = T -data D (p :: k -> Constraint) (x :: j) where +type D :: (k -> Constraint) -> j -> Type +data D p x where D :: forall k (p :: k -> Constraint) (x :: k). p x => D p x class Possibly p x where diff --git a/testsuite/tests/typecheck/should_compile/T13822.hs b/testsuite/tests/typecheck/should_compile/T13822.hs index cd5ff23478ec..6bdad43b5485 100644 --- a/testsuite/tests/typecheck/should_compile/T13822.hs +++ b/testsuite/tests/typecheck/should_compile/T13822.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE GADTs, TypeOperators, PolyKinds, DataKinds, TypeFamilyDependencies, RankNTypes, LambdaCase, EmptyCase, UndecidableInstances #-} @@ -20,14 +19,15 @@ type family IK STAR = Type IK (a:>b) = IK a -> IK b -type family - I (t :: Ty k) = (res :: IK k) | res -> t where +type I :: Ty k -> IK k +type family I t = res | res -> t where I TInt = Int I TBool = Bool I TMaybe = Maybe I (TApp f a) = (I f) (I a) -data TyRep (k :: KIND) (t :: Ty k) where +type TyRep :: forall (k :: KIND) -> Ty k -> Type +data TyRep k t where TyInt :: TyRep STAR TInt TyBool :: TyRep STAR TBool TyMaybe :: TyRep (STAR:>STAR) TMaybe diff --git a/testsuite/tests/typecheck/should_compile/T13879.hs b/testsuite/tests/typecheck/should_compile/T13879.hs index 8a70565e7a4d..c8e3a9b4e01c 100644 --- a/testsuite/tests/typecheck/should_compile/T13879.hs +++ b/testsuite/tests/typecheck/should_compile/T13879.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-} @@ -11,7 +10,8 @@ import Data.Kind data family Sing (a :: k) -data HR (a :: j) (b :: k) where +type HR :: j -> k -> Type +data HR a b where HRefl :: HR a a data instance Sing (z :: HR a b) where diff --git a/testsuite/tests/typecheck/should_compile/T14366.hs b/testsuite/tests/typecheck/should_compile/T14366.hs index 52bc3a4338ea..d9e14d68a112 100644 --- a/testsuite/tests/typecheck/should_compile/T14366.hs +++ b/testsuite/tests/typecheck/should_compile/T14366.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE DataKinds #-} @@ -8,7 +7,8 @@ module T14366 where import Data.Kind import Data.Type.Equality -type family Cast (a :: Type) (b :: Type) (e :: a :~: b) (x :: a) :: b where +type Cast :: forall a b -> (a :~: b) -> (a -> b) +type family Cast a b e x where Cast _ _ Refl x = x type family F (a :: Type) :: Type where diff --git a/testsuite/tests/typecheck/should_compile/T14451.hs b/testsuite/tests/typecheck/should_compile/T14451.hs index 1d4493d20d69..417cd7a08e80 100644 --- a/testsuite/tests/typecheck/should_compile/T14451.hs +++ b/testsuite/tests/typecheck/should_compile/T14451.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# Language KindSignatures, TypeOperators, PolyKinds, TypeOperators, ConstraintKinds, TypeFamilies, DataKinds, GADTs, AllowAmbiguousTypes, InstanceSigs, RankNTypes, UndecidableInstances #-} module T14451 where @@ -10,8 +9,8 @@ type a ~> b = TyFun a b -> Type type Cat ob = ob -> ob -> Type -type family - Apply (f :: a ~> b) (x :: a) :: b where +type Apply :: (a ~> b) -> (a -> b) +type family Apply f x where Apply (CompSym2 f g) a = Comp f g a data CompSym2 :: (b ~> c) -> (a ~> b) -> (a ~> c) @@ -24,6 +23,6 @@ class Varpi (f :: i ~> j) where varpa :: Dom f a a' -> Cod f (f·a) (f·a') -type family - Comp (f::k1 ~> k) (g::k2 ~> k1) (a::k2) :: k where +type Comp :: (k1 ~> k) -> (k2 ~> k1) -> k2 -> k +type family Comp f g a where Comp f g a = f · (g · a) diff --git a/testsuite/tests/typecheck/should_compile/T15079.hs b/testsuite/tests/typecheck/should_compile/T15079.hs index 22e86abc5608..484a870d1a24 100644 --- a/testsuite/tests/typecheck/should_compile/T15079.hs +++ b/testsuite/tests/typecheck/should_compile/T15079.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE PolyKinds #-} @@ -14,13 +13,16 @@ import GHC.Exts (Any) infixl 4 :== -- | Heterogeneous Leibnizian equality. -newtype (a :: j) :== (b :: k) +type (:==) :: j -> k -> Type +newtype a :== b = HRefl { hsubst :: forall (c :: forall (i :: Type). i -> Type). c a -> c b } ----- newtype Coerce a = Coerce { uncoerce :: Starify a } -type family Starify (a :: k) :: Type where + +type Starify :: k -> Type +type family Starify a where Starify (a :: Type) = a Starify _ = Void @@ -35,7 +37,8 @@ newtype Flay :: (forall (i :: Type). i -> i -> Type) (j :: Type) (k :: Type) (a :: j) (b :: k). { unflay :: p a (MassageKind j b) } -> Flay p a b -type family MassageKind (j :: Type) (a :: k) :: j where +type MassageKind :: forall (j :: Type) -> k -> j +type family MassageKind j a where MassageKind j (a :: j) = a MassageKind _ _ = Any diff --git a/testsuite/tests/typecheck/should_compile/T6018.hs b/testsuite/tests/typecheck/should_compile/T6018.hs index f4b431cda48c..1b2653d3ca49 100644 --- a/testsuite/tests/typecheck/should_compile/T6018.hs +++ b/testsuite/tests/typecheck/should_compile/T6018.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE PolyKinds #-} @@ -200,7 +199,8 @@ class Kcl a b where -- Declaring kind injectivity. Here we only claim that knowing the RHS -- determines the LHS kind but not the type. -type family L (a :: k1) = (r :: k2) | r -> k1 where +type L :: k1 -> k2 +type family L @k1 a = r | r -> k1 where L 'True = Int L 'False = Int L Maybe = 3 diff --git a/testsuite/tests/typecheck/should_compile/T6018.stderr b/testsuite/tests/typecheck/should_compile/T6018.stderr index bcbe0357c7e9..b793a61df34f 100644 --- a/testsuite/tests/typecheck/should_compile/T6018.stderr +++ b/testsuite/tests/typecheck/should_compile/T6018.stderr @@ -2,10 +2,10 @@ [2 of 3] Compiling T6018a ( T6018a.hs, T6018a.o ) [3 of 3] Compiling T6018 ( T6018.hs, T6018.o ) -T6018.hs:109:5: warning: [GHC-28129] [-Winaccessible-code (in -Wdefault)] +T6018.hs:108:5: warning: [GHC-28129] [-Winaccessible-code (in -Wdefault)] Type family instance equation is overlapped: - Foo Bool = Bool -- Defined at T6018.hs:109:5 + Foo Bool = Bool -- Defined at T6018.hs:108:5 -T6018.hs:116:5: warning: [GHC-28129] [-Winaccessible-code (in -Wdefault)] +T6018.hs:115:5: warning: [GHC-28129] [-Winaccessible-code (in -Wdefault)] Type family instance equation is overlapped: - Bar Bool = Char -- Defined at T6018.hs:116:5 + Bar Bool = Char -- Defined at T6018.hs:115:5 diff --git a/testsuite/tests/typecheck/should_compile/T7503a.hs b/testsuite/tests/typecheck/should_compile/T7503a.hs index 638265a8dfb3..4ef16e02d719 100644 --- a/testsuite/tests/typecheck/should_compile/T7503a.hs +++ b/testsuite/tests/typecheck/should_compile/T7503a.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE ExistentialQuantification, DataKinds, PolyKinds, KindSignatures, GADTs #-} module T7503a where import Data.Kind @@ -6,7 +5,8 @@ module T7503a where data WrappedType = forall a. WrapType a - data A :: WrappedType -> Type where + type A :: WrappedType -> Type + data A a where MkA :: forall (a :: Type). AW a -> A (WrapType a) type AW (a :: k) = A (WrapType a) diff --git a/testsuite/tests/typecheck/should_compile/T9151.hs b/testsuite/tests/typecheck/should_compile/T9151.hs index c3546438d2ec..cc45517c9fa8 100644 --- a/testsuite/tests/typecheck/should_compile/T9151.hs +++ b/testsuite/tests/typecheck/should_compile/T9151.hs @@ -1,11 +1,12 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE PolyKinds, DataKinds, TypeFamilies, UndecidableInstances #-} module T9151 where +import Data.Kind import Data.Proxy -class PEnum (kproxy :: KProxy a) where +type PEnum :: KProxy a -> Constraint +class PEnum @a kproxy where type ToEnum (x :: a) :: Bool type ToEnum x = TEHelper diff --git a/testsuite/tests/typecheck/should_fail/LevPolyBounded.hs b/testsuite/tests/typecheck/should_fail/LevPolyBounded.hs index 674de050d630..c5d0eb58fa17 100644 --- a/testsuite/tests/typecheck/should_fail/LevPolyBounded.hs +++ b/testsuite/tests/typecheck/should_fail/LevPolyBounded.hs @@ -1,12 +1,13 @@ -{-# LANGUAGE Haskell2010 #-} -- inspired by comment:25 on #12708 {-# LANGUAGE PolyKinds #-} module LevPolyBounded where +import Data.Kind import GHC.Exts -class XBounded (a :: TYPE r) where +type XBounded :: TYPE r -> Constraint +class XBounded a where minBound :: a maxBound :: a diff --git a/testsuite/tests/typecheck/should_fail/LevPolyBounded.stderr b/testsuite/tests/typecheck/should_fail/LevPolyBounded.stderr index 69e24ad5f8dc..210f941bd5a4 100644 --- a/testsuite/tests/typecheck/should_fail/LevPolyBounded.stderr +++ b/testsuite/tests/typecheck/should_fail/LevPolyBounded.stderr @@ -1,18 +1,18 @@ -LevPolyBounded.hs:11:15: error: [GHC-25897] +LevPolyBounded.hs:12:15: error: [GHC-25897] • Couldn't match kind ‘r’ with ‘LiftedRep’ Expected kind ‘*’, but ‘a’ has kind ‘TYPE r’ ‘r’ is a rigid type variable bound by the class declaration for ‘XBounded’ - at LevPolyBounded.hs:10:17-27 + at LevPolyBounded.hs:10:18-37 • In the type signature: LevPolyBounded.minBound :: a In the class declaration for ‘XBounded’ -LevPolyBounded.hs:12:15: error: [GHC-25897] +LevPolyBounded.hs:13:15: error: [GHC-25897] • Couldn't match kind ‘r’ with ‘LiftedRep’ Expected kind ‘*’, but ‘a’ has kind ‘TYPE r’ ‘r’ is a rigid type variable bound by the class declaration for ‘XBounded’ - at LevPolyBounded.hs:10:17-27 + at LevPolyBounded.hs:10:18-37 • In the type signature: LevPolyBounded.maxBound :: a In the class declaration for ‘XBounded’ diff --git a/testsuite/tests/typecheck/should_fail/T12785b.hs b/testsuite/tests/typecheck/should_fail/T12785b.hs index ccc53f609345..f52cbcb7357c 100644 --- a/testsuite/tests/typecheck/should_fail/T12785b.hs +++ b/testsuite/tests/typecheck/should_fail/T12785b.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE RankNTypes, TypeOperators, ViewPatterns #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE DataKinds, PolyKinds, GADTs #-} @@ -14,7 +13,8 @@ data HTree n a where Leaf :: HTree (S n) a Branch :: a -> HTree n (HTree (S n) a) -> HTree (S n) a -data STree (n ::Peano) :: forall a . (a -> Type) -> HTree n a -> Type where +type STree :: forall (n :: Peano) -> forall a. (a -> Type) -> HTree n a -> Type +data STree n f s where SPoint :: f a -> STree Z f (Point a) SLeaf :: STree (S n) f Leaf SBranch :: f a -> STree n (STree (S n) f) stru -> STree (S n) f (a `Branch` stru) @@ -34,6 +34,7 @@ hmap f (Point a) = Point (f a) hmap f Leaf = Leaf hmap f (a `Branch` tr) = f a `Branch` hmap (hmap f) tr -type family Payload (n :: Peano) (s :: HTree n x) :: x where +type Payload :: forall x. forall (n :: Peano) -> HTree n x -> x +type family Payload n s where Payload Z (Point a) = a Payload (S n) (a `Branch` stru) = a diff --git a/testsuite/tests/typecheck/should_fail/T14904a.hs b/testsuite/tests/typecheck/should_fail/T14904a.hs index 0043067e51dd..1059a5a86d9f 100644 --- a/testsuite/tests/typecheck/should_fail/T14904a.hs +++ b/testsuite/tests/typecheck/should_fail/T14904a.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE PolyKinds #-} @@ -6,5 +5,6 @@ module T14904a where import Data.Kind -type family F (f :: forall a. g a) :: Type where +type F :: (forall a. g a) -> Type +type family F f :: Type where F (f :: forall a. g a) = Int diff --git a/testsuite/tests/typecheck/should_fail/T15552a.hs b/testsuite/tests/typecheck/should_fail/T15552a.hs index a6cc56f99dc6..69824dfd7ddd 100644 --- a/testsuite/tests/typecheck/should_fail/T15552a.hs +++ b/testsuite/tests/typecheck/should_fail/T15552a.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE DataKinds, ExistentialQuantification, GADTs, PolyKinds, TypeOperators #-} {-# LANGUAGE TypeFamilies #-} {- # LANGUAGE UndecidableInstances #-} @@ -22,7 +21,8 @@ type family GetEntryOfVal (eov :: EntryOfVal v kvs) where GetEntryOfVal ('EntryOfVal e) = e -type family FirstEntryOfVal (v :: Type) (kvs :: [Type]) :: EntryOfVal v kvs +type FirstEntryOfVal :: forall (v :: Type) (kvs :: [Type]) -> EntryOfVal v kvs +type family FirstEntryOfVal v kvs where FirstEntryOfVal v (_ : kvs) = 'EntryOfVal (There (GetEntryOfVal (FirstEntryOfVal v kvs))) --type instance FirstEntryOfVal v (_ : kvs) diff --git a/testsuite/tests/typecheck/should_fail/T16255.hs b/testsuite/tests/typecheck/should_fail/T16255.hs index 2f20d4c788c6..2bfa23a5657e 100644 --- a/testsuite/tests/typecheck/should_fail/T16255.hs +++ b/testsuite/tests/typecheck/should_fail/T16255.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE RankNTypes #-} @@ -18,5 +17,6 @@ data family D1 :: forall k. k -> Type -- instances permit oversaturation in their equations. data instance D1 @Bool :: Bool -> Type +type F2 :: j -> forall k. Either j k type family F2 (x :: j) :: forall k. Either j k where F2 5 @Symbol = Left 4 diff --git a/testsuite/tests/typecheck/should_fail/T16255.stderr b/testsuite/tests/typecheck/should_fail/T16255.stderr index e4867cba9675..d771a0f7f240 100644 --- a/testsuite/tests/typecheck/should_fail/T16255.stderr +++ b/testsuite/tests/typecheck/should_fail/T16255.stderr @@ -1,5 +1,5 @@ -T16255.hs:14:3: error: [GHC-45474] +T16255.hs:13:3: error: [GHC-45474] • Illegal oversaturated visible kind argument: ‘@Bool’ • In the equations for closed type family ‘F1’ In the type family declaration for ‘F1’ diff --git a/testsuite/tests/typecheck/should_fail/T9201.hs b/testsuite/tests/typecheck/should_fail/T9201.hs index b04162880511..4527759c893e 100644 --- a/testsuite/tests/typecheck/should_fail/T9201.hs +++ b/testsuite/tests/typecheck/should_fail/T9201.hs @@ -1,7 +1,9 @@ -{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE PolyKinds, FunctionalDependencies, MultiParamTypeClasses #-} module T9201 where -class MonoidalCCC (f :: x -> y) (d :: y -> y -> *) | f -> d where +import Data.Kind (Type, Constraint) + +type MonoidalCCC :: (x -> y) -> (y -> y -> Type) -> Constraint +class MonoidalCCC f d | f -> d where ret :: d a (f a) diff --git a/testsuite/tests/typecheck/should_fail/T9201.stderr b/testsuite/tests/typecheck/should_fail/T9201.stderr index 660c32bef55b..b65410edaf6c 100644 --- a/testsuite/tests/typecheck/should_fail/T9201.stderr +++ b/testsuite/tests/typecheck/should_fail/T9201.stderr @@ -1,12 +1,12 @@ -T9201.hs:7:17: error: [GHC-25897] +T9201.hs:9:17: error: [GHC-25897] • Expected kind ‘x’, but ‘a’ has kind ‘y’ ‘y’ is a rigid type variable bound by the class declaration for ‘MonoidalCCC’ - at T9201.hs:6:20-49 + at T9201.hs:7:21-62 ‘x’ is a rigid type variable bound by the class declaration for ‘MonoidalCCC’ - at T9201.hs:6:20-49 + at T9201.hs:7:21-62 • In the first argument of ‘f’, namely ‘a’ In the second argument of ‘d’, namely ‘(f a)’ In the type signature: ret :: d a (f a) -- GitLab