diff options
Diffstat (limited to 'compiler/GHC/Builtin/Types/Prim.hs')
-rw-r--r-- | compiler/GHC/Builtin/Types/Prim.hs | 48 |
1 files changed, 43 insertions, 5 deletions
diff --git a/compiler/GHC/Builtin/Types/Prim.hs b/compiler/GHC/Builtin/Types/Prim.hs index 45140e60f2..eaeda97f69 100644 --- a/compiler/GHC/Builtin/Types/Prim.hs +++ b/compiler/GHC/Builtin/Types/Prim.hs @@ -20,15 +20,21 @@ module GHC.Builtin.Types.Prim( mkTemplateAnonTyConBinders, alphaTyVars, alphaTyVar, betaTyVar, gammaTyVar, deltaTyVar, + alphaTyVarSpec, betaTyVarSpec, gammaTyVarSpec, deltaTyVarSpec, alphaTys, alphaTy, betaTy, gammaTy, deltaTy, alphaTyVarsUnliftedRep, alphaTyVarUnliftedRep, alphaTysUnliftedRep, alphaTyUnliftedRep, runtimeRep1TyVar, runtimeRep2TyVar, runtimeRep3TyVar, + runtimeRep1TyVarInf, runtimeRep2TyVarInf, runtimeRep1Ty, runtimeRep2Ty, runtimeRep3Ty, + levity1TyVar, levity1TyVarInf, levity1Ty, openAlphaTyVar, openBetaTyVar, openGammaTyVar, + openAlphaTyVarSpec, openBetaTyVarSpec, openGammaTyVarSpec, openAlphaTy, openBetaTy, openGammaTy, + levPolyTyVar1, levPolyTyVar1Spec, levPolyTy1, + multiplicityTyVar1, multiplicityTyVar2, -- Kind constructors... @@ -97,8 +103,8 @@ module GHC.Builtin.Types.Prim( import GHC.Prelude import {-# SOURCE #-} GHC.Builtin.Types - ( runtimeRepTy, unboxedTupleKind, liftedTypeKind - , vecRepDataConTyCon, tupleRepDataConTyCon + ( runtimeRepTy, levityTy, unboxedTupleKind, liftedTypeKind + , boxedRepDataConTyCon, vecRepDataConTyCon, tupleRepDataConTyCon , liftedRepTy, unliftedRepTy , intRepDataConTy , int8RepDataConTy, int16RepDataConTy, int32RepDataConTy, int64RepDataConTy @@ -114,7 +120,8 @@ import {-# SOURCE #-} GHC.Builtin.Types , doubleElemRepDataConTy , mkPromotedListTy, multiplicityTy ) -import GHC.Types.Var ( TyVar, mkTyVar ) +import GHC.Types.Var ( TyVarBinder, TyVar + , mkTyVar, mkTyVarBinder, mkTyVarBinders ) import GHC.Types.Name import {-# SOURCE #-} GHC.Types.TyThing import GHC.Core.TyCon @@ -127,7 +134,7 @@ import GHC.Utils.Outputable import GHC.Utils.Panic import GHC.Core.TyCo.Rep -- Doesn't need special access, but this is easier to avoid -- import loops which show up if you import Type instead -import {-# SOURCE #-} GHC.Core.Type ( mkTyConTy, tYPE ) +import {-# SOURCE #-} GHC.Core.Type ( mkTyConTy, mkTyConApp, tYPE ) import Data.Char @@ -360,6 +367,9 @@ alphaTyVars = mkTemplateTyVars $ repeat liftedTypeKind alphaTyVar, betaTyVar, gammaTyVar, deltaTyVar :: TyVar (alphaTyVar:betaTyVar:gammaTyVar:deltaTyVar:_) = alphaTyVars +alphaTyVarSpec, betaTyVarSpec, gammaTyVarSpec, deltaTyVarSpec :: TyVarBinder +(alphaTyVarSpec:betaTyVarSpec:gammaTyVarSpec:deltaTyVarSpec:_) = mkTyVarBinders Specified alphaTyVars + alphaTys :: [Type] alphaTys = mkTyVarTys alphaTyVars alphaTy, betaTy, gammaTy, deltaTy :: Type @@ -380,11 +390,14 @@ runtimeRep1TyVar, runtimeRep2TyVar, runtimeRep3TyVar :: TyVar (runtimeRep1TyVar : runtimeRep2TyVar : runtimeRep3TyVar : _) = drop 16 (mkTemplateTyVars (repeat runtimeRepTy)) -- selects 'q','r' +runtimeRep1TyVarInf, runtimeRep2TyVarInf :: TyVarBinder +runtimeRep1TyVarInf = mkTyVarBinder Inferred runtimeRep1TyVar +runtimeRep2TyVarInf = mkTyVarBinder Inferred runtimeRep2TyVar + runtimeRep1Ty, runtimeRep2Ty, runtimeRep3Ty :: Type runtimeRep1Ty = mkTyVarTy runtimeRep1TyVar runtimeRep2Ty = mkTyVarTy runtimeRep2TyVar runtimeRep3Ty = mkTyVarTy runtimeRep3TyVar - openAlphaTyVar, openBetaTyVar, openGammaTyVar :: TyVar -- alpha :: TYPE r1 -- beta :: TYPE r2 @@ -392,11 +405,36 @@ openAlphaTyVar, openBetaTyVar, openGammaTyVar :: TyVar [openAlphaTyVar,openBetaTyVar,openGammaTyVar] = mkTemplateTyVars [tYPE runtimeRep1Ty, tYPE runtimeRep2Ty, tYPE runtimeRep3Ty] +openAlphaTyVarSpec, openBetaTyVarSpec, openGammaTyVarSpec :: TyVarBinder +openAlphaTyVarSpec = mkTyVarBinder Specified openAlphaTyVar +openBetaTyVarSpec = mkTyVarBinder Specified openBetaTyVar +openGammaTyVarSpec = mkTyVarBinder Specified openGammaTyVar + openAlphaTy, openBetaTy, openGammaTy :: Type openAlphaTy = mkTyVarTy openAlphaTyVar openBetaTy = mkTyVarTy openBetaTyVar openGammaTy = mkTyVarTy openGammaTyVar +levity1TyVar :: TyVar +(levity1TyVar : _) + = drop 11 (mkTemplateTyVars (repeat levityTy)) -- selects 'l' + +levity1TyVarInf :: TyVarBinder +levity1TyVarInf = mkTyVarBinder Inferred levity1TyVar + +levity1Ty :: Type +levity1Ty = mkTyVarTy levity1TyVar + +levPolyTyVar1 :: TyVar +[levPolyTyVar1] = mkTemplateTyVars [tYPE (mkTyConApp boxedRepDataConTyCon [levity1Ty])] +-- tv :: TYPE ('BoxedRep l) + +levPolyTyVar1Spec :: TyVarBinder +levPolyTyVar1Spec = mkTyVarBinder Specified levPolyTyVar1 + +levPolyTy1 :: Type +levPolyTy1 = mkTyVarTy levPolyTyVar1 + multiplicityTyVar1, multiplicityTyVar2 :: TyVar (multiplicityTyVar1 : multiplicityTyVar2 : _) = drop 13 (mkTemplateTyVars (repeat multiplicityTy)) -- selects 'n', 'm' |