Wolfgang Jeltsch pushed to branch wip/jeltsch/system-io-uncovering at Glasgow Haskell Compiler / GHC

Commits:

11 changed files:

Changes:

  • libraries/base/src/Data/String.hs
    1
    -{-# LANGUAGE Safe #-}
    
    1
    +{-# LANGUAGE Trustworthy #-}
    
    2
    +
    
    3
    +{-# LANGUAGE GeneralizedNewtypeDeriving #-}
    
    4
    +{-# LANGUAGE PolyKinds #-}
    
    5
    +{-# LANGUAGE StandaloneDeriving #-}
    
    2 6
     
    
    3 7
     -- |
    
    4 8
     --
    
    ... ... @@ -23,4 +27,13 @@ module Data.String
    23 27
          unwords
    
    24 28
          ) where
    
    25 29
     
    
    26
    -import GHC.Internal.Data.String
    \ No newline at end of file
    30
    +import GHC.Internal.Data.String
    
    31
    +
    
    32
    +import GHC.Internal.Data.Functor.Const (Const (Const))
    
    33
    +import GHC.Internal.Data.Functor.Identity (Identity (Identity))
    
    34
    +
    
    35
    +-- | @since base-4.9.0.0
    
    36
    +deriving instance IsString a => IsString (Const a (b :: k))
    
    37
    +
    
    38
    +-- | @since base-4.9.0.0
    
    39
    +deriving instance IsString a => IsString (Identity a)

  • libraries/ghc-heap/GHC/Exts/Heap/Closures.hs
    1 1
     {-# LANGUAGE CPP #-}
    
    2
    -{-# LANGUAGE ForeignFunctionInterface #-}
    
    3
    -{-# LANGUAGE GHCForeignImportPrim #-}
    
    4
    -{-# LANGUAGE MagicHash #-}
    
    5
    -{-# LANGUAGE RecordWildCards #-}
    
    6
    -{-# LANGUAGE UnliftedFFITypes #-}
    
    7
    -{-# LANGUAGE DeriveGeneric #-}
    
    2
    +{-# LANGUAGE StandaloneDeriving #-}
    
    8 3
     {-# LANGUAGE DeriveTraversable #-}
    
    9 4
     -- Late cost centres introduce a thunk in the asBox function, which leads to
    
    10 5
     -- an additional wrapper being added to any value placed inside a box.
    
    ... ... @@ -42,3 +37,23 @@ module GHC.Exts.Heap.Closures (
    42 37
         ) where
    
    43 38
     
    
    44 39
     import GHC.Internal.Heap.Closures
    
    40
    +
    
    41
    +import GHC.Internal.Data.Functor
    
    42
    +import GHC.Internal.Data.Foldable
    
    43
    +import GHC.Internal.Data.Traversable
    
    44
    +
    
    45
    +deriving instance Functor GenClosure
    
    46
    +deriving instance Foldable GenClosure
    
    47
    +deriving instance Traversable GenClosure
    
    48
    +
    
    49
    +deriving instance Functor GenStgStackClosure
    
    50
    +deriving instance Foldable GenStgStackClosure
    
    51
    +deriving instance Traversable GenStgStackClosure
    
    52
    +
    
    53
    +deriving instance Functor GenStackField
    
    54
    +deriving instance Foldable GenStackField
    
    55
    +deriving instance Traversable GenStackField
    
    56
    +
    
    57
    +deriving instance Functor GenStackFrame
    
    58
    +deriving instance Foldable GenStackFrame
    
    59
    +deriving instance Traversable GenStackFrame

  • libraries/ghc-internal/src/GHC/Internal/Data/String.hs
    1 1
     {-# LANGUAGE FlexibleInstances #-}
    
    2
    -{-# LANGUAGE GeneralizedNewtypeDeriving #-}
    
    3 2
     {-# LANGUAGE NoImplicitPrelude #-}
    
    4
    -{-# LANGUAGE PolyKinds #-}
    
    5
    -{-# LANGUAGE StandaloneDeriving #-}
    
    6 3
     {-# LANGUAGE Trustworthy #-}
    
    7 4
     {-# LANGUAGE TypeFamilies #-}
    
    8 5
     {-# LANGUAGE TypeOperators #-}
    
    ... ... @@ -33,8 +30,6 @@ module GHC.Internal.Data.String (
    33 30
      ) where
    
    34 31
     
    
    35 32
     import GHC.Internal.Base
    
    36
    -import GHC.Internal.Data.Functor.Const (Const (Const))
    
    37
    -import GHC.Internal.Data.Functor.Identity (Identity (Identity))
    
    38 33
     import GHC.Internal.Data.List (lines, words, unlines, unwords)
    
    39 34
     
    
    40 35
     -- | `IsString` is used in combination with the @-XOverloadedStrings@
    
    ... ... @@ -105,9 +100,3 @@ ensure the good behavior of the above example remains in the future.
    105 100
     instance (a ~ Char) => IsString [a] where
    
    106 101
              -- See Note [IsString String]
    
    107 102
         fromString xs = xs
    108
    -
    
    109
    --- | @since base-4.9.0.0
    
    110
    -deriving instance IsString a => IsString (Const a (b :: k))
    
    111
    -
    
    112
    --- | @since base-4.9.0.0
    
    113
    -deriving instance IsString a => IsString (Identity a)

  • libraries/ghc-internal/src/GHC/Internal/Heap/Closures.hs
    ... ... @@ -5,7 +5,6 @@
    5 5
     {-# LANGUAGE RecordWildCards #-}
    
    6 6
     {-# LANGUAGE UnliftedFFITypes #-}
    
    7 7
     {-# LANGUAGE DeriveGeneric #-}
    
    8
    -{-# LANGUAGE DeriveTraversable #-}
    
    9 8
     -- Late cost centres introduce a thunk in the asBox function, which leads to
    
    10 9
     -- an additional wrapper being added to any value placed inside a box.
    
    11 10
     -- This can be removed once our boot compiler is no longer affected by #25212
    
    ... ... @@ -69,8 +68,7 @@ in the profiling way. (#15197)
    69 68
     import GHC.Internal.Heap.ProfInfo.Types
    
    70 69
     
    
    71 70
     import GHC.Internal.Data.Bits
    
    72
    -import GHC.Internal.Data.Foldable (Foldable, toList)
    
    73
    -import GHC.Internal.Data.Traversable (Traversable)
    
    71
    +import GHC.Internal.Data.Foldable (toList)
    
    74 72
     import GHC.Internal.Int
    
    75 73
     import GHC.Internal.Num
    
    76 74
     import GHC.Internal.Real
    
    ... ... @@ -383,7 +381,7 @@ data GenClosure b
    383 381
         -- or an Int#).
    
    384 382
       |  UnknownTypeWordSizedPrimitive
    
    385 383
             { wordVal :: !Word }
    
    386
    -  deriving (Show, Generic, Functor, Foldable, Traversable)
    
    384
    +  deriving (Show, Generic)
    
    387 385
     
    
    388 386
     -- | Get the info table for a heap closure, or Nothing for a prim value
    
    389 387
     --
    
    ... ... @@ -500,7 +498,7 @@ data GenStgStackClosure b = GenStgStackClosure
    500 498
           , ssc_stack_size      :: !Word32 -- ^ stack size in *words*
    
    501 499
           , ssc_stack           :: ![GenStackFrame b]
    
    502 500
           }
    
    503
    -  deriving (Foldable, Functor, Generic, Show, Traversable)
    
    501
    +  deriving (Generic, Show)
    
    504 502
     
    
    505 503
     type StackField = GenStackField Box
    
    506 504
     
    
    ... ... @@ -510,7 +508,7 @@ data GenStackField b
    510 508
         = StackWord !Word
    
    511 509
         -- | A pointer field
    
    512 510
         | StackBox  !b
    
    513
    -  deriving (Foldable, Functor, Generic, Show, Traversable)
    
    511
    +  deriving (Generic, Show)
    
    514 512
     
    
    515 513
     type StackFrame = GenStackFrame Box
    
    516 514
     
    
    ... ... @@ -579,7 +577,7 @@ data GenStackFrame b =
    579 577
           { info_tbl            :: !StgInfoTable
    
    580 578
           , annotation          :: !b
    
    581 579
           }
    
    582
    -  deriving (Foldable, Functor, Generic, Show, Traversable)
    
    580
    +  deriving (Generic, Show)
    
    583 581
     
    
    584 582
     data PrimType
    
    585 583
       = PInt
    

  • testsuite/tests/interface-stability/base-exports.stdout
    ... ... @@ -1673,7 +1673,7 @@ module Data.Semigroup where
    1673 1673
       stimesMonoid :: forall b a. (GHC.Internal.Real.Integral b, GHC.Internal.Base.Monoid a) => b -> a -> a
    
    1674 1674
     
    
    1675 1675
     module Data.String where
    
    1676
    -  -- Safety: Safe
    
    1676
    +  -- Safety: Trustworthy
    
    1677 1677
       type IsString :: * -> Constraint
    
    1678 1678
       class IsString a where
    
    1679 1679
         fromString :: String -> a
    
    ... ... @@ -11778,8 +11778,8 @@ instance GHC.Internal.Data.Foldable.Foldable Data.Semigroup.First -- Defined in
    11778 11778
     instance GHC.Internal.Data.Foldable.Foldable Data.Semigroup.Last -- Defined in ‘Data.Semigroup’
    
    11779 11779
     instance GHC.Internal.Data.Foldable.Foldable Data.Semigroup.Max -- Defined in ‘Data.Semigroup’
    
    11780 11780
     instance GHC.Internal.Data.Foldable.Foldable Data.Semigroup.Min -- Defined in ‘Data.Semigroup’
    
    11781
    -instance forall a k (b :: k). GHC.Internal.Data.String.IsString a => GHC.Internal.Data.String.IsString (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.String’
    
    11782
    -instance forall a. GHC.Internal.Data.String.IsString a => GHC.Internal.Data.String.IsString (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.String’
    
    11781
    +instance forall a k (b :: k). GHC.Internal.Data.String.IsString a => GHC.Internal.Data.String.IsString (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘Data.String’
    
    11782
    +instance forall a. GHC.Internal.Data.String.IsString a => GHC.Internal.Data.String.IsString (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘Data.String’
    
    11783 11783
     instance forall a. (a ~ GHC.Internal.Types.Char) => GHC.Internal.Data.String.IsString [a] -- Defined in ‘GHC.Internal.Data.String’
    
    11784 11784
     instance GHC.Internal.Data.Traversable.Traversable GHC.Internal.Functor.ZipList.ZipList -- Defined in ‘GHC.Internal.Functor.ZipList’
    
    11785 11785
     instance forall (f :: * -> *) (g :: * -> *). (GHC.Internal.Data.Traversable.Traversable f, GHC.Internal.Data.Traversable.Traversable g) => GHC.Internal.Data.Traversable.Traversable (f GHC.Internal.Generics.:*: g) -- Defined in ‘GHC.Internal.Data.Traversable’
    

  • testsuite/tests/interface-stability/base-exports.stdout-javascript-unknown-ghcjs
    ... ... @@ -1673,7 +1673,7 @@ module Data.Semigroup where
    1673 1673
       stimesMonoid :: forall b a. (GHC.Internal.Real.Integral b, GHC.Internal.Base.Monoid a) => b -> a -> a
    
    1674 1674
     
    
    1675 1675
     module Data.String where
    
    1676
    -  -- Safety: Safe
    
    1676
    +  -- Safety: Trustworthy
    
    1677 1677
       type IsString :: * -> Constraint
    
    1678 1678
       class IsString a where
    
    1679 1679
         fromString :: String -> a
    
    ... ... @@ -11805,8 +11805,8 @@ instance GHC.Internal.Data.Foldable.Foldable Data.Semigroup.First -- Defined in
    11805 11805
     instance GHC.Internal.Data.Foldable.Foldable Data.Semigroup.Last -- Defined in ‘Data.Semigroup’
    
    11806 11806
     instance GHC.Internal.Data.Foldable.Foldable Data.Semigroup.Max -- Defined in ‘Data.Semigroup’
    
    11807 11807
     instance GHC.Internal.Data.Foldable.Foldable Data.Semigroup.Min -- Defined in ‘Data.Semigroup’
    
    11808
    -instance forall a k (b :: k). GHC.Internal.Data.String.IsString a => GHC.Internal.Data.String.IsString (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.String’
    
    11809
    -instance forall a. GHC.Internal.Data.String.IsString a => GHC.Internal.Data.String.IsString (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.String’
    
    11808
    +instance forall a k (b :: k). GHC.Internal.Data.String.IsString a => GHC.Internal.Data.String.IsString (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘Data.String’
    
    11809
    +instance forall a. GHC.Internal.Data.String.IsString a => GHC.Internal.Data.String.IsString (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘Data.String’
    
    11810 11810
     instance forall a. (a ~ GHC.Internal.Types.Char) => GHC.Internal.Data.String.IsString [a] -- Defined in ‘GHC.Internal.Data.String’
    
    11811 11811
     instance GHC.Internal.Data.Traversable.Traversable GHC.Internal.Functor.ZipList.ZipList -- Defined in ‘GHC.Internal.Functor.ZipList’
    
    11812 11812
     instance forall (f :: * -> *) (g :: * -> *). (GHC.Internal.Data.Traversable.Traversable f, GHC.Internal.Data.Traversable.Traversable g) => GHC.Internal.Data.Traversable.Traversable (f GHC.Internal.Generics.:*: g) -- Defined in ‘GHC.Internal.Data.Traversable’
    

  • testsuite/tests/interface-stability/base-exports.stdout-mingw32
    ... ... @@ -1673,7 +1673,7 @@ module Data.Semigroup where
    1673 1673
       stimesMonoid :: forall b a. (GHC.Internal.Real.Integral b, GHC.Internal.Base.Monoid a) => b -> a -> a
    
    1674 1674
     
    
    1675 1675
     module Data.String where
    
    1676
    -  -- Safety: Safe
    
    1676
    +  -- Safety: Trustworthy
    
    1677 1677
       type IsString :: * -> Constraint
    
    1678 1678
       class IsString a where
    
    1679 1679
         fromString :: String -> a
    
    ... ... @@ -12036,8 +12036,8 @@ instance GHC.Internal.Data.Foldable.Foldable Data.Semigroup.First -- Defined in
    12036 12036
     instance GHC.Internal.Data.Foldable.Foldable Data.Semigroup.Last -- Defined in ‘Data.Semigroup’
    
    12037 12037
     instance GHC.Internal.Data.Foldable.Foldable Data.Semigroup.Max -- Defined in ‘Data.Semigroup’
    
    12038 12038
     instance GHC.Internal.Data.Foldable.Foldable Data.Semigroup.Min -- Defined in ‘Data.Semigroup’
    
    12039
    -instance forall a k (b :: k). GHC.Internal.Data.String.IsString a => GHC.Internal.Data.String.IsString (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.String’
    
    12040
    -instance forall a. GHC.Internal.Data.String.IsString a => GHC.Internal.Data.String.IsString (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.String’
    
    12039
    +instance forall a k (b :: k). GHC.Internal.Data.String.IsString a => GHC.Internal.Data.String.IsString (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘Data.String’
    
    12040
    +instance forall a. GHC.Internal.Data.String.IsString a => GHC.Internal.Data.String.IsString (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘Data.String’
    
    12041 12041
     instance forall a. (a ~ GHC.Internal.Types.Char) => GHC.Internal.Data.String.IsString [a] -- Defined in ‘GHC.Internal.Data.String’
    
    12042 12042
     instance GHC.Internal.Data.Traversable.Traversable GHC.Internal.Functor.ZipList.ZipList -- Defined in ‘GHC.Internal.Functor.ZipList’
    
    12043 12043
     instance forall (f :: * -> *) (g :: * -> *). (GHC.Internal.Data.Traversable.Traversable f, GHC.Internal.Data.Traversable.Traversable g) => GHC.Internal.Data.Traversable.Traversable (f GHC.Internal.Generics.:*: g) -- Defined in ‘GHC.Internal.Data.Traversable’
    

  • testsuite/tests/interface-stability/base-exports.stdout-ws-32
    ... ... @@ -1673,7 +1673,7 @@ module Data.Semigroup where
    1673 1673
       stimesMonoid :: forall b a. (GHC.Internal.Real.Integral b, GHC.Internal.Base.Monoid a) => b -> a -> a
    
    1674 1674
     
    
    1675 1675
     module Data.String where
    
    1676
    -  -- Safety: Safe
    
    1676
    +  -- Safety: Trustworthy
    
    1677 1677
       type IsString :: * -> Constraint
    
    1678 1678
       class IsString a where
    
    1679 1679
         fromString :: String -> a
    
    ... ... @@ -11778,8 +11778,8 @@ instance GHC.Internal.Data.Foldable.Foldable Data.Semigroup.First -- Defined in
    11778 11778
     instance GHC.Internal.Data.Foldable.Foldable Data.Semigroup.Last -- Defined in ‘Data.Semigroup’
    
    11779 11779
     instance GHC.Internal.Data.Foldable.Foldable Data.Semigroup.Max -- Defined in ‘Data.Semigroup’
    
    11780 11780
     instance GHC.Internal.Data.Foldable.Foldable Data.Semigroup.Min -- Defined in ‘Data.Semigroup’
    
    11781
    -instance forall a k (b :: k). GHC.Internal.Data.String.IsString a => GHC.Internal.Data.String.IsString (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.String’
    
    11782
    -instance forall a. GHC.Internal.Data.String.IsString a => GHC.Internal.Data.String.IsString (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.String’
    
    11781
    +instance forall a k (b :: k). GHC.Internal.Data.String.IsString a => GHC.Internal.Data.String.IsString (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘Data.String’
    
    11782
    +instance forall a. GHC.Internal.Data.String.IsString a => GHC.Internal.Data.String.IsString (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘Data.String’
    
    11783 11783
     instance forall a. (a ~ GHC.Internal.Types.Char) => GHC.Internal.Data.String.IsString [a] -- Defined in ‘GHC.Internal.Data.String’
    
    11784 11784
     instance GHC.Internal.Data.Traversable.Traversable GHC.Internal.Functor.ZipList.ZipList -- Defined in ‘GHC.Internal.Functor.ZipList’
    
    11785 11785
     instance forall (f :: * -> *) (g :: * -> *). (GHC.Internal.Data.Traversable.Traversable f, GHC.Internal.Data.Traversable.Traversable g) => GHC.Internal.Data.Traversable.Traversable (f GHC.Internal.Generics.:*: g) -- Defined in ‘GHC.Internal.Data.Traversable’
    

  • testsuite/tests/interface-stability/ghc-experimental-exports.stdout
    ... ... @@ -11188,8 +11188,6 @@ instance forall a. GHC.Internal.Classes.Ord (GHC.Internal.Ptr.FunPtr a) -- Defin
    11188 11188
     instance forall a. GHC.Internal.Classes.Ord (GHC.Internal.Ptr.Ptr a) -- Defined in ‘GHC.Internal.Ptr’
    
    11189 11189
     instance forall a. GHC.Internal.Classes.Ord a => GHC.Internal.Classes.Ord (GHC.Internal.Base.NonEmpty a) -- Defined in ‘GHC.Internal.Base’
    
    11190 11190
     instance GHC.Internal.Classes.Ord GHC.Internal.Base.Void -- Defined in ‘GHC.Internal.Base’
    
    11191
    -instance forall a k (b :: k). GHC.Internal.Data.String.IsString a => GHC.Internal.Data.String.IsString (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.String’
    
    11192
    -instance forall a. GHC.Internal.Data.String.IsString a => GHC.Internal.Data.String.IsString (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.String’
    
    11193 11191
     instance forall a. (a ~ GHC.Internal.Types.Char) => GHC.Internal.Data.String.IsString [a] -- Defined in ‘GHC.Internal.Data.String’
    
    11194 11192
     instance forall a. GHC.Internal.Enum.Bounded a => GHC.Internal.Enum.Bounded (GHC.Internal.Data.Ord.Down a) -- Defined in ‘GHC.Internal.Data.Ord’
    
    11195 11193
     instance forall a. (GHC.Internal.Enum.Enum a, GHC.Internal.Enum.Bounded a, GHC.Internal.Classes.Eq a) => GHC.Internal.Enum.Enum (GHC.Internal.Data.Ord.Down a) -- Defined in ‘GHC.Internal.Data.Ord’
    

  • testsuite/tests/interface-stability/ghc-experimental-exports.stdout-mingw32
    ... ... @@ -11191,8 +11191,6 @@ instance forall a. GHC.Internal.Classes.Ord (GHC.Internal.Ptr.FunPtr a) -- Defin
    11191 11191
     instance forall a. GHC.Internal.Classes.Ord (GHC.Internal.Ptr.Ptr a) -- Defined in ‘GHC.Internal.Ptr’
    
    11192 11192
     instance forall a. GHC.Internal.Classes.Ord a => GHC.Internal.Classes.Ord (GHC.Internal.Base.NonEmpty a) -- Defined in ‘GHC.Internal.Base’
    
    11193 11193
     instance GHC.Internal.Classes.Ord GHC.Internal.Base.Void -- Defined in ‘GHC.Internal.Base’
    
    11194
    -instance forall a k (b :: k). GHC.Internal.Data.String.IsString a => GHC.Internal.Data.String.IsString (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.String’
    
    11195
    -instance forall a. GHC.Internal.Data.String.IsString a => GHC.Internal.Data.String.IsString (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.String’
    
    11196 11194
     instance forall a. (a ~ GHC.Internal.Types.Char) => GHC.Internal.Data.String.IsString [a] -- Defined in ‘GHC.Internal.Data.String’
    
    11197 11195
     instance forall a. GHC.Internal.Enum.Bounded a => GHC.Internal.Enum.Bounded (GHC.Internal.Data.Ord.Down a) -- Defined in ‘GHC.Internal.Data.Ord’
    
    11198 11196
     instance forall a. (GHC.Internal.Enum.Enum a, GHC.Internal.Enum.Bounded a, GHC.Internal.Classes.Eq a) => GHC.Internal.Enum.Enum (GHC.Internal.Data.Ord.Down a) -- Defined in ‘GHC.Internal.Data.Ord’
    

  • testsuite/tests/typecheck/should_fail/T12921.stderr
    ... ... @@ -24,8 +24,6 @@ T12921.hs:4:16: error: [GHC-39999]
    24 24
           Potentially matching instance:
    
    25 25
             instance (a ~ Char) => GHC.Internal.Data.String.IsString [a]
    
    26 26
               -- Defined in ‘GHC.Internal.Data.String’
    
    27
    -        ...plus two instances involving out-of-scope types
    
    28
    -        (use -fprint-potential-instances to see them all)
    
    29 27
         • In the annotation:
    
    30 28
             {-# ANN module "HLint: ignore Reduce duplication" #-}
    
    31 29