Marge Bot pushed to branch master at Glasgow Haskell Compiler / GHC

Commits:

5 changed files:

Changes:

  • compiler/GHC/Builtin/Names.hs
    ... ... @@ -245,7 +245,7 @@ basicKnownKeyNames
    245 245
             typeRepIdName,
    
    246 246
             mkTrTypeName,
    
    247 247
             mkTrConName,
    
    248
    -        mkTrAppName,
    
    248
    +        mkTrAppCheckedName,
    
    249 249
             mkTrFunName,
    
    250 250
             typeSymbolTypeRepName, typeNatTypeRepName, typeCharTypeRepName,
    
    251 251
             trGhcPrimModuleName,
    
    ... ... @@ -1356,7 +1356,7 @@ typeableClassName
    1356 1356
       , someTypeRepDataConName
    
    1357 1357
       , mkTrTypeName
    
    1358 1358
       , mkTrConName
    
    1359
    -  , mkTrAppName
    
    1359
    +  , mkTrAppCheckedName
    
    1360 1360
       , mkTrFunName
    
    1361 1361
       , typeRepIdName
    
    1362 1362
       , typeNatTypeRepName
    
    ... ... @@ -1371,7 +1371,7 @@ someTypeRepDataConName = dcQual gHC_INTERNAL_TYPEABLE_INTERNAL (fsLit "SomeTypeR
    1371 1371
     typeRepIdName         = varQual gHC_INTERNAL_TYPEABLE_INTERNAL (fsLit "typeRep#")       typeRepIdKey
    
    1372 1372
     mkTrTypeName          = varQual gHC_INTERNAL_TYPEABLE_INTERNAL (fsLit "mkTrType")       mkTrTypeKey
    
    1373 1373
     mkTrConName           = varQual gHC_INTERNAL_TYPEABLE_INTERNAL (fsLit "mkTrCon")        mkTrConKey
    
    1374
    -mkTrAppName           = varQual gHC_INTERNAL_TYPEABLE_INTERNAL (fsLit "mkTrApp")        mkTrAppKey
    
    1374
    +mkTrAppCheckedName    = varQual gHC_INTERNAL_TYPEABLE_INTERNAL (fsLit "mkTrAppChecked") mkTrAppCheckedKey
    
    1375 1375
     mkTrFunName           = varQual gHC_INTERNAL_TYPEABLE_INTERNAL (fsLit "mkTrFun")        mkTrFunKey
    
    1376 1376
     typeNatTypeRepName    = varQual gHC_INTERNAL_TYPEABLE_INTERNAL (fsLit "typeNatTypeRep") typeNatTypeRepKey
    
    1377 1377
     typeSymbolTypeRepName = varQual gHC_INTERNAL_TYPEABLE_INTERNAL (fsLit "typeSymbolTypeRep") typeSymbolTypeRepKey
    
    ... ... @@ -2499,7 +2499,7 @@ proxyHashKey = mkPreludeMiscIdUnique 502
    2499 2499
     mkTyConKey
    
    2500 2500
       , mkTrTypeKey
    
    2501 2501
       , mkTrConKey
    
    2502
    -  , mkTrAppKey
    
    2502
    +  , mkTrAppCheckedKey
    
    2503 2503
       , mkTrFunKey
    
    2504 2504
       , typeNatTypeRepKey
    
    2505 2505
       , typeSymbolTypeRepKey
    
    ... ... @@ -2509,7 +2509,7 @@ mkTyConKey
    2509 2509
     mkTyConKey            = mkPreludeMiscIdUnique 503
    
    2510 2510
     mkTrTypeKey           = mkPreludeMiscIdUnique 504
    
    2511 2511
     mkTrConKey            = mkPreludeMiscIdUnique 505
    
    2512
    -mkTrAppKey            = mkPreludeMiscIdUnique 506
    
    2512
    +mkTrAppCheckedKey     = mkPreludeMiscIdUnique 506
    
    2513 2513
     typeNatTypeRepKey     = mkPreludeMiscIdUnique 507
    
    2514 2514
     typeSymbolTypeRepKey  = mkPreludeMiscIdUnique 508
    
    2515 2515
     typeCharTypeRepKey    = mkPreludeMiscIdUnique 509
    

  • compiler/GHC/HsToCore/Binds.hs
    ... ... @@ -1850,14 +1850,14 @@ ds_ev_typeable ty (EvTypeableTyApp ev1 ev2)
    1850 1850
       | Just (t1,t2) <- splitAppTy_maybe ty
    
    1851 1851
       = do { e1  <- getRep ev1 t1
    
    1852 1852
            ; e2  <- getRep ev2 t2
    
    1853
    -       ; mkTrApp <- dsLookupGlobalId mkTrAppName
    
    1854
    -                    -- mkTrApp :: forall k1 k2 (a :: k1 -> k2) (b :: k1).
    
    1855
    -                    --            TypeRep a -> TypeRep b -> TypeRep (a b)
    
    1853
    +       ; mkTrAppChecked <- dsLookupGlobalId mkTrAppCheckedName
    
    1854
    +                    -- mkTrAppChecked :: forall k1 k2 (a :: k1 -> k2) (b :: k1).
    
    1855
    +                    --                   TypeRep a -> TypeRep b -> TypeRep (a b)
    
    1856 1856
            ; let (_, k1, k2) = splitFunTy (typeKind t1)  -- drop the multiplicity,
    
    1857 1857
                                                          -- since it's a kind
    
    1858
    -       ; let expr =  mkApps (mkTyApps (Var mkTrApp) [ k1, k2, t1, t2 ])
    
    1858
    +       ; let expr =  mkApps (mkTyApps (Var mkTrAppChecked) [ k1, k2, t1, t2 ])
    
    1859 1859
                                 [ e1, e2 ]
    
    1860
    -       -- ; pprRuntimeTrace "Trace mkTrApp" (ppr expr) expr
    
    1860
    +       -- ; pprRuntimeTrace "Trace mkTrAppChecked" (ppr expr) expr
    
    1861 1861
            ; return expr
    
    1862 1862
            }
    
    1863 1863
     
    

  • testsuite/tests/typecheck/should_run/T25998.hs
    1
    +{-# LANGUAGE Haskell2010 #-}
    
    2
    +{-# LANGUAGE KindSignatures #-}
    
    3
    +{-# LANGUAGE ScopedTypeVariables #-}
    
    4
    +{-# LANGUAGE TypeApplications #-}
    
    5
    +
    
    6
    +module Main where
    
    7
    +
    
    8
    +import Data.Kind
    
    9
    +import Type.Reflection
    
    10
    +
    
    11
    +test :: forall (a :: Type) (b :: Type). TypeRep a -> TypeRep b -> String
    
    12
    +test a b = case eqTypeRep a b of
    
    13
    +             Just _ -> "Equal!\n"
    
    14
    +             Nothing -> "Not equal:\n" <> show a <> "\n" <> show b <> "\n"
    
    15
    +
    
    16
    +combine :: forall (t :: Type -> Type -> Type). Typeable t => TypeRep (t Bool Int)
    
    17
    +combine = typeRep
    
    18
    +
    
    19
    +main :: IO ()
    
    20
    +main = do
    
    21
    +  putStrLn $ test (typeRep @(Bool -> Int)) (combine @(->))

  • testsuite/tests/typecheck/should_run/T25998.stdout
    1
    +Equal!
    
    2
    +

  • testsuite/tests/typecheck/should_run/all.T
    ... ... @@ -173,6 +173,7 @@ test('T23761', normal, compile_and_run, [''])
    173 173
     test('T25529', normal, compile_and_run, [''])
    
    174 174
     test('T23761b', normal, compile_and_run, [''])
    
    175 175
     test('T17594e', normal, compile_and_run, [''])
    
    176
    +test('T25998', normal, compile_and_run, [''])
    
    176 177
     
    
    177 178
     # Tests for expanding do before typechecking (Impredicative + RebindableSyntax)
    
    178 179
     test('T18324', normal, compile_and_run, [''])