diff options
author | Ben Gamari <ben@smart-cactus.org> | 2022-04-08 09:59:46 -0400 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2022-04-08 09:59:46 -0400 |
commit | 56254e6be108bf7d1993df269b3ae22a91903d45 (patch) | |
tree | c6971c5eee3c884944164e6e84b23913e66cae21 /testsuite/tests | |
parent | 23ef62b3e04ad834153269980dab4aac35a1fc7e (diff) | |
parent | af300a439fd360944cc9424b1676ef0b832922dc (diff) | |
download | haskell-56254e6be108bf7d1993df269b3ae22a91903d45.tar.gz |
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'testsuite/tests')
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, ['']) |