summaryrefslogtreecommitdiff
path: root/testsuite/tests
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2022-04-08 09:59:46 -0400
committerBen Gamari <ben@smart-cactus.org>2022-04-08 09:59:46 -0400
commit56254e6be108bf7d1993df269b3ae22a91903d45 (patch)
treec6971c5eee3c884944164e6e84b23913e66cae21 /testsuite/tests
parent23ef62b3e04ad834153269980dab4aac35a1fc7e (diff)
parentaf300a439fd360944cc9424b1676ef0b832922dc (diff)
downloadhaskell-56254e6be108bf7d1993df269b3ae22a91903d45.tar.gz
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'testsuite/tests')
-rw-r--r--testsuite/tests/deriving/should_fail/T21302.hs12
-rw-r--r--testsuite/tests/deriving/should_fail/T21302.stderr19
-rw-r--r--testsuite/tests/deriving/should_fail/all.T1
-rw-r--r--testsuite/tests/ghci/scripts/T12550.stdout2
-rw-r--r--testsuite/tests/ghci/scripts/T21294a.script5
-rw-r--r--testsuite/tests/ghci/scripts/T21294a.stdout6
-rwxr-xr-xtestsuite/tests/ghci/scripts/all.T1
-rw-r--r--testsuite/tests/ghci/scripts/ghci011.stdout6
-rw-r--r--testsuite/tests/hiefile/should_run/HieQueries.stdout9
-rw-r--r--testsuite/tests/parser/should_compile/DumpParsedAst.hs6
-rw-r--r--testsuite/tests/parser/should_compile/DumpParsedAst.stderr583
-rw-r--r--testsuite/tests/parser/should_fail/T17865.hs6
-rw-r--r--testsuite/tests/parser/should_fail/T17865.stderr18
-rw-r--r--testsuite/tests/roles/should_compile/Roles4.stderr2
-rw-r--r--testsuite/tests/roles/should_compile/T8958.stderr2
-rw-r--r--testsuite/tests/showIface/DocsInHiFileTH.stdout6
-rw-r--r--testsuite/tests/simplCore/should_compile/T15445.stderr2
-rw-r--r--testsuite/tests/simplCore/should_compile/T21144.hs4
-rw-r--r--testsuite/tests/simplCore/should_compile/all.T3
-rw-r--r--testsuite/tests/typecheck/should_compile/T21315.hs6
-rw-r--r--testsuite/tests/typecheck/should_compile/T21315.stderr4
-rw-r--r--testsuite/tests/typecheck/should_compile/all.T1
-rw-r--r--testsuite/tests/typecheck/should_fail/T21338.hs40
-rw-r--r--testsuite/tests/typecheck/should_fail/T21338.stderr33
-rw-r--r--testsuite/tests/typecheck/should_fail/all.T1
25 files changed, 743 insertions, 35 deletions
diff --git a/testsuite/tests/deriving/should_fail/T21302.hs b/testsuite/tests/deriving/should_fail/T21302.hs
new file mode 100644
index 0000000000..16e7cf320d
--- /dev/null
+++ b/testsuite/tests/deriving/should_fail/T21302.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE UndecidableInstances, TypeFamilies #-}
+
+module T21302 where
+
+data BoxAssocDouble = BoxAssocDouble (BoxAssoc Int)
+ deriving (Eq)
+
+type family Assoc a
+
+data BoxAssoc a = BoxAssoc (Assoc a)
+
+deriving instance c Eq a => Eq (BoxAssoc a)
diff --git a/testsuite/tests/deriving/should_fail/T21302.stderr b/testsuite/tests/deriving/should_fail/T21302.stderr
new file mode 100644
index 0000000000..46910cbf4f
--- /dev/null
+++ b/testsuite/tests/deriving/should_fail/T21302.stderr
@@ -0,0 +1,19 @@
+
+T21302.hs:6:13: error:
+ • Could not solve: (c0 Eq Int)
+ arising from the first field of ‘BoxAssocDouble’
+ (type ‘BoxAssoc Int’)
+ • When deriving the instance for (Eq BoxAssocDouble)
+
+T21302.hs:12:19: error:
+ • Could not deduce (c0 Eq a)
+ from the context: c Eq a
+ bound by a stand-alone deriving instance declaration:
+ forall (c :: (* -> Constraint) -> * -> Constraint) a.
+ c Eq a =>
+ Eq (BoxAssoc a)
+ at T21302.hs:12:19-43
+ • In the ambiguity check for a stand-alone deriving instance declaration
+ To defer the ambiguity check to use sites, enable AllowAmbiguousTypes
+ In the stand-alone deriving instance for
+ ‘c Eq a => Eq (BoxAssoc a)’
diff --git a/testsuite/tests/deriving/should_fail/all.T b/testsuite/tests/deriving/should_fail/all.T
index 61d74b72b4..2b2f2af562 100644
--- a/testsuite/tests/deriving/should_fail/all.T
+++ b/testsuite/tests/deriving/should_fail/all.T
@@ -82,3 +82,4 @@ test('deriving-via-fail4', normal, compile_fail, [''])
test('deriving-via-fail5', normal, compile_fail, [''])
test('T21087', normal, compile_fail, [''])
test('T21087b', [extra_files(['T21087b_aux.hs','T21087b_aux.hs-boot'])], multimod_compile_fail, ['T21087b', ''])
+test('T21302', normal, compile_fail, [''])
diff --git a/testsuite/tests/ghci/scripts/T12550.stdout b/testsuite/tests/ghci/scripts/T12550.stdout
index d753d4f666..0a30edf362 100644
--- a/testsuite/tests/ghci/scripts/T12550.stdout
+++ b/testsuite/tests/ghci/scripts/T12550.stdout
@@ -28,9 +28,9 @@ instance ∀ a b. Functor ((,,) a b) -- Defined in ‘GHC.Base’
instance ∀ a b c. Functor ((,,,) a b c) -- Defined in ‘GHC.Base’
instance ∀ r. Functor ((->) r) -- Defined in ‘GHC.Base’
instance Functor IO -- Defined in ‘GHC.Base’
+instance Functor [] -- Defined in ‘GHC.Base’
instance Functor Maybe -- Defined in ‘GHC.Base’
instance Functor Solo -- Defined in ‘GHC.Base’
-instance Functor [] -- Defined in ‘GHC.Base’
instance ∀ a. Functor (Either a) -- Defined in ‘Data.Either’
instance ∀ (f ∷ ★ → ★) (g ∷ ★ → ★).
(Functor f, Functor g) ⇒
diff --git a/testsuite/tests/ghci/scripts/T21294a.script b/testsuite/tests/ghci/scripts/T21294a.script
new file mode 100644
index 0000000000..e4a91a5d83
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T21294a.script
@@ -0,0 +1,5 @@
+type L0 = []
+:i L0
+
+type L1 a = [a]
+:i L1
diff --git a/testsuite/tests/ghci/scripts/T21294a.stdout b/testsuite/tests/ghci/scripts/T21294a.stdout
new file mode 100644
index 0000000000..58fb4e6c27
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T21294a.stdout
@@ -0,0 +1,6 @@
+type L0 :: * -> *
+type L0 = [] :: * -> *
+ -- Defined at <interactive>:1:1
+type L1 :: * -> *
+type L1 a = [a]
+ -- Defined at <interactive>:4:1
diff --git a/testsuite/tests/ghci/scripts/all.T b/testsuite/tests/ghci/scripts/all.T
index f2d03bd8cf..9e7ca144a6 100755
--- a/testsuite/tests/ghci/scripts/all.T
+++ b/testsuite/tests/ghci/scripts/all.T
@@ -367,3 +367,4 @@ test('T21088', normal, ghci_script, ['T21088.script'])
test('T21110', [extra_files(['T21110A.hs'])], ghci_script,
['T21110.script'])
test('T17830', [filter_stdout_lines(r'======.*')], ghci_script, ['T17830.script'])
+test('T21294a', normal, ghci_script, ['T21294a.script'])
diff --git a/testsuite/tests/ghci/scripts/ghci011.stdout b/testsuite/tests/ghci/scripts/ghci011.stdout
index d03977e3b5..edb6158456 100644
--- a/testsuite/tests/ghci/scripts/ghci011.stdout
+++ b/testsuite/tests/ghci/scripts/ghci011.stdout
@@ -1,5 +1,5 @@
-type [] :: * -> *
-data [] a = [] | a : [a]
+type List :: * -> *
+data List a = [] | a : [a]
-- Defined in ‘GHC.Types’
instance Monoid [a] -- Defined in ‘GHC.Base’
instance Semigroup [a] -- Defined in ‘GHC.Base’
@@ -35,9 +35,9 @@ instance (Semigroup a, Semigroup b) => Semigroup (a, b)
instance Foldable ((,) a) -- Defined in ‘Data.Foldable’
instance (Bounded a, Bounded b) => Bounded (a, b)
-- Defined in ‘GHC.Enum’
-instance (Read a, Read b) => Read (a, b) -- Defined in ‘GHC.Read’
instance (Eq a, Eq b) => Eq (a, b) -- Defined in ‘GHC.Classes’
instance (Ord a, Ord b) => Ord (a, b) -- Defined in ‘GHC.Classes’
+instance (Read a, Read b) => Read (a, b) -- Defined in ‘GHC.Read’
instance (Show a, Show b) => Show (a, b) -- Defined in ‘GHC.Show’
instance Monoid a => Applicative ((,) a) -- Defined in ‘GHC.Base’
instance Functor ((,) a) -- Defined in ‘GHC.Base’
diff --git a/testsuite/tests/hiefile/should_run/HieQueries.stdout b/testsuite/tests/hiefile/should_run/HieQueries.stdout
index 98f0466815..d352cc9c38 100644
--- a/testsuite/tests/hiefile/should_run/HieQueries.stdout
+++ b/testsuite/tests/hiefile/should_run/HieQueries.stdout
@@ -3,14 +3,15 @@ At point (31,9), we found:
==========================
│ $dC at HieQueries.hs:31:1-13, of type: C [a]
-│ is an evidence variable bound by a let, depending on: [$fC[], $dC]
+│ is an evidence variable bound by a let, depending on: [$fCList,
+│ $dC]
│ with scope: LocalScope HieQueries.hs:31:1-13
│ bound at: HieQueries.hs:31:1-13
│ Defined at <no location info>
|
+- ┌
-| │ $fC[] at HieQueries.hs:27:10-21, of type: forall a. C a => C [a]
+| │ $fCList at HieQueries.hs:27:10-21, of type: forall a. C a => C [a]
| │ is an evidence variable bound by an instance of class C
| │ with scope: ModuleScope
| │
@@ -30,7 +31,7 @@ At point (37,9), we found:
==========================
│ $dShow at HieQueries.hs:37:1-22, of type: Show [(Integer, x, A)]
-│ is an evidence variable bound by a let, depending on: [$fShow[],
+│ is an evidence variable bound by a let, depending on: [$fShowList,
│ $dShow]
│ with scope: LocalScope HieQueries.hs:37:1-22
│ bound at: HieQueries.hs:37:1-22
@@ -38,7 +39,7 @@ At point (37,9), we found:
|
+- ┌
-| │ $fShow[] at HieQueries.hs:37:1-22, of type: forall a. Show a => Show [a]
+| │ $fShowList at HieQueries.hs:37:1-22, of type: forall a. Show a => Show [a]
| │ is a usage of an external evidence variable
| │ Defined in `GHC.Show'
| └
diff --git a/testsuite/tests/parser/should_compile/DumpParsedAst.hs b/testsuite/tests/parser/should_compile/DumpParsedAst.hs
index 15b37b683c..b6c52be15b 100644
--- a/testsuite/tests/parser/should_compile/DumpParsedAst.hs
+++ b/testsuite/tests/parser/should_compile/DumpParsedAst.hs
@@ -1,5 +1,5 @@
{-# LANGUAGE Haskell2010 #-}
-{-# LANGUAGE DataKinds, PolyKinds, TypeOperators, TypeFamilies
+{-# LANGUAGE DataKinds, GADTs, PolyKinds, RankNTypes, TypeOperators, TypeFamilies
, TypeApplications, TypeInType #-}
module DumpParsedAst where
@@ -17,4 +17,8 @@ data T f (a :: k) = MkT (f a)
type family F1 (a :: k) (f :: k -> Type) :: Type where
F1 @Peano a f = T @Peano f a
+data family Nat :: k -> k -> Type
+newtype instance Nat (a :: k -> Type) :: (k -> Type) -> Type where
+ Nat :: (forall xx. f xx -> g xx) -> Nat f g
+
main = putStrLn "hello"
diff --git a/testsuite/tests/parser/should_compile/DumpParsedAst.stderr b/testsuite/tests/parser/should_compile/DumpParsedAst.stderr
index 38e55e1021..0f41f9a4d0 100644
--- a/testsuite/tests/parser/should_compile/DumpParsedAst.stderr
+++ b/testsuite/tests/parser/should_compile/DumpParsedAst.stderr
@@ -21,11 +21,11 @@
[]
[(L
(Anchor
- { DumpParsedAst.hs:21:1 }
+ { DumpParsedAst.hs:25:1 }
(UnchangedAnchor))
(EpaComment
(EpaEofComment)
- { DumpParsedAst.hs:21:1 }))]))
+ { DumpParsedAst.hs:25:1 }))]))
(VirtualBraces
(1))
(Just
@@ -900,37 +900,584 @@
,(L
(SrcSpanAnn (EpAnn
(Anchor
- { DumpParsedAst.hs:20:1-23 }
+ { DumpParsedAst.hs:20:1-33 }
(UnchangedAnchor))
(AnnListItem
[])
(EpaComments
- [])) { DumpParsedAst.hs:20:1-23 })
+ [])) { DumpParsedAst.hs:20:1-33 })
+ (TyClD
+ (NoExtField)
+ (FamDecl
+ (NoExtField)
+ (FamilyDecl
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:20: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 }))]
+ (EpaComments
+ []))
+ (DataFamily)
+ (TopLevel)
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:20:13-15 })
+ (Unqual
+ {OccName: Nat}))
+ (HsQTvs
+ (NoExtField)
+ [])
+ (Prefix)
+ (L
+ (SrcSpanAnn
+ (EpAnnNotUsed)
+ { DumpParsedAst.hs:20:17-33 })
+ (KindSig
+ (NoExtField)
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:20:20-33 })
+ (HsFunTy
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:20:20 }
+ (UnchangedAnchor))
+ (NoEpAnns)
+ (EpaComments
+ []))
+ (HsUnrestrictedArrow
+ (L
+ (TokenLoc
+ (EpaSpan { DumpParsedAst.hs:20:22-23 }))
+ (HsNormalTok)))
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:20:20 })
+ (HsTyVar
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:20:20 }
+ (UnchangedAnchor))
+ []
+ (EpaComments
+ []))
+ (NotPromoted)
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:20:20 })
+ (Unqual
+ {OccName: k}))))
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:20:25-33 })
+ (HsFunTy
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:20:25 }
+ (UnchangedAnchor))
+ (NoEpAnns)
+ (EpaComments
+ []))
+ (HsUnrestrictedArrow
+ (L
+ (TokenLoc
+ (EpaSpan { DumpParsedAst.hs:20:27-28 }))
+ (HsNormalTok)))
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:20:25 })
+ (HsTyVar
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:20:25 }
+ (UnchangedAnchor))
+ []
+ (EpaComments
+ []))
+ (NotPromoted)
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:20:25 })
+ (Unqual
+ {OccName: k}))))
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:20:30-33 })
+ (HsTyVar
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:20:30-33 }
+ (UnchangedAnchor))
+ []
+ (EpaComments
+ []))
+ (NotPromoted)
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:20:30-33 })
+ (Unqual
+ {OccName: Type}))))))))))
+ (Nothing)))))
+ ,(L
+ (SrcSpanAnn (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:(21,1)-(22,45) }
+ (UnchangedAnchor))
+ (AnnListItem
+ [])
+ (EpaComments
+ [])) { DumpParsedAst.hs:(21,1)-(22,45) })
+ (InstD
+ (NoExtField)
+ (DataFamInstD
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:(21,1)-(22,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 }))]
+ (EpaComments
+ []))
+ (DataFamInstDecl
+ (FamEqn
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:(21,1)-(22,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 }))]
+ (EpaComments
+ []))
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:18-20 })
+ (Unqual
+ {OccName: Nat}))
+ (HsOuterImplicit
+ (NoExtField))
+ [(HsValArg
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:22-37 })
+ (HsParTy
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:21:22 }
+ (UnchangedAnchor))
+ (AnnParen
+ (AnnParens)
+ (EpaSpan { DumpParsedAst.hs:21:22 })
+ (EpaSpan { DumpParsedAst.hs:21:37 }))
+ (EpaComments
+ []))
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:23-36 })
+ (HsKindSig
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:21:23 }
+ (UnchangedAnchor))
+ [(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:21:25-26 }))]
+ (EpaComments
+ []))
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:23 })
+ (HsTyVar
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:21:23 }
+ (UnchangedAnchor))
+ []
+ (EpaComments
+ []))
+ (NotPromoted)
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:23 })
+ (Unqual
+ {OccName: a}))))
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:28-36 })
+ (HsFunTy
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:21:28 }
+ (UnchangedAnchor))
+ (NoEpAnns)
+ (EpaComments
+ []))
+ (HsUnrestrictedArrow
+ (L
+ (TokenLoc
+ (EpaSpan { DumpParsedAst.hs:21:30-31 }))
+ (HsNormalTok)))
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:28 })
+ (HsTyVar
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:21:28 }
+ (UnchangedAnchor))
+ []
+ (EpaComments
+ []))
+ (NotPromoted)
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:28 })
+ (Unqual
+ {OccName: k}))))
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:33-36 })
+ (HsTyVar
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:21:33-36 }
+ (UnchangedAnchor))
+ []
+ (EpaComments
+ []))
+ (NotPromoted)
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:33-36 })
+ (Unqual
+ {OccName: Type})))))))))))]
+ (Prefix)
+ (HsDataDefn
+ (NoExtField)
+ (NewType)
+ (Nothing)
+ (Nothing)
+ (Just
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:42-60 })
+ (HsFunTy
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:21:42-52 }
+ (UnchangedAnchor))
+ (NoEpAnns)
+ (EpaComments
+ []))
+ (HsUnrestrictedArrow
+ (L
+ (TokenLoc
+ (EpaSpan { DumpParsedAst.hs:21:54-55 }))
+ (HsNormalTok)))
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:42-52 })
+ (HsParTy
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:21:42 }
+ (UnchangedAnchor))
+ (AnnParen
+ (AnnParens)
+ (EpaSpan { DumpParsedAst.hs:21:42 })
+ (EpaSpan { DumpParsedAst.hs:21:52 }))
+ (EpaComments
+ []))
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:43-51 })
+ (HsFunTy
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:21:43 }
+ (UnchangedAnchor))
+ (NoEpAnns)
+ (EpaComments
+ []))
+ (HsUnrestrictedArrow
+ (L
+ (TokenLoc
+ (EpaSpan { DumpParsedAst.hs:21:45-46 }))
+ (HsNormalTok)))
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:43 })
+ (HsTyVar
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:21:43 }
+ (UnchangedAnchor))
+ []
+ (EpaComments
+ []))
+ (NotPromoted)
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:43 })
+ (Unqual
+ {OccName: k}))))
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:48-51 })
+ (HsTyVar
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:21:48-51 }
+ (UnchangedAnchor))
+ []
+ (EpaComments
+ []))
+ (NotPromoted)
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:48-51 })
+ (Unqual
+ {OccName: Type}))))))))
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:57-60 })
+ (HsTyVar
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:21:57-60 }
+ (UnchangedAnchor))
+ []
+ (EpaComments
+ []))
+ (NotPromoted)
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:21:57-60 })
+ (Unqual
+ {OccName: Type})))))))
+ [(L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:3-45 })
+ (ConDeclGADT
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:22:3-45 }
+ (UnchangedAnchor))
+ [(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:22:7-8 }))]
+ (EpaComments
+ []))
+ [(L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:3-5 })
+ (Unqual
+ {OccName: Nat}))]
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:10-45 })
+ (HsOuterImplicit
+ (NoExtField)))
+ (Nothing)
+ (PrefixConGADT
+ [(HsScaled
+ (HsUnrestrictedArrow
+ (L
+ (TokenLoc
+ (EpaSpan { DumpParsedAst.hs:22:36-37 }))
+ (HsNormalTok)))
+ (L
+ (SrcSpanAnn (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:22:10-34 }
+ (UnchangedAnchor))
+ (AnnListItem
+ [])
+ (EpaComments
+ [])) { DumpParsedAst.hs:22:10-34 })
+ (HsParTy
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:22:10 }
+ (UnchangedAnchor))
+ (AnnParen
+ (AnnParens)
+ (EpaSpan { DumpParsedAst.hs:22:10 })
+ (EpaSpan { DumpParsedAst.hs:22:34 }))
+ (EpaComments
+ []))
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:11-33 })
+ (HsForAllTy
+ (NoExtField)
+ (HsForAllInvis
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:22:11-16 }
+ (UnchangedAnchor))
+ ((,)
+ (AddEpAnn AnnForall (EpaSpan { DumpParsedAst.hs:22:11-16 }))
+ (AddEpAnn AnnDot (EpaSpan { DumpParsedAst.hs:22:20 })))
+ (EpaComments
+ []))
+ [(L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:18-19 })
+ (UserTyVar
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:22:18-19 }
+ (UnchangedAnchor))
+ []
+ (EpaComments
+ []))
+ (SpecifiedSpec)
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:18-19 })
+ (Unqual
+ {OccName: xx}))))])
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:22-33 })
+ (HsFunTy
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:22:22-25 }
+ (UnchangedAnchor))
+ (NoEpAnns)
+ (EpaComments
+ []))
+ (HsUnrestrictedArrow
+ (L
+ (TokenLoc
+ (EpaSpan { DumpParsedAst.hs:22:27-28 }))
+ (HsNormalTok)))
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:22-25 })
+ (HsAppTy
+ (NoExtField)
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:22 })
+ (HsTyVar
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:22:22 }
+ (UnchangedAnchor))
+ []
+ (EpaComments
+ []))
+ (NotPromoted)
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:22 })
+ (Unqual
+ {OccName: f}))))
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:24-25 })
+ (HsTyVar
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:22:24-25 }
+ (UnchangedAnchor))
+ []
+ (EpaComments
+ []))
+ (NotPromoted)
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:24-25 })
+ (Unqual
+ {OccName: xx}))))))
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:30-33 })
+ (HsAppTy
+ (NoExtField)
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:30 })
+ (HsTyVar
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:22:30 }
+ (UnchangedAnchor))
+ []
+ (EpaComments
+ []))
+ (NotPromoted)
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:30 })
+ (Unqual
+ {OccName: g}))))
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:32-33 })
+ (HsTyVar
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:22:32-33 }
+ (UnchangedAnchor))
+ []
+ (EpaComments
+ []))
+ (NotPromoted)
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:32-33 })
+ (Unqual
+ {OccName: xx})))))))))))))])
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:39-45 })
+ (HsAppTy
+ (NoExtField)
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:39-43 })
+ (HsAppTy
+ (NoExtField)
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:39-41 })
+ (HsTyVar
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:22:39-41 }
+ (UnchangedAnchor))
+ []
+ (EpaComments
+ []))
+ (NotPromoted)
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:39-41 })
+ (Unqual
+ {OccName: Nat}))))
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:43 })
+ (HsTyVar
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:22:43 }
+ (UnchangedAnchor))
+ []
+ (EpaComments
+ []))
+ (NotPromoted)
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:43 })
+ (Unqual
+ {OccName: f}))))))
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:45 })
+ (HsTyVar
+ (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:22:45 }
+ (UnchangedAnchor))
+ []
+ (EpaComments
+ []))
+ (NotPromoted)
+ (L
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:22:45 })
+ (Unqual
+ {OccName: g}))))))
+ (Nothing)))]
+ []))))))
+ ,(L
+ (SrcSpanAnn (EpAnn
+ (Anchor
+ { DumpParsedAst.hs:24:1-23 }
+ (UnchangedAnchor))
+ (AnnListItem
+ [])
+ (EpaComments
+ [])) { DumpParsedAst.hs:24:1-23 })
(ValD
(NoExtField)
(FunBind
(NoExtField)
(L
- (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:20:1-4 })
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:24:1-4 })
(Unqual
{OccName: main}))
(MG
(NoExtField)
(L
- (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:20:1-23 })
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:24:1-23 })
[(L
- (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:20:1-23 })
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:24:1-23 })
(Match
(EpAnn
(Anchor
- { DumpParsedAst.hs:20:1-23 }
+ { DumpParsedAst.hs:24:1-23 }
(UnchangedAnchor))
[]
(EpaComments
[]))
(FunRhs
(L
- (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:20:1-4 })
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:24:1-4 })
(Unqual
{OccName: main}))
(Prefix)
@@ -942,42 +1489,42 @@
[(L
(SrcSpanAnn
(EpAnnNotUsed)
- { DumpParsedAst.hs:20:6-23 })
+ { DumpParsedAst.hs:24:6-23 })
(GRHS
(EpAnn
(Anchor
- { DumpParsedAst.hs:20:6-23 }
+ { DumpParsedAst.hs:24:6-23 }
(UnchangedAnchor))
(GrhsAnn
(Nothing)
- (AddEpAnn AnnEqual (EpaSpan { DumpParsedAst.hs:20:6 })))
+ (AddEpAnn AnnEqual (EpaSpan { DumpParsedAst.hs:24:6 })))
(EpaComments
[]))
[]
(L
- (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:20:8-23 })
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:24:8-23 })
(HsApp
(EpAnn
(Anchor
- { DumpParsedAst.hs:20:8-23 }
+ { DumpParsedAst.hs:24:8-23 }
(UnchangedAnchor))
(NoEpAnns)
(EpaComments
[]))
(L
- (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:20:8-15 })
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:24:8-15 })
(HsVar
(NoExtField)
(L
- (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:20:8-15 })
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:24:8-15 })
(Unqual
{OccName: putStrLn}))))
(L
- (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:20:17-23 })
+ (SrcSpanAnn (EpAnnNotUsed) { DumpParsedAst.hs:24:17-23 })
(HsLit
(EpAnn
(Anchor
- { DumpParsedAst.hs:20:17-23 }
+ { DumpParsedAst.hs:24:17-23 }
(UnchangedAnchor))
(NoEpAnns)
(EpaComments
diff --git a/testsuite/tests/parser/should_fail/T17865.hs b/testsuite/tests/parser/should_fail/T17865.hs
index b278ec09ae..31efa0596d 100644
--- a/testsuite/tests/parser/should_fail/T17865.hs
+++ b/testsuite/tests/parser/should_fail/T17865.hs
@@ -1,3 +1,9 @@
module T17865 where
data T = 'MkT
+
+data T' = ' MkT'
+
+data I a b = a ':> b
+
+data I' a b = a ' :>$ b
diff --git a/testsuite/tests/parser/should_fail/T17865.stderr b/testsuite/tests/parser/should_fail/T17865.stderr
index 786196c3a8..560144fbe5 100644
--- a/testsuite/tests/parser/should_fail/T17865.stderr
+++ b/testsuite/tests/parser/should_fail/T17865.stderr
@@ -1,2 +1,16 @@
-T17865.hs:3:10:
- Cannot parse data constructor in a data/newtype declaration: 'MkT
+
+T17865.hs:3:11: error:
+ Illegal promotion quote mark in the declaration of
+ data/newtype constructor MkT
+
+T17865.hs:5:13: error:
+ Illegal promotion quote mark in the declaration of
+ data/newtype constructor MkT'
+
+T17865.hs:7:16: error:
+ Illegal promotion quote mark in the declaration of
+ data/newtype constructor (:>)
+
+T17865.hs:9:17: error:
+ Illegal promotion quote mark in the declaration of
+ data/newtype constructor (:>$)
diff --git a/testsuite/tests/roles/should_compile/Roles4.stderr b/testsuite/tests/roles/should_compile/Roles4.stderr
index 4d8bc6666a..d4efc75d76 100644
--- a/testsuite/tests/roles/should_compile/Roles4.stderr
+++ b/testsuite/tests/roles/should_compile/Roles4.stderr
@@ -35,7 +35,7 @@ $krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep
$krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep
$krep [InlPrag=[~]] = GHC.Types.KindRepFun GHC.Types.krep$* $krep
$krep [InlPrag=[~]]
- = GHC.Types.KindRepTyConApp GHC.Types.$tc[] ((:) $krep [])
+ = GHC.Types.KindRepTyConApp GHC.Types.$tcList ((:) $krep [])
$krep [InlPrag=[~]]
= GHC.Types.KindRepTyConApp GHC.Types.$tcConstraint []
$krep [InlPrag=[~]]
diff --git a/testsuite/tests/roles/should_compile/T8958.stderr b/testsuite/tests/roles/should_compile/T8958.stderr
index 6a6e3dc627..b06d0df7f8 100644
--- a/testsuite/tests/roles/should_compile/T8958.stderr
+++ b/testsuite/tests/roles/should_compile/T8958.stderr
@@ -59,7 +59,7 @@ $krep [InlPrag=[~]]
$krep ((:) @GHC.Types.KindRep $krep [] @GHC.Types.KindRep))
$krep [InlPrag=[~]]
= GHC.Types.KindRepTyConApp
- GHC.Types.$tc[]
+ GHC.Types.$tcList
((:) @GHC.Types.KindRep $krep [] @GHC.Types.KindRep)
$krep [InlPrag=[~]]
= GHC.Types.KindRepTyConApp
diff --git a/testsuite/tests/showIface/DocsInHiFileTH.stdout b/testsuite/tests/showIface/DocsInHiFileTH.stdout
index 0e9c1af6d5..1eac242a68 100644
--- a/testsuite/tests/showIface/DocsInHiFileTH.stdout
+++ b/testsuite/tests/showIface/DocsInHiFileTH.stdout
@@ -106,9 +106,9 @@ docs:
$fCTYPEInt -> [text:
-- |A new instance
identifiers:],
- $fCTYPE[] -> [text:
- -- |Another new instance
- identifiers:],
+ $fCTYPEList -> [text:
+ -- |Another new instance
+ identifiers:],
$fDka -> [text:
-- |Another new instance
identifiers:],
diff --git a/testsuite/tests/simplCore/should_compile/T15445.stderr b/testsuite/tests/simplCore/should_compile/T15445.stderr
index 5e8a086e6d..b67e385a98 100644
--- a/testsuite/tests/simplCore/should_compile/T15445.stderr
+++ b/testsuite/tests/simplCore/should_compile/T15445.stderr
@@ -2,7 +2,7 @@ Rule fired: Class op + (BUILTIN)
Rule fired: Class op fromInteger (BUILTIN)
Rule fired: Int# -> Integer -> Int# (GHC.Num.Integer)
Rule fired: SPEC plusTwoRec (T15445a)
-Rule fired: SPEC $fShow[] (GHC.Show)
+Rule fired: SPEC $fShowList (GHC.Show)
Rule fired: Class op >> (BUILTIN)
Rule fired: Class op show (BUILTIN)
Rule fired: SPEC plusTwoRec (T15445a)
diff --git a/testsuite/tests/simplCore/should_compile/T21144.hs b/testsuite/tests/simplCore/should_compile/T21144.hs
new file mode 100644
index 0000000000..b4f8600fca
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T21144.hs
@@ -0,0 +1,4 @@
+module T21144 where
+
+peps :: a ~ Double => a
+peps = x where x = fromIntegral (floatDigits x) ** 2
diff --git a/testsuite/tests/simplCore/should_compile/all.T b/testsuite/tests/simplCore/should_compile/all.T
index 13a8602bb7..5a23e84c75 100644
--- a/testsuite/tests/simplCore/should_compile/all.T
+++ b/testsuite/tests/simplCore/should_compile/all.T
@@ -389,3 +389,6 @@ test('OpaqueNoSpecConstr', normal, compile, ['-O -ddump-simpl -dsuppress-uniques
test('OpaqueNoSpecialise', normal, compile, ['-O -ddump-simpl -dsuppress-uniques'])
test('OpaqueNoStrictArgWW', normal, compile, ['-O -fworker-wrapper-cbv -ddump-simpl -dsuppress-uniques'])
test('OpaqueNoWW', normal, compile, ['-O -ddump-simpl -dsuppress-uniques'])
+
+test('T21144', normal, compile, ['-O'])
+
diff --git a/testsuite/tests/typecheck/should_compile/T21315.hs b/testsuite/tests/typecheck/should_compile/T21315.hs
new file mode 100644
index 0000000000..34a8c8296f
--- /dev/null
+++ b/testsuite/tests/typecheck/should_compile/T21315.hs
@@ -0,0 +1,6 @@
+module T21315 where
+
+data T a = MkT a deriving (Eq, Ord)
+
+class Ord a => C a
+instance (Eq a, Ord a) => C (T a)
diff --git a/testsuite/tests/typecheck/should_compile/T21315.stderr b/testsuite/tests/typecheck/should_compile/T21315.stderr
new file mode 100644
index 0000000000..ad718569ec
--- /dev/null
+++ b/testsuite/tests/typecheck/should_compile/T21315.stderr
@@ -0,0 +1,4 @@
+
+T21315.hs:6:10: warning: [-Wredundant-constraints]
+ • Redundant constraint: Eq a
+ • In the instance declaration for ‘C (T a)’
diff --git a/testsuite/tests/typecheck/should_compile/all.T b/testsuite/tests/typecheck/should_compile/all.T
index a503d60b7c..f110e273a8 100644
--- a/testsuite/tests/typecheck/should_compile/all.T
+++ b/testsuite/tests/typecheck/should_compile/all.T
@@ -823,3 +823,4 @@ test('T18529', normal, compile, ['-ddump-tc -fprint-explicit-foralls -dsuppress-
test('T21023', normal, compile, ['-ddump-types'])
test('T21205', normal, compile, ['-O0'])
test('T21323', normal, compile, [''])
+test('T21315', normal, compile, ['-Wredundant-constraints'])
diff --git a/testsuite/tests/typecheck/should_fail/T21338.hs b/testsuite/tests/typecheck/should_fail/T21338.hs
new file mode 100644
index 0000000000..5c89ab278d
--- /dev/null
+++ b/testsuite/tests/typecheck/should_fail/T21338.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE TypeApplications #-}
+{-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE ConstraintKinds #-}
+{-# LANGUAGE StandaloneKindSignatures #-}
+
+module T21338 where
+
+import Data.Kind ( Type, Constraint )
+import Data.Proxy ( Proxy(..) )
+
+newtype K a b = K a
+
+type NP :: (Type -> Type) -> [Type] -> Type
+data NP f xs where
+
+data FieldInfo a
+
+type All :: [Type] -> Constraint
+type family All xs where {}
+
+data ConstructorInfo :: [Type] -> Type where
+ Record :: All xs => NP (K String) xs -> ConstructorInfo xs
+
+hmap :: (forall a. f a -> g a) -> h f xs -> h g xs
+hmap _ _ = undefined
+
+foo :: forall a flds. ConstructorInfo flds
+foo = undefined
+
+fieldNames :: forall (a :: Type) flds. NP (K String) flds
+fieldNames = case foo @a {- @flds -} of
+ Record np -> hmap id np
+ _ -> hmap undefined @flds
+ -- The last line caused a "No skolem info" panic on GHC 9.2 and below.
diff --git a/testsuite/tests/typecheck/should_fail/T21338.stderr b/testsuite/tests/typecheck/should_fail/T21338.stderr
new file mode 100644
index 0000000000..754763ed23
--- /dev/null
+++ b/testsuite/tests/typecheck/should_fail/T21338.stderr
@@ -0,0 +1,33 @@
+
+T21338.hs:38:24:
+ Couldn't match type ‘flds0’ with ‘flds’
+ Expected: NP (K String) flds
+ Actual: NP (K String) flds0
+ ‘flds0’ is untouchable
+ inside the constraints: All flds0
+ bound by a pattern with constructor:
+ Record :: forall (xs :: [*]).
+ All xs =>
+ NP (K String) xs -> ConstructorInfo xs,
+ in a case alternative
+ at T21338.hs:38:3-11
+ ‘flds’ is a rigid type variable bound by
+ the type signature for:
+ fieldNames :: forall a (flds :: [*]). NP (K String) flds
+ at T21338.hs:36:1-57
+ In the second argument of ‘hmap’, namely ‘np’
+ In the expression: hmap id np
+ In a case alternative: Record np -> hmap id np
+ Relevant bindings include
+ np :: NP (K String) flds0 (bound at T21338.hs:38:10)
+ fieldNames :: NP (K String) flds (bound at T21338.hs:37:1)
+
+T21338.hs:39:8:
+ Cannot apply expression of type ‘h0 f0 xs0 -> h0 g0 xs0’
+ to a visible type argument ‘flds’
+ In the expression: hmap undefined @flds
+ In a case alternative: _ -> hmap undefined @flds
+ In the expression:
+ case foo @a of
+ Record np -> hmap id np
+ _ -> hmap undefined @flds
diff --git a/testsuite/tests/typecheck/should_fail/all.T b/testsuite/tests/typecheck/should_fail/all.T
index af529398f3..c856ca7e95 100644
--- a/testsuite/tests/typecheck/should_fail/all.T
+++ b/testsuite/tests/typecheck/should_fail/all.T
@@ -653,3 +653,4 @@ test('T20064', normal, compile_fail, [''])
test('T21130', normal, compile_fail, [''])
test('T20768_fail', normal, compile_fail, [''])
test('T21327', normal, compile_fail, [''])
+test('T21338', normal, compile_fail, [''])