diff --git a/testsuite/tests/dependent/should_compile/Dep2.hs b/testsuite/tests/dependent/should_compile/Dep2.hs index adaf5c3f99e131d9eb9c7c650729b0304270f15e..061ca2412ffafa65ba058cf5fb85fb12bab23a44 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 f871c9cf890d861aadd62b1e943ecc919f4db1a9..6922f1ccf4ad2dc7b4cc4c7eea68bb051ec365d8 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 c798524434faea1b61f3b7d35c6041f9c2dee69e..4369b6bddd49781cae7a82602a045d1471a95c92 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 d0961dd3845aa40b94cf6197c2e11cba21729357..420600d717c43c4c6e2976e4066e30ebadaab6f6 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 008ab860e9caa1235342be9017149fe772d5d989..cbaac9dcc4441890e9754ccfd9a80d389cac5217 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 bcbb7cec8303910191f1ac86163d54dadaa5ce89..24111e22536c56f2a3e4b9a891dbf62df3b27356 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 fa0096b4e4247ac10f00a75e09c67c4b4cca8089..f6203de8544f57778e087903ebc60ceadd62272a 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 23574a202901c95088d3ba01dd816a45c69047fb..47ef16ed4f4714cb8763945a8b3a31b00927e508 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 f46e985a4ce15c5c3a54ecd1fb9aaaabcd7bda30..2eda96aaf56f9f4e2533c1d9bf93bae4f0906635 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 dd51b05726fec637b0c31e3e702967add504e260..d4e8cfaabb46217ba6a406dec38ec8f8d6cc3c34 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 5e9bfb0ea4ae5403d819e1726925737241ad9935..352685666198669813070016ff83c909b68ba925 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 857716d489fb91350a6e104aa44842224f4621f3..0efae546fc1be134ad730928c4c04dda56f48c8c 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 9f67efa6448290216ecab338d3eac7b82d0582d2..87d38b6cb6cf4dd5b6477f06458aa9d7e6588bd2 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 eaba011625b6cff8599c4bb0951a3eca4f5a589a..f9678cd46f33d5c76d5060d1d0d30804d71de2b7 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 13a647b9ce9f919b4c5908f28f7bf9c3a7a65da7..e45588a6041ee7f4889a979901c7acfa3afae9b0 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 7667201add18c04ac7793ffa8769f61119cf98f5..814b4d1e90aec68fe55a281e04152685170f244d 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 c26f9ddbe9976b63ae3da47e40fc32b6dda8e9bc..dfa52b62e758121a1b05950fa88cedda22880bf5 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 51291ba9ae83de15890026c9a6dcc6c6d7cebf16..24c5157f8faa5adee7d361fd74026b057108b7cf 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 ac81e5532b259cda5de6b78f4859b50913c02bcd..6dbe330eda52709bb4d6abc4d154719ac4c82f67 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 493c6538d13805a639b309b32cbfd70208e72dd9..1f12bedf92f0cf3d5de205063f2721ce66fd2372 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 83445adc242ea998f15bcc1617b50bc531c6dda1..54a633db4fc1b018239c110c5d4e42015e786c1d 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 e101fbdc74910a2f57b4dc5ee6bc0b4afd07c3de..2ff9b966ee30e4977d67930a13d7a59bd6c05e7c 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 ac10b530a045f186123940c87820405700e18b36..fdc0d77f61b2b27e7744e723c44c95d70e5712c8 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 0f8e5614cfe106f7d6c02d122273fc4c3c63af62..7e7a80222fb2d401203251b10fa61fcb57a77858 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 6622d513d7f846d1e98847966f80b606c2a50bd5..3a6c954212a8efac9170b568bf7c62f92d7933ef 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 845eb83294100eebc958ca75617baeae6a45fefe..e5cb4b11c5ba49b4fb60c2231ece12fe73da5cb4 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 5d0366446d0a0ef01aeeed00cbf64439620f7763..3dd140b615b37a8261356d9cec7cc74be2203c99 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 7b72a0276a99ccaf1e1ad6cb09c37c080b0fca30..705114e64ff0dffda1083c3017ba761cfa277557 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 f02c4d94bc0357777b4be494a977660fbc31bb9e..fc297a1d0c7ea8777ed579b63ca3483068c2db3e 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 71e59f8c71d180ba27a681ae92be90d787674c64..5e3c56c3ddd428705e93a628d1ee37959887e931 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 91aebe9dc5086d7a9b58d9c1cda864990247e5df..7ab738a56ea06e76e0cf79726f07ab489d95ce57 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 cd7c7c53e93ff9fba22a1ef6274ce5b967abd75e..faa5b97684fabc9384cb4edbc56cc356f2686d30 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 da150a03a62c63aa42560b08edff3d77342ca943..34eefa8fd52485c6174eb2d1f0194ec8f09fda52 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 ba136db8e341a49fa2f37db7e5be766489cc5efc..3fb8e360eb9d2da3ab78a5b1ecd7d9cd73692586 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 cd3455b92a8887934e74e5db1fc46e6582571028..3d03be0f8fc81fde375102308ea958c638675f3c 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 202be3f1101b61f6c5529939177c8d0d399b95cc..cc54b8ccd82699831f2cb1e9392d4fddade49e0d 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 8f31c0a2481d850fa0f7500840015687237976d5..a3794a79c6fe83ec9158a98df26bbdb73aeb23c7 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 bf69c41fa3c2d5a9f855815247ff9558ab19507c..a274daef0e6d18c027cedc1bb96450dc72e9aa46 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 bb2bccbb443a507d9589cc5539d7c0a7e8ee0ad9..44a101f9ca0be007a52a95d49789daf75fbf9b65 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 b803f5073496d72f8cfa3284648fb954481d867a..90fa2e4dac953934cd2bc5e957a209037407637b 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 44b3c7a8d6582daecd4d51bae2180a6aba569f7a..2b2d8086afe25edf2bc2bfcb0a1e3264c37e6086 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 ebccb8a02e1c50ee5abc34a6b1678fb63f9afc01..bd68a56a561477eeda6c70873ad3869ceff21716 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 fc594b4355554ac01916e40caa51b4398e764653..c2e6240c6c75f96455e0758bc45dbe6fc831e3fa 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 489e1d56c579e97ea030075078f76b9f1a5058dd..c0649a29bc7ad3f77c39963329e9384d952081f9 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 7763cf460da9103ea59fc9d8abf5bc09970753a6..94c4f20c9808c8122c34339c3d353085ab5fd7e8 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 26e53807b289da2d693cb43a59c512acf1ad68dc..2f2bbdca914486c6ad59ad8a5990a7238aaf486c 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 a144c97a34e24b054c8519af7b9e442d1098cf19..635ee4efac5f2de9e9c1662911ba460917a8bbaf 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 18881f333f3267d0d7fe92c92bb4ab1c0abf34dc..e0b315392ba83fe9f2fc2a6ddb75b3056f190b85 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 38d871f5865812ee74ee14e9f64d4fd73cc60529..d29fd443e5afe43ca731d6b5d73b0a4467d5610a 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 679d1d13d528398a57c457c64da8d70078afcfca..e81ad4a829669df1aae28dd173b6c147ad7e0780 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 72c208d77d90966790070db2d3e43b76e2985924..7d1662bc30531db0cf01ec98aba0606caa8eee4a 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 e26da3246c59cb65e24ab2f7c3b15ec539196303..23ea606d22fffc5d96e60e73c86b3995201fcb32 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 4e19219a236611e080fa4197c3277d1963f78e76..aa56cc1430765bbd0a293c9c9349f8d5de59ce5e 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 efdc68cc5a7988c3bc9297e94ca1f15fa3ed46d0..5051e3daa94378b9263cbd5c891e8aa8e79c277d 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 e660263b19d33626ae63e491996232544447a620..c1246056a3f8e826838c2cbc433d6735071a871e 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 0c5110a4428b358dcab12841cca5f18c3f99f017..485ff0be9591d75b99d58f67c0398138580171d6 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 fbe67f3356f3954c6673f8c0e41bd5e41cc12973..3f224aaa94c3c24737c5a9f640385ce438be8728 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 831cde0235a8fc91e878fa112dacfec5ae9a3b2e..5eceea0c887196f97f885a5d94246826e9e5f0b0 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 9b29c2237ac5e4000bd38eeb8841f44c3caebf8f..8af40f70155aa6e9b5a02a765862841d72788325 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 1d9a4560968faafc0b8a8aa2ff4c43c07e275f02..92baf84db8645d4098c45a7f32ebc8c35b465b35 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 ba8c6bd566e2e0d8b80b9b1654e2f9ea86972d5e..4aecdbca3fc433ec1238e12bce3e48d9cfe2b253 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 41c7d0d8ab2cbfbab7b0a2748db42e08a3613db9..a57b85425021e01e27939e3a18b44af56f6ce43d 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 2defabb36db2114c2a7942d94f270353f00c0ef9..18e10df4b673f5dee2911f74240f6bd590a2b37c 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 2d99b7f415405113f5eba6017956684d6cc4565d..6d04f5f6896fe7347fd9ae3e8110b216198eb597 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 24189a6e8403e346f95a4d21ce356d1cbcb6dcb0..f5f4657c0c4114fdee1169316899e96d35e3a430 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 5c95fb8d067728337ff4845c5a96a7c7bec44a40..d93800d95107a329dc07f4ddd9080d4fa879fd19 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 6b7ebc47cc46104be478041fcf80916fc5e9bd39..6b7368f2c6b38bdd37bb6a32a57f92e6db820c86 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 9540e71c422bbd31cc1a6ecc16601e51dcbd8560..9dc7d96f6b82aedc38e4a6aba8ee7109e3bce8a8 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 0000000000000000000000000000000000000000..49f2fe68bc923b26dd915d0db36669048c9e3c6b --- /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 8b798d530e196e52c9887e1da1e6db44ad13e6c1..559c190a2fed04e5846166bf5c6641df48273f27 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 0283b4be3cc9c645ec4bdb57effeac3b1509aa00..e4b34c0e858e0cdbad51aad838101bc48b8f415f 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 9ef09aed7b605671cbfcb21b259aecf6eb87de02..87edb3d81e390dc26bca9eaa485c4583f9a5b60f 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 96edb604adc76b078f3311c9e890b8e8d8df0177..43691bad4022603aaf623b7f39f9fd84a7001d29 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 7a8d5aa7b427afcb497beced9cbef40600cdf61d..ab44471511af3a1187697725b69f5d1744270fb0 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 1cf422f709d5175be2cf708975d1ebea50627781..f79afee9ea4ef03d5eb5c4a2621f19a9b457c336 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 92c6d28a07ee4dcb04dd59cd2c66603c95f80500..00aeecf8bcd7bfc961078759cd4db7153da4a272 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 8786e24aa609bac3e6f5f459b9576cd4dbe9f27c..2003557bf4af95ced71370467312d3b9e15eab0b 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 7d5ad856c31f7f1716c883df1bb9cb21e7ae484b..94797bd2aa0e00f33d65aa0b3a7cb22eb8db99a5 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 fd727295eb971cbb11457b573b8caa3d1780ce06..e165ef7deab56a67d694d5b7ae5279a4c34d25c4 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 cab400d301ca2c4d1de391f065043da7cc163ffa..2609cf3d391cc7ae4b12f5cfa31da5287e6e35a6 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 ce626e5e018031e2d0ac76f9c269b94b727bf00d..5516e7d48012e56c6d2d7907c0f2733bcf1c2bed 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 aa33f5cb058b0e6594274a740cb8825f854eda54..0472ce60b046e91be17121ffe06deffd40e500bc 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 c429f783aaebbba4c69bc86013f0974bb0504735..afd446ac75eaea21b0f8ecb2440713ffd71c0abd 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 74f316e7d7a60b04eb00bf92980d5a8d4353c39c..ac43033524fb360e90b1402d7763e10714bf930b 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 b0f37cc4b1ce1289042a4c155942c47f34e5c148..55012effe1fd49eec4662d9506837410cce2a8e3 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 a8c40c88c6d53c65c837e5a6b7a34748db51a830..182df054770b327db931a263e305a5ac0bbe03a1 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 825b7f65c104b669524e393a4a47bd443e23cb02..9fd31cdacf6539ac03a66da8efbfe25cf7125b9b 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 843b3d816502274576dda52c9af201d7dde183b4..7bf10aa4c90460bab78f701dea228bc33d84abb6 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 cd5ff23478ec74c025001b32954773278b14df6c..6bdad43b54856f069798c36219d3811539f74457 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 8a70565e7a4de417fb009293758d2fdda728460e..c8e3a9b4e01cfd45142401d262122d30db5d20fe 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 52bc3a4338ea43a3ade73f76efb8eac7af5cafe5..d9e14d68a1127873a8735c468255f19bab9e9483 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 1d4493d20d6969430fd765b4b374d6887afab482..417cd7a08e80ea38e45660745a2eae66c17e1d5e 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 22e86abc56089b88ba6d239cf62b2ffc937c57d3..484a870d1a243efc12ff144db79a4d4cfc90f65f 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 f4b431cda48cbfe07b6b91e82f79941e76ebe4be..1b2653d3ca49026d22b374534d852895bd67fcf1 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 bcbe0357c7e9a07da34397239ad87115a6516394..b793a61df34fc8b00dfd3049636010816ac9338e 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 638265a8dfb32854366006450e34b812becf25a4..4ef16e02d71997a64c07dc7f54da64c27f9f3fe8 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 c3546438d2ec711fa2e90a696758133502409cbf..cc45517c9fa88d134d5d30c989768083704e492f 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 674de050d630d28e696ec2a6d5ec6ee953c2572f..c5d0eb58fa172ab0b7626ed9067d54a0f3dddd13 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 69e24ad5f8dcd728d4ef86713a025536db15d624..210f941bd5a43778415dc45b2449b96a13985419 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 ccc53f609345e93b2bd884f133988da583b79da9..f52cbcb7357cc94ab22bd27dffae797c1ff7ce6f 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 0043067e51dd635778c70e7125a0d9e9d16d0ba8..1059a5a86d9f993907199901d943f03f7f5a1eb8 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 a6cc56f99dc6d31065d55bca886cff9630e938d6..69824dfd7ddd95600128e04f8bcb6eb901e857ea 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 2f20d4c788c6f0cb4ddb908505631d98b713e2a4..2bfa23a5657e7f3946056e3c5c3fb096f732dcf9 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 e4867cba96754f440a985bb02b58b1f48133b15c..d771a0f7f24056cba87c107ed4356f031b82de8f 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 b04162880511a8bbeddb6fd7b46da5dd5881c9a1..4527759c893e78d10ba84f1c7c1791f4f368717c 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 660c32bef55bce5acde6ba1920eb9ece3a62d7c0..b65410edaf6c753e0f936028987b8a3a24c336af 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)