diff options
Diffstat (limited to 'compiler/prelude')
-rw-r--r-- | compiler/prelude/PrelInfo.lhs | 4 | ||||
-rw-r--r-- | compiler/prelude/PrelNames.lhs | 18 | ||||
-rw-r--r-- | compiler/prelude/TysWiredIn.lhs | 15 |
3 files changed, 23 insertions, 14 deletions
diff --git a/compiler/prelude/PrelInfo.lhs b/compiler/prelude/PrelInfo.lhs index bb3e54ada2..4a39977797 100644 --- a/compiler/prelude/PrelInfo.lhs +++ b/compiler/prelude/PrelInfo.lhs @@ -42,6 +42,7 @@ import HscTypes import Class import TyCon import Util +import {-# SOURCE #-} TcTypeNats ( typeNatTyCons ) import Data.Array \end{code} @@ -89,7 +90,8 @@ wiredInThings , map (AnId . primOpId) allThePrimOps ] where - tycon_things = map ATyCon ([funTyCon] ++ primTyCons ++ wiredInTyCons) + tycon_things = map ATyCon ([funTyCon] ++ primTyCons ++ wiredInTyCons + ++ typeNatTyCons) \end{code} We let a lot of "non-standard" values be visible, so that we can make diff --git a/compiler/prelude/PrelNames.lhs b/compiler/prelude/PrelNames.lhs index b428f6e375..acac400c04 100644 --- a/compiler/prelude/PrelNames.lhs +++ b/compiler/prelude/PrelNames.lhs @@ -295,10 +295,6 @@ basicKnownKeyNames -- Type-level naturals singIClassName, - typeNatLeqClassName, - typeNatAddTyFamName, - typeNatMulTyFamName, - typeNatExpTyFamName, -- Implicit parameters ipClassName, @@ -1144,13 +1140,8 @@ randomGenClassName = clsQual rANDOM (fsLit "RandomGen") randomGenClassKey isStringClassName = clsQual dATA_STRING (fsLit "IsString") isStringClassKey -- Type-level naturals -singIClassName, typeNatLeqClassName, - typeNatAddTyFamName, typeNatMulTyFamName, typeNatExpTyFamName :: Name +singIClassName :: Name singIClassName = clsQual gHC_TYPELITS (fsLit "SingI") singIClassNameKey -typeNatLeqClassName = clsQual gHC_TYPELITS (fsLit "<=") typeNatLeqClassNameKey -typeNatAddTyFamName = tcQual gHC_TYPELITS (fsLit "+") typeNatAddTyFamNameKey -typeNatMulTyFamName = tcQual gHC_TYPELITS (fsLit "*") typeNatMulTyFamNameKey -typeNatExpTyFamName = tcQual gHC_TYPELITS (fsLit "^") typeNatExpTyFamNameKey -- Implicit parameters ipClassName :: Name @@ -1273,9 +1264,8 @@ constructorClassKey = mkPreludeClassUnique 40 selectorClassKey = mkPreludeClassUnique 41 -- SingI: see Note [SingI and EvLit] in TcEvidence -singIClassNameKey, typeNatLeqClassNameKey :: Unique +singIClassNameKey :: Unique singIClassNameKey = mkPreludeClassUnique 42 -typeNatLeqClassNameKey = mkPreludeClassUnique 43 ghciIoClassKey :: Unique ghciIoClassKey = mkPreludeClassUnique 44 @@ -1477,13 +1467,15 @@ rep1TyConKey = mkPreludeTyConUnique 156 -- Type-level naturals typeNatKindConNameKey, typeSymbolKindConNameKey, - typeNatAddTyFamNameKey, typeNatMulTyFamNameKey, typeNatExpTyFamNameKey + typeNatAddTyFamNameKey, typeNatMulTyFamNameKey, typeNatExpTyFamNameKey, + typeNatLeqTyFamNameKey :: Unique typeNatKindConNameKey = mkPreludeTyConUnique 160 typeSymbolKindConNameKey = mkPreludeTyConUnique 161 typeNatAddTyFamNameKey = mkPreludeTyConUnique 162 typeNatMulTyFamNameKey = mkPreludeTyConUnique 163 typeNatExpTyFamNameKey = mkPreludeTyConUnique 164 +typeNatLeqTyFamNameKey = mkPreludeTyConUnique 165 -- SIMD vector types (Unique keys) floatX4PrimTyConKey, doubleX2PrimTyConKey, int32X4PrimTyConKey, diff --git a/compiler/prelude/TysWiredIn.lhs b/compiler/prelude/TysWiredIn.lhs index b563b25cc4..d8c880f1c3 100644 --- a/compiler/prelude/TysWiredIn.lhs +++ b/compiler/prelude/TysWiredIn.lhs @@ -14,6 +14,7 @@ module TysWiredIn ( boolTy, boolTyCon, boolTyCon_RDR, boolTyConName, trueDataCon, trueDataConId, true_RDR, falseDataCon, falseDataConId, false_RDR, + promotedBoolTyCon, promotedFalseDataCon, promotedTrueDataCon, -- * Ordering ltDataCon, ltDataConId, @@ -68,6 +69,8 @@ module TysWiredIn ( -- * Equality predicates eqTyCon_RDR, eqTyCon, eqTyConName, eqBoxDataCon, + mkWiredInTyConName -- This is used in TcTypeNats to define the + -- built-in functions for evaluation. ) where #include "HsVersions.h" @@ -782,3 +785,15 @@ mkPArrFakeCon arity = data_con isPArrFakeCon :: DataCon -> Bool isPArrFakeCon dcon = dcon == parrFakeCon (dataConSourceArity dcon) \end{code} + +Promoted Booleans + +\begin{code} +promotedBoolTyCon, promotedFalseDataCon, promotedTrueDataCon :: TyCon +promotedBoolTyCon = promoteTyCon boolTyCon +promotedTrueDataCon = promoteDataCon trueDataCon +promotedFalseDataCon = promoteDataCon falseDataCon +\end{code} + + + |