From 679bbc9705371af8ca65a5bfeb702e14bc406f51 Mon Sep 17 00:00:00 2001
From: Vladislav Zavialov <vlad.z.4096@gmail.com>
Date: Thu, 8 Jun 2023 12:22:16 +0200
Subject: [PATCH] testsuite: Do not require CUSKs

Numerous tests make use of CUSKs (complete user-supplied kinds),
a legacy feature scheduled for deprecation. In order to proceed
with the said deprecation, the tests have been updated to use SAKS
instead (standalone kind signatures).

This also allows us to remove the Haskell2010 language pragmas that
were added in 115cd3c85a8 to work around the lack of CUSKs in GHC2021.
---
 .../tests/dependent/should_compile/Dep2.hs    |   6 +-
 .../dependent/should_compile/DkNameRes.hs     |   4 +-
 .../should_compile/KindEqualities2.hs         |   4 +-
 .../dependent/should_compile/RaeBlogPost.hs   |  10 +-
 .../dependent/should_compile/RaeJobTalk.hs    |  10 +-
 .../tests/dependent/should_compile/T11711.hs  |  12 +-
 .../tests/dependent/should_compile/T12442.hs  |   7 +-
 .../tests/dependent/should_compile/T14066a.hs |   9 +-
 .../dependent/should_compile/T14066a.stderr   |   4 +-
 .../tests/dependent/should_compile/T14556.hs  |  16 +-
 .../tests/dependent/should_compile/T14749.hs  |   7 +-
 .../should_compile/T16326_Compile1.hs         |  12 +-
 .../dependent/should_compile/TypeLevelVec.hs  |   4 +-
 .../dependent/should_compile/dynamic-paper.hs |   7 +-
 .../dependent/should_compile/mkGADTVars.hs    |   4 +-
 .../tests/dependent/should_fail/T13601.hs     |   8 +-
 .../tests/dependent/should_fail/T13780c.hs    |   5 +-
 .../dependent/should_fail/T13780c.stderr      |   4 +-
 .../tests/dependent/should_fail/T15380.hs     |   4 +-
 testsuite/tests/ghci/scripts/T7939.hs         |   4 +-
 testsuite/tests/ghci/scripts/T7939.stdout     |  14 +-
 .../indexed-types/should_compile/T14554.hs    |  10 +-
 .../indexed-types/should_compile/T15122.hs    |   4 +-
 .../indexed-types/should_compile/T15352.hs    |  13 +-
 .../should_compile/T16356_Compile1.hs         |   4 +-
 .../indexed-types/should_compile/T17008b.hs   |  17 +-
 .../indexed-types/should_fail/ClosedFam3.hs   |   1 -
 .../should_fail/ClosedFam3.hs-boot            |   4 +-
 .../should_fail/ClosedFam3.stderr             |   4 +-
 .../tests/indexed-types/should_fail/T14246.hs |  10 +-
 .../indexed-types/should_fail/T14246.stderr   |   8 +-
 .../parser/should_compile/DumpParsedAst.hs    |   3 +-
 .../should_compile/DumpParsedAst.stderr       | 682 ++++++++++++------
 .../parser/should_compile/DumpRenamedAst.hs   |   3 +-
 .../should_compile/DumpRenamedAst.stderr      | 437 +++++++----
 .../should_compile/DumpTypecheckedAst.hs      |   3 +-
 .../should_compile/DumpTypecheckedAst.stderr  |  24 +-
 .../tests/patsyn/should_compile/T10997_1a.hs  |   4 +-
 .../tests/patsyn/should_compile/T12698.hs     |   4 +-
 testsuite/tests/patsyn/should_fail/T14507.hs  |   4 +-
 testsuite/tests/patsyn/should_fail/T15694.hs  |   4 +-
 testsuite/tests/patsyn/should_fail/T15695.hs  |   4 +-
 .../tests/pmcheck/complete_sigs/T14253.hs     |   4 +-
 testsuite/tests/polykinds/T10670a.hs          |   5 +-
 testsuite/tests/polykinds/T11362.hs           |   4 +-
 testsuite/tests/polykinds/T11480a.hs          |   4 +-
 testsuite/tests/polykinds/T11480b.hs          |   4 +-
 testsuite/tests/polykinds/T11520.hs           |   6 +-
 testsuite/tests/polykinds/T11520.stderr       |   4 +-
 testsuite/tests/polykinds/T11523.hs           |   4 +-
 testsuite/tests/polykinds/T12055.hs           |   7 +-
 testsuite/tests/polykinds/T12055a.hs          |  11 +-
 testsuite/tests/polykinds/T12055a.stderr      |   2 +-
 testsuite/tests/polykinds/T14270.hs           |   7 +-
 testsuite/tests/polykinds/T14450.hs           |   7 +-
 testsuite/tests/polykinds/T14450.stderr       |   2 +-
 testsuite/tests/polykinds/T15787.hs           |   7 +-
 testsuite/tests/polykinds/T15787.stderr       |   4 +-
 testsuite/tests/polykinds/T16244.hs           |   9 +-
 testsuite/tests/polykinds/T16244.stderr       |   6 +-
 testsuite/tests/polykinds/T16245.hs           |   9 +-
 testsuite/tests/polykinds/T16245.stderr       |   6 +-
 testsuite/tests/polykinds/T16245a.hs          |   4 +-
 testsuite/tests/polykinds/T16245a.stderr      |   6 +-
 testsuite/tests/polykinds/T17841.hs           |   6 +-
 testsuite/tests/polykinds/T17841.stderr       |   4 +-
 testsuite/tests/polykinds/T6137.hs            |   4 +-
 testsuite/tests/polykinds/T7053.hs            |   3 +-
 testsuite/tests/polykinds/T7053.stderr        |   6 +
 testsuite/tests/polykinds/T7053a.hs           |   5 +-
 testsuite/tests/polykinds/T7224.hs            |   6 +-
 testsuite/tests/polykinds/T7224.stderr        |   8 +-
 testsuite/tests/polykinds/T9200.hs            |  23 +-
 testsuite/tests/polykinds/all.T               |   2 +-
 .../tests/simplCore/should_compile/T14270a.hs |   4 +-
 .../tests/simplCore/should_compile/T16979b.hs |  19 +-
 testsuite/tests/th/ClosedFam2TH.hs            |  10 +-
 testsuite/tests/th/T12045TH1.hs               |   4 +-
 testsuite/tests/th/T12045TH1.stderr           |   9 +-
 testsuite/tests/th/T12045TH2.hs               |   9 +-
 testsuite/tests/th/T12045TH2.stderr           |   1 +
 testsuite/tests/th/T12646.hs                  |   4 +-
 testsuite/tests/th/T15243.hs                  |   4 +-
 testsuite/tests/th/T15243.stderr              |   9 +-
 .../tests/typecheck/should_compile/SplitWD.hs |   4 +-
 .../tests/typecheck/should_compile/T11524.hs  |   6 +-
 .../tests/typecheck/should_compile/T12919.hs  |   4 +-
 .../tests/typecheck/should_compile/T13333.hs  |   6 +-
 .../tests/typecheck/should_compile/T13822.hs  |   8 +-
 .../tests/typecheck/should_compile/T13879.hs  |   4 +-
 .../tests/typecheck/should_compile/T14366.hs  |   4 +-
 .../tests/typecheck/should_compile/T14451.hs  |   9 +-
 .../tests/typecheck/should_compile/T15079.hs  |  11 +-
 .../tests/typecheck/should_compile/T6018.hs   |   4 +-
 .../typecheck/should_compile/T6018.stderr     |   8 +-
 .../tests/typecheck/should_compile/T7503a.hs  |   4 +-
 .../tests/typecheck/should_compile/T9151.hs   |   5 +-
 .../typecheck/should_fail/LevPolyBounded.hs   |   5 +-
 .../should_fail/LevPolyBounded.stderr         |   8 +-
 .../tests/typecheck/should_fail/T12785b.hs    |   7 +-
 .../tests/typecheck/should_fail/T14904a.hs    |   4 +-
 .../tests/typecheck/should_fail/T15552a.hs    |   4 +-
 .../tests/typecheck/should_fail/T16255.hs     |   2 +-
 .../tests/typecheck/should_fail/T16255.stderr |   2 +-
 .../tests/typecheck/should_fail/T9201.hs      |   6 +-
 .../tests/typecheck/should_fail/T9201.stderr  |   6 +-
 106 files changed, 1131 insertions(+), 654 deletions(-)
 create mode 100644 testsuite/tests/polykinds/T7053.stderr

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