Simon Peyton Jones pushed to branch wip/spj-reinstallable-base2 at Glasgow Haskell Compiler / GHC

Commits:

10 changed files:

Changes:

  • compiler/GHC/Builtin/KnownKeys.hs
    ... ... @@ -112,6 +112,7 @@ import GHC.Prelude
    112 112
     
    
    113 113
     import GHC.Builtin.Modules
    
    114 114
     import GHC.Builtin.Uniques
    
    115
    +import GHC.Builtin.TH( thKnownKeyTable )
    
    115 116
     
    
    116 117
     import GHC.Unit.Types
    
    117 118
     
    
    ... ... @@ -169,24 +170,25 @@ wired in ones are defined in GHC.Builtin.Types etc.
    169 170
     
    
    170 171
     knownKeyTable :: [(OccName, KnownKey)]
    
    171 172
     knownKeyTable
    
    172
    -  = [ (mkTcOcc "Read",         readClassKey)
    
    173
    +  = thKnownKeyTable ++
    
    174
    +    [ (mkTcOcc "IO", ioTyConKey)
    
    175
    +
    
    176
    +     -- Classes
    
    177
    +    , (mkTcOcc "Eq",           eqClassKey)
    
    178
    +    , (mkTcOcc "Ord",          ordClassKey)
    
    179
    +    , (mkTcOcc "Enum",         enumClassKey)
    
    180
    +    , (mkTcOcc "Bounded",      boundedClassKey)
    
    181
    +    , (mkTcOcc "Read",         readClassKey)
    
    173 182
         , (mkTcOcc "Show",         showClassKey)
    
    174 183
         , (mkTcOcc "Foldable",     foldableClassKey)
    
    175 184
         , (mkTcOcc "Traversable",  traversableClassKey)
    
    176
    -    , (mkTcOcc "Bounded",      boundedClassKey)
    
    177 185
         , (mkTcOcc "Data",         dataClassKey)
    
    178 186
         , (mkTcOcc "Ix",           ixClassKey)
    
    179 187
         , (mkTcOcc "Alternative",  alternativeClassKey)
    
    180 188
         , (mkTcOcc "Typeable",     typeableClassKey)
    
    189
    +    , (mkTcOcc "Functor",     functorClassKey)
    
    181 190
     
    
    182
    -    -- Class Eq and Ord
    
    183
    -    , (mkTcOcc "Eq",           eqClassKey)
    
    184
    -    , (mkTcOcc "Ord",          ordClassKey)
    
    185
    -
    
    186
    -    -- Enum
    
    187
    -    , (mkTcOcc "Enum",            enumClassKey)
    
    188
    -
    
    189
    -    -- Numeric operations
    
    191
    +    -- Numeric classes
    
    190 192
         , (mkTcOcc "Num",               numClassKey)
    
    191 193
         , (mkTcOcc "Integral",          integralClassKey)
    
    192 194
         , (mkTcOcc "Real",              realClassKey)
    
    ... ... @@ -201,9 +203,6 @@ knownKeyTable
    201 203
         , (mkVarOcc "toRational",       toRationalClassOpKey)
    
    202 204
         , (mkVarOcc "realToFrac",       realToFracIdKey)
    
    203 205
     
    
    204
    -    -- Class Functor
    
    205
    -    , (mkTcOcc "Functor",     functorClassKey)
    
    206
    -
    
    207 206
         -- Class Monad, MonadFix, MonadZip
    
    208 207
         , (mkTcOcc "Monad",        monadClassKey)
    
    209 208
         , (thenMClassOpOcc,        thenMClassOpKey)
    
    ... ... @@ -220,15 +219,12 @@ knownKeyTable
    220 219
         , (mkTcOcc "Monoid",       monoidClassKey)
    
    221 220
         , (sappendClassOpOcc,      sappendClassOpKey)
    
    222 221
         , (mappendClassOpOcc,      mappendClassOpKey)
    
    223
    -    , (mkVarOcc "mempty",      memptyClassOpKey)
    
    224 222
     
    
    225 223
         -- Class IsString
    
    226 224
         , (mkTcOcc "IsString",    isStringClassKey)
    
    227
    -    , (mkVarOcc "fromString", fromStringClassOpKey)
    
    228 225
     
    
    229 226
         -- DataToTag
    
    230 227
         , (mkTcOcc "DataToTag",   dataToTagClassKey)
    
    231
    -    , (mkVarOcc "dataToTag#", dataToTagClassOpKey)
    
    232 228
     
    
    233 229
         -- Lists
    
    234 230
         , (mkVarOcc "build",  buildIdKey)
    
    ... ... @@ -1427,10 +1423,6 @@ failMClassOpKey = mkPreludeMiscIdUnique 159
    1427 1423
     fromLabelClassOpKey :: KnownKey
    
    1428 1424
     fromLabelClassOpKey = mkPreludeMiscIdUnique 160
    
    1429 1425
     
    
    1430
    --- DataToTag
    
    1431
    -dataToTagClassOpKey :: KnownKey
    
    1432
    -dataToTagClassOpKey = mkPreludeMiscIdUnique 161
    
    1433
    -
    
    1434 1426
     -- Arrow notation
    
    1435 1427
     arrAIdKey, composeAIdKey, firstAIdKey, appAIdKey, choiceAIdKey,
    
    1436 1428
         loopAIdKey :: KnownKey
    

  • compiler/GHC/Builtin/KnownOccs.hs
    ... ... @@ -543,8 +543,8 @@ fmap_RDR, replace_RDR, pure_RDR, ap_RDR, liftA2_RDR, foldable_foldr_RDR,
    543 543
     fmap_RDR           = knownOccRdrName fmapClassOpOcc
    
    544 544
     pure_RDR           = knownKeyRdrName pureAClassOpKey
    
    545 545
     ap_RDR             = knownOccRdrName apAClassOpOcc
    
    546
    -mempty_RDR         = knownKeyRdrName memptyClassOpKey
    
    547 546
     mappend_RDR        = knownKeyRdrName mappendClassOpKey
    
    547
    +mempty_RDR         = knownVarOccRdrName "mempty"
    
    548 548
     replace_RDR        = knownVarOccRdrName "<$"
    
    549 549
     liftA2_RDR         = knownVarOccRdrName "liftA2"
    
    550 550
     foldable_foldr_RDR = knownVarOccRdrName "foldr"
    
    ... ... @@ -572,7 +572,7 @@ null_Expr = nlHsVar null_RDR
    572 572
     minusInt_RDR, tagToEnum_RDR, dataToTag_RDR :: RdrName
    
    573 573
     minusInt_RDR  = primOpRdrName IntSubOp
    
    574 574
     tagToEnum_RDR = primOpRdrName TagToEnumOp
    
    575
    -dataToTag_RDR = knownKeyRdrName dataToTagClassOpKey
    
    575
    +dataToTag_RDR = knownVarOccRdrName "dataToTag#"
    
    576 576
     
    
    577 577
     -- Generics (constructors and functions)
    
    578 578
     u1DataCon_RDR, par1DataCon_RDR, rec1DataCon_RDR,
    

  • compiler/GHC/Builtin/TH.hs
    ... ... @@ -9,7 +9,7 @@ module GHC.Builtin.TH where
    9 9
     import GHC.Prelude ()
    
    10 10
     
    
    11 11
     import GHC.Unit.Types
    
    12
    -import GHC.Types.Name( Name, KnownOcc, mk_known_key_name )
    
    12
    +import GHC.Types.Name( Name, KnownOcc, KnownKey, mk_known_key_name )
    
    13 13
     import GHC.Types.Name.Occurrence
    
    14 14
     import GHC.Types.Unique ( Unique )
    
    15 15
     import GHC.Builtin.Uniques
    
    ... ... @@ -17,6 +17,11 @@ import GHC.Data.FastString
    17 17
     
    
    18 18
     import Language.Haskell.Syntax.Module.Name
    
    19 19
     
    
    20
    +thKnownKeyTable :: [(OccName, KnownKey)]
    
    21
    +thKnownKeyTable
    
    22
    +  = [ (liftClassOcc, liftClassKey)
    
    23
    +    ]
    
    24
    +
    
    20 25
     thKnownOccs :: [KnownOcc]
    
    21 26
     thKnownOccs
    
    22 27
       = [ qTyConOcc, nameTyConOcc, fieldExpTyConOcc, patTyConOcc
    
    ... ... @@ -31,7 +36,7 @@ thKnownOccs
    31 36
         , litPOcc, varPOcc, tupPOcc, unboxedTupPOcc, unboxedSumPOcc, conPOcc
    
    32 37
         , infixPOcc, tildePOcc, bangPOcc, asPOcc, wildPOcc, recPOcc, listPOcc
    
    33 38
         , sigPOcc, viewPOcc, typePOcc, invisPOcc, orPOcc
    
    34
    -    , matchOcc, clauseOcc
    
    39
    +    , matchOcc, fieldPatOcc, clauseOcc
    
    35 40
         , varEOcc, conEOcc, litEOcc, appEOcc, appTypeEOcc, infixEOcc, infixAppOcc
    
    36 41
         , sectionLOcc, sectionROcc, lamEOcc, lamCaseEOcc, lamCasesEOcc, tupEOcc
    
    37 42
         , unboxedTupEOcc, unboxedSumEOcc, condEOcc, multiIfEOcc, letEOcc
    
    ... ... @@ -54,6 +59,9 @@ thKnownOccs
    54 59
         , tySynEqnTyConOcc, roleTyConOcc, derivClauseTyConOcc, kindTyConOcc
    
    55 60
         , tyVarBndrUnitTyConOcc, tyVarBndrSpecTyConOcc, tyVarBndrVisTyConOcc
    
    56 61
         , derivStrategyTyConOcc
    
    62
    +    , guardedBOcc, normalBOcc
    
    63
    +    , normalGEOcc, patGEOcc
    
    64
    +    , bindSOcc, letSOcc, noBindSOcc, parSOcc, recSOcc
    
    57 65
         ]
    
    58 66
     
    
    59 67
     templateHaskellNames :: [Name]
    
    ... ... @@ -61,20 +69,13 @@ templateHaskellNames :: [Name]
    61 69
     -- Should stay in sync with the import list of GHC.HsToCore.Quote
    
    62 70
     
    
    63 71
     templateHaskellNames = [
    
    64
    -    sequenceQName, newNameName,
    
    72
    +    newNameName,
    
    65 73
         mkNameName, mkNameG_vName, mkNameG_dName, mkNameG_tcName, mkNameG_fldName,
    
    66 74
         mkNameLName,
    
    67 75
         mkNameSName, mkNameQName,
    
    68 76
         mkModNameName,
    
    69 77
         unTypeName, unTypeCodeName,
    
    70
    -    -- FieldPat
    
    71
    -    fieldPatName,
    
    72
    -    -- Body
    
    73
    -    guardedBName, normalBName,
    
    74
    -    -- Guard
    
    75
    -    normalGEName, patGEName,
    
    76
    -    -- Stmt
    
    77
    -    bindSName, letSName, noBindSName, parSName, recSName,
    
    78
    +
    
    78 79
         -- Cxt
    
    79 80
         cxtName,
    
    80 81
     
    
    ... ... @@ -150,9 +151,6 @@ templateHaskellNames = [
    150 151
         -- DerivClause
    
    151 152
         derivClauseName,
    
    152 153
     
    
    153
    -    -- The type classes
    
    154
    -    liftClassName, quoteClassName,
    
    155
    -
    
    156 154
         -- Quasiquoting
    
    157 155
         quoteDecName, quoteTypeName, quoteExpName, quotePatName]
    
    158 156
     
    
    ... ... @@ -185,11 +183,9 @@ qqFld :: FastString -> Unique -> Name
    185 183
     qqFld = mk_known_key_name (fieldName (fsLit "QuasiQuoter")) qqLib
    
    186 184
     
    
    187 185
     -------------------- TH.Syntax -----------------------
    
    188
    -liftClassName :: Name
    
    189
    -liftClassName = mk_known_key_name clsName liftLib (fsLit "Lift") liftClassKey
    
    190
    -
    
    191
    -quoteClassName :: Name
    
    192
    -quoteClassName = thMonadCls (fsLit "Quote") quoteClassKey
    
    186
    +liftClassOcc, quoteClassOcc :: KnownOcc
    
    187
    +liftClassOcc  = mkTcOcc "Lift"
    
    188
    +quoteClassOcc = mkTcOcc "Quote"
    
    193 189
     
    
    194 190
     qTyConOcc, nameTyConOcc, fieldExpTyConOcc, patTyConOcc,
    
    195 191
         fieldPatTyConOcc, expTyConOcc, decTyConOcc, typeTyConOcc,
    
    ... ... @@ -215,11 +211,13 @@ overlapTyConOcc = mkTcOcc "Overlap"
    215 211
     modNameTyConOcc       = mkTcOcc "ModName"
    
    216 212
     quasiQuoterTyConOcc   = mkTcOcc "QuasiQuoter"
    
    217 213
     
    
    218
    -sequenceQName, newNameName,
    
    214
    +sequenceQOcc :: KnownOcc
    
    215
    +sequenceQOcc = mkVarOcc "sequenceQ"
    
    216
    +
    
    217
    +newNameName,
    
    219 218
         mkNameName, mkNameG_vName, mkNameG_fldName, mkNameG_dName, mkNameG_tcName,
    
    220 219
         mkNameLName, mkNameSName, unTypeName, unTypeCodeName,
    
    221 220
         mkModNameName, mkNameQName :: Name
    
    222
    -sequenceQName  = thMonadFun (fsLit "sequenceQ") sequenceQIdKey
    
    223 221
     newNameName    = thMonadFun (fsLit "newName")   newNameIdKey
    
    224 222
     mkNameName     = thFun (fsLit "mkName")     mkNameIdKey
    
    225 223
     mkNameG_vName  = thFun (fsLit "mkNameG_v")  mkNameG_vIdKey
    
    ... ... @@ -277,16 +275,10 @@ typePOcc = mkVarOcc "typeP"
    277 275
     invisPOcc      = mkVarOcc "invisP"
    
    278 276
     
    
    279 277
     -- type FieldPat = ...
    
    280
    -fieldPatName :: Name
    
    281
    -fieldPatName = libFun (fsLit "fieldPat") fieldPatIdKey
    
    282
    -
    
    283
    --- data Match = ...
    
    284
    -matchOcc :: KnownOcc
    
    285
    -matchOcc = mkVarOcc "match"
    
    286
    -
    
    287
    --- data Clause = ...
    
    288
    -clauseOcc :: KnownOcc
    
    289
    -clauseOcc = mkVarOcc "clause"
    
    278
    +fieldPatOcc, matchOcc, clauseOcc ::KnownOcc
    
    279
    +fieldPatOcc = mkVarOcc "fieldPat"
    
    280
    +matchOcc    = mkVarOcc "match"
    
    281
    +clauseOcc   = mkVarOcc "clause"
    
    290 282
     
    
    291 283
     -- data Exp = ...
    
    292 284
     varEOcc, conEOcc, litEOcc, appEOcc, appTypeEOcc, infixEOcc, infixAppOcc,
    
    ... ... @@ -345,22 +337,22 @@ fieldExpOcc :: KnownOcc
    345 337
     fieldExpOcc = mkVarOcc "fieldExp"
    
    346 338
     
    
    347 339
     -- data Body = ...
    
    348
    -guardedBName, normalBName :: Name
    
    349
    -guardedBName = libFun (fsLit "guardedB") guardedBIdKey
    
    350
    -normalBName  = libFun (fsLit "normalB")  normalBIdKey
    
    340
    +guardedBOcc, normalBOcc :: KnownOcc
    
    341
    +guardedBOcc = mkVarOcc "guardedB"
    
    342
    +normalBOcc  = mkVarOcc "normalB"
    
    351 343
     
    
    352 344
     -- data Guard = ...
    
    353
    -normalGEName, patGEName :: Name
    
    354
    -normalGEName = libFun (fsLit "normalGE") normalGEIdKey
    
    355
    -patGEName    = libFun (fsLit "patGE")    patGEIdKey
    
    345
    +normalGEOcc, patGEOcc :: KnownOcc
    
    346
    +normalGEOcc = mkVarOcc "normalGE"
    
    347
    +patGEOcc    = mkVarOcc "patGE"
    
    356 348
     
    
    357 349
     -- data Stmt = ...
    
    358
    -bindSName, letSName, noBindSName, parSName, recSName :: Name
    
    359
    -bindSName   = libFun (fsLit "bindS")   bindSIdKey
    
    360
    -letSName    = libFun (fsLit "letS")    letSIdKey
    
    361
    -noBindSName = libFun (fsLit "noBindS") noBindSIdKey
    
    362
    -parSName    = libFun (fsLit "parS")    parSIdKey
    
    363
    -recSName    = libFun (fsLit "recS")    recSIdKey
    
    350
    +bindSOcc, letSOcc, noBindSOcc, parSOcc, recSOcc :: KnownOcc
    
    351
    +bindSOcc   = mkVarOcc "bindS"
    
    352
    +letSOcc    = mkVarOcc "letS"
    
    353
    +noBindSOcc = mkVarOcc "noBindS"
    
    354
    +parSOcc    = mkVarOcc "parS"
    
    355
    +recSOcc    = mkVarOcc "recS"
    
    364 356
     
    
    365 357
     -- data Dec = ...
    
    366 358
     funDOcc, valDOcc, dataDOcc, newtypeDOcc, typeDataDOcc, tySynDOcc, classDOcc,
    
    ... ... @@ -911,28 +903,11 @@ forallEIdKey = mkPreludeMiscIdUnique 802
    911 903
     forallVisEIdKey        = mkPreludeMiscIdUnique 803
    
    912 904
     constrainedEIdKey      = mkPreludeMiscIdUnique 804
    
    913 905
     
    
    914
    --- type FieldExp = ...
    
    915
    -fieldExpIdKey :: Unique
    
    916
    -fieldExpIdKey       = mkPreludeMiscIdUnique 307
    
    917
    -
    
    918
    --- data Body = ...
    
    919
    -guardedBIdKey, normalBIdKey :: Unique
    
    920
    -guardedBIdKey     = mkPreludeMiscIdUnique 308
    
    921
    -normalBIdKey      = mkPreludeMiscIdUnique 309
    
    922
    -
    
    923 906
     -- data Guard = ...
    
    924 907
     normalGEIdKey, patGEIdKey :: Unique
    
    925 908
     normalGEIdKey     = mkPreludeMiscIdUnique 310
    
    926 909
     patGEIdKey        = mkPreludeMiscIdUnique 311
    
    927 910
     
    
    928
    --- data Stmt = ...
    
    929
    -bindSIdKey, letSIdKey, noBindSIdKey, parSIdKey, recSIdKey :: Unique
    
    930
    -bindSIdKey       = mkPreludeMiscIdUnique 312
    
    931
    -letSIdKey        = mkPreludeMiscIdUnique 313
    
    932
    -noBindSIdKey     = mkPreludeMiscIdUnique 314
    
    933
    -parSIdKey        = mkPreludeMiscIdUnique 315
    
    934
    -recSIdKey        = mkPreludeMiscIdUnique 316
    
    935
    -
    
    936 911
     -- data Dec = ...
    
    937 912
     funDIdKey, valDIdKey, dataDIdKey, newtypeDIdKey, tySynDIdKey, classDIdKey,
    
    938 913
         instanceWithOverlapDIdKey, instanceDIdKey, sigDIdKey, forImpDIdKey,
    

  • compiler/GHC/HsToCore/Pmc/Solver/Types.hs
    ... ... @@ -795,7 +795,6 @@ coreExprAsPmLit e = case collectArgs e of
    795 795
           | otherwise
    
    796 796
           = Nothing
    
    797 797
     
    
    798
    -
    
    799 798
         -- See Note [Detecting overloaded literals with -XRebindableSyntax]
    
    800 799
         is_rebound_name :: Id -> KnownOcc -> Bool
    
    801 800
         is_rebound_name x ko = getOccFS (idName x) == occNameFS ko
    

  • compiler/GHC/HsToCore/Quote.hs
    ... ... @@ -114,7 +114,7 @@ mkMetaWrappers q@(QuoteWrapper quote_var_raw m_var) = do
    114 114
           let quote_var = Var quote_var_raw
    
    115 115
           -- Get the superclass selector to select the Monad dictionary, going
    
    116 116
           -- to be used to construct the monadWrapper.
    
    117
    -      quote_tc <- dsLookupTyCon quoteClassName
    
    117
    +      quote_tc <- dsLookupKnownOccTyCon quoteClassOcc
    
    118 118
           monad_tc <- dsLookupKnownKeyTyCon monadClassKey
    
    119 119
           let cls = expectJust $ tyConClass_maybe quote_tc
    
    120 120
               monad_cls = expectJust $ tyConClass_maybe monad_tc
    
    ... ... @@ -2221,7 +2221,7 @@ repP (ConPat NoExtField dc details)
    2221 2221
        rep_fld :: LHsRecField GhcRn (LPat GhcRn) -> MetaM (Core (M (TH.Name, TH.Pat)))
    
    2222 2222
        rep_fld (L _ fld) = do { MkC v <- lookupOcc (hsRecFieldSel fld)
    
    2223 2223
                               ; MkC p <- repLP (hfbRHS fld)
    
    2224
    -                          ; rep2 fieldPatName [v,p] }
    
    2224
    +                          ; krep2 fieldPatOcc [v,p] }
    
    2225 2225
     repP (NPat _ (L _ l) Nothing _) = do { a <- repOverloadedLiteral l
    
    2226 2226
                                          ; repPlit a }
    
    2227 2227
     repP (ViewPat _ e p) = do { e' <- repLE e; p' <- repLP p; repPview e' p' }
    
    ... ... @@ -2424,12 +2424,12 @@ type family NotM a where
    2424 2424
       NotM (M _) = TypeError ('Text ("rep2_nw must not produce something of overloaded type"))
    
    2425 2425
       NotM _other = (() :: Constraint)
    
    2426 2426
     
    
    2427
    -rep2M :: Name -> [CoreExpr] -> MetaM (Core (M a))
    
    2427
    +-- rep2M :: Name -> [CoreExpr] -> MetaM (Core (M a))
    
    2428 2428
     rep2 :: Name -> [CoreExpr] -> MetaM (Core (M a))
    
    2429 2429
     rep2_nw :: NotM a => Name -> [CoreExpr] -> MetaM (Core a)
    
    2430 2430
     rep2_nwDsM :: NotM a => Name -> [CoreExpr] -> DsM (Core a)
    
    2431 2431
     rep2 = rep2X lift (asks quoteWrapper)
    
    2432
    -rep2M = rep2X lift (asks monadWrapper)
    
    2432
    +-- rep2M = rep2X lift (asks monadWrapper)
    
    2433 2433
     rep2_nw n xs = lift (rep2_nwDsM n xs)
    
    2434 2434
     rep2_nwDsM = rep2X id (return id)
    
    2435 2435
     
    
    ... ... @@ -2444,12 +2444,12 @@ rep2X lift_dsm get_wrap n xs = do
    2444 2444
       ; return (MkC $ (foldl' App (wrap (Var rep_id)) xs)) }
    
    2445 2445
     
    
    2446 2446
     
    
    2447
    --- krep2M      ::           KnownOcc -> [CoreExpr] -> MetaM (Core (M a))
    
    2447
    +krep2M      ::           KnownOcc -> [CoreExpr] -> MetaM (Core (M a))
    
    2448 2448
     krep2       ::           KnownOcc -> [CoreExpr] -> MetaM (Core (M a))
    
    2449 2449
     krep2_nw    :: NotM a => KnownOcc -> [CoreExpr] -> MetaM (Core a)
    
    2450 2450
     krep2_nwDsM :: NotM a => KnownOcc -> [CoreExpr] -> DsM (Core a)
    
    2451 2451
     krep2  = krep2X lift (asks quoteWrapper)
    
    2452
    --- krep2M = krep2X lift (asks monadWrapper)
    
    2452
    +krep2M = krep2X lift (asks monadWrapper)
    
    2453 2453
     krep2_nw n xs = lift (krep2_nwDsM n xs)
    
    2454 2454
     krep2_nwDsM   = krep2X id (return id)
    
    2455 2455
     
    
    ... ... @@ -2650,10 +2650,10 @@ repImplicitParamVar (MkC x) = krep2 implicitParamVarEOcc [x]
    2650 2650
     
    
    2651 2651
     ------------ Right hand sides (guarded expressions) ----
    
    2652 2652
     repGuarded :: Core [M (TH.Guard, TH.Exp)] -> MetaM (Core (M TH.Body))
    
    2653
    -repGuarded (MkC pairs) = rep2 guardedBName [pairs]
    
    2653
    +repGuarded (MkC pairs) = krep2 guardedBOcc [pairs]
    
    2654 2654
     
    
    2655 2655
     repNormal :: Core (M TH.Exp) -> MetaM (Core (M TH.Body))
    
    2656
    -repNormal (MkC e) = rep2 normalBName [e]
    
    2656
    +repNormal (MkC e) = krep2 normalBOcc [e]
    
    2657 2657
     
    
    2658 2658
     ------------ Guards ----
    
    2659 2659
     repLNormalGE :: LHsExpr GhcRn -> LHsExpr GhcRn
    
    ... ... @@ -2663,26 +2663,26 @@ repLNormalGE g e = do g' <- repLE g
    2663 2663
                           repNormalGE g' e'
    
    2664 2664
     
    
    2665 2665
     repNormalGE :: Core (M TH.Exp) -> Core (M TH.Exp) -> MetaM (Core (M (TH.Guard, TH.Exp)))
    
    2666
    -repNormalGE (MkC g) (MkC e) = rep2 normalGEName [g, e]
    
    2666
    +repNormalGE (MkC g) (MkC e) = krep2 normalGEOcc [g, e]
    
    2667 2667
     
    
    2668 2668
     repPatGE :: Core [(M TH.Stmt)] -> Core (M TH.Exp) -> MetaM (Core (M (TH.Guard, TH.Exp)))
    
    2669
    -repPatGE (MkC ss) (MkC e) = rep2 patGEName [ss, e]
    
    2669
    +repPatGE (MkC ss) (MkC e) = krep2 patGEOcc [ss, e]
    
    2670 2670
     
    
    2671 2671
     ------------- Stmts -------------------
    
    2672 2672
     repBindSt :: Core (M TH.Pat) -> Core (M TH.Exp) -> MetaM (Core (M TH.Stmt))
    
    2673
    -repBindSt (MkC p) (MkC e) = rep2 bindSName [p,e]
    
    2673
    +repBindSt (MkC p) (MkC e) = krep2 bindSOcc [p,e]
    
    2674 2674
     
    
    2675 2675
     repLetSt :: Core [(M TH.Dec)] -> MetaM (Core (M TH.Stmt))
    
    2676
    -repLetSt (MkC ds) = rep2 letSName [ds]
    
    2676
    +repLetSt (MkC ds) = krep2 letSOcc [ds]
    
    2677 2677
     
    
    2678 2678
     repNoBindSt :: Core (M TH.Exp) -> MetaM (Core (M TH.Stmt))
    
    2679
    -repNoBindSt (MkC e) = rep2 noBindSName [e]
    
    2679
    +repNoBindSt (MkC e) = krep2 noBindSOcc [e]
    
    2680 2680
     
    
    2681 2681
     repParSt :: Core [[(M TH.Stmt)]] -> MetaM (Core (M TH.Stmt))
    
    2682
    -repParSt (MkC sss) = rep2 parSName [sss]
    
    2682
    +repParSt (MkC sss) = krep2 parSOcc [sss]
    
    2683 2683
     
    
    2684 2684
     repRecSt :: Core [(M TH.Stmt)] -> MetaM (Core (M TH.Stmt))
    
    2685
    -repRecSt (MkC ss) = rep2 recSName [ss]
    
    2685
    +repRecSt (MkC ss) = krep2 recSOcc [ss]
    
    2686 2686
     
    
    2687 2687
     -------------- Range (Arithmetic sequences) -----------
    
    2688 2688
     repFrom :: Core (M TH.Exp) -> MetaM (Core (M TH.Exp))
    
    ... ... @@ -3210,11 +3210,11 @@ repGensym (MkC lit_str) = rep2 newNameName [lit_str]
    3210 3210
     repBindM :: Type -> Type        -- a and b
    
    3211 3211
              -> Core (M a) -> Core (a -> M b) -> MetaM (Core (M b))
    
    3212 3212
     repBindM ty_a ty_b (MkC x) (MkC y)
    
    3213
    -  = rep2M bindMName [Type ty_a, Type ty_b, x, y]
    
    3213
    +  = krep2M bindMClassOpOcc [Type ty_a, Type ty_b, x, y]
    
    3214 3214
     
    
    3215 3215
     repSequenceM :: Type -> Core [M a] -> MetaM (Core (M [a]))
    
    3216 3216
     repSequenceM ty_a (MkC list)
    
    3217
    -  = rep2M sequenceQName [Type ty_a, list]
    
    3217
    +  = krep2M sequenceQOcc [Type ty_a, list]
    
    3218 3218
     
    
    3219 3219
     repUnboundVar :: Core TH.Name -> MetaM (Core (M TH.Exp))
    
    3220 3220
     repUnboundVar (MkC name) = krep2 unboundVarEOcc [name]
    

  • compiler/GHC/Tc/Gen/Arrow.hs
    ... ... @@ -432,8 +432,7 @@ tcCmdSyntaxTable loc orig ty (CST tbl)
    432 432
            ; return (CST tbl') }
    
    433 433
       where
    
    434 434
          do_one (std_occ, user_nm_expr)
    
    435
    -       = -- Use the user_nm_expr in place of the standard operation
    
    436
    -         do { std_id <- tcLookupKnownOccId std_occ
    
    435
    +       = do { std_id <- tcLookupKnownOccId std_occ
    
    437 436
                 ; if | HsVar _ (L _ (WithUserRdr _ user_nm)) <- user_nm_expr
    
    438 437
                      , idName std_id == user_nm
    
    439 438
                      ->  -- Use the standard operation
    
    ... ... @@ -476,8 +475,8 @@ arity_map :: OccEnv Arity
    476 475
     -- Domain is only the arrow operations
    
    477 476
     arity_map = mkOccEnv
    
    478 477
        [ (arrAIdOcc,     3)  -- result used as an argument in, e.g., do_premap
    
    479
    -   , (composeAIdOcc, 3)  -- result used as an argument in, e.g., dsCmdStmt/BodyStmt
    
    480
    -   , (firstAIdOcc,   5)  -- result used as an argument in, e.g., dsCmdStmt/BodyStmt
    
    478
    +   , (composeAIdOcc, 5)  -- result used as an argument in, e.g., dsCmdStmt/BodyStmt
    
    479
    +   , (firstAIdOcc,   4)  -- result used as an argument in, e.g., dsCmdStmt/BodyStmt
    
    481 480
        , (appAIdOcc,     2)  -- result used as an argument in, e.g., dsCmd/HsCmdArrApp/HsHigherOrderApp
    
    482 481
        , (choiceAIdOcc,  5)  -- result used as an argument in, e.g., HsCmdIf
    
    483 482
        , (loopAIdOcc,    4)  -- result used as an argument in, e.g., HsCmdIf
    

  • compiler/GHC/Tc/Gen/Splice.hs
    ... ... @@ -762,7 +762,7 @@ mkMetaTyVar =
    762 762
     -- | For a type 'm', emit the constraint 'Quote m'.
    
    763 763
     emitQuoteWanted :: Type -> TcM EvVar
    
    764 764
     emitQuoteWanted m_var =  do
    
    765
    -        quote_con <- tcLookupTyCon quoteClassName
    
    765
    +        quote_con <- tcLookupKnownOccTyCon quoteClassOcc
    
    766 766
             emitWantedEvVar BracketOrigin $
    
    767 767
               mkTyConApp quote_con [m_var]
    
    768 768
     
    

  • compiler/GHC/Tc/Utils/Instantiate.hs
    ... ... @@ -99,7 +99,8 @@ import Data.Function ( on )
    99 99
     -}
    
    100 100
     
    
    101 101
     newKnownOccMethod
    
    102
    -  :: CtOrigin              -- ^ why do we need this?
    
    102
    +  :: HasDebugCallStack
    
    103
    +  => CtOrigin              -- ^ why do we need this?
    
    103 104
       -> KnownOcc              -- ^ name of the method
    
    104 105
       -> [TcRhoType]           -- ^ types with which to instantiate the class
    
    105 106
       -> TcM (HsExpr GhcTc)
    
    ... ... @@ -115,12 +116,12 @@ newKnownOccMethod origin occ ty_args
    115 116
            ; finish_nkko origin id ty_args }
    
    116 117
     
    
    117 118
     newKnownKeyMethod  -- Same as newKnownOccMethod, but with a KnownKey
    
    118
    -  :: CtOrigin -> KnownKey -> [TcRhoType]-> TcM (HsExpr GhcTc)
    
    119
    +  :: HasDebugCallStack => CtOrigin -> KnownKey -> [TcRhoType]-> TcM (HsExpr GhcTc)
    
    119 120
     newKnownKeyMethod origin key ty_args
    
    120 121
       = do { id <- tcLookupKnownKeyId key
    
    121 122
            ; finish_nkko origin id ty_args }
    
    122 123
     
    
    123
    -finish_nkko :: CtOrigin -> Id -> [TcRhoType] -> TcM (HsExpr GhcTc)
    
    124
    +finish_nkko :: HasDebugCallStack => CtOrigin -> Id -> [TcRhoType] -> TcM (HsExpr GhcTc)
    
    124 125
     finish_nkko origin id ty_args
    
    125 126
       = do { let ty = piResultTys (idType id) ty_args
    
    126 127
                  (theta, _caller_knows_this) = tcSplitPhiTy ty
    

  • libraries/base/src/GHC/KnownKeyNames.hs
    ... ... @@ -169,10 +169,11 @@ module GHC.KnownKeyNames
    169 169
         , integerComplement, integerBit#, integerTestBit#, integerShiftL#, integerShiftR#
    
    170 170
     
    
    171 171
         -- Template Haskell
    
    172
    +    , Lift, Quote  -- The Lift and Quote classeso
    
    172 173
         , Q, DecsQ, ExpQ, TypeQ, PatQ
    
    173 174
         , Name, Decs, TH.Type, FunDep
    
    174 175
         , Pred, Code, InjectivityAnn, Overlap, ModName, QuasiQuoter
    
    175
    -    , Stmt, Con, BangType, VarBangType, RuleBndr, TySynEqn, Role, DerivClause
    
    176
    +    , Con, BangType, VarBangType, RuleBndr, TySynEqn, Role, DerivClause
    
    176 177
         , Kind, TyVarBndrUnit, TyVarBndrSpec, TyVarBndrVis, DerivStrategy
    
    177 178
         , sequenceQ, newName, mkName, mkNameG_v, mkNameG_d, mkNameG_tc, mkNameG_fld, mkNameL
    
    178 179
         , mkNameQ, mkNameS, mkModName, unType, unTypeCode, unsafeCodeCoerce
    
    ... ... @@ -201,6 +202,7 @@ module GHC.KnownKeyNames
    201 202
         , FieldPat, fieldPat
    
    202 203
         , Match, match
    
    203 204
         , Clause, clause
    
    205
    +    , Stmt, bindS, letS, noBindS, parS, recS
    
    204 206
         ) where
    
    205 207
     
    
    206 208
     import GHC.Internal.Base hiding( foldr )
    

  • libraries/ghc-internal/src/GHC/Internal/TH/Lift.hs
    ... ... @@ -17,6 +17,9 @@
    17 17
     {-# LANGUAGE FlexibleInstances #-}
    
    18 18
     {-# OPTIONS_GHC -fno-warn-inline-rule-shadowing #-}
    
    19 19
     
    
    20
    +{-# OPTIONS_GHC -fdefines-known-key-names #-}
    
    21
    +    -- Defines Lift
    
    22
    +
    
    20 23
     -- | This module gives the definition of the 'Lift' class.
    
    21 24
     --
    
    22 25
     -- This is an internal module.