X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fprelude%2FPrelNames.lhs;h=c324e95151b2dab8fda8753540236614955f1c3b;hb=4c6a3f787abcaed009a574196d82237d9ae64fc8;hp=09f632838a6a21673b76cd19ecceb14279d8ae8c;hpb=c559d7b34529e75285f78f84687fa8b69bfea6d6;p=ghc-hetmet.git diff --git a/compiler/prelude/PrelNames.lhs b/compiler/prelude/PrelNames.lhs index 09f6328..c324e95 100644 --- a/compiler/prelude/PrelNames.lhs +++ b/compiler/prelude/PrelNames.lhs @@ -36,6 +36,13 @@ Nota Bene: all Names defined in here should come from the base package \begin{code} +{-# OPTIONS -w #-} +-- The above warning supression flag is a temporary kludge. +-- While working on this module you are encouraged to remove it and fix +-- any warnings in the module. See +-- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings +-- for details + module PrelNames ( Unique, Uniquable(..), hasKey, -- Re-exported for convenience @@ -49,10 +56,9 @@ module PrelNames ( #include "HsVersions.h" -import PackageConfig -import Module ( Module, ModuleName, mkModule, mkModuleNameFS ) -import OccName ( dataName, tcName, clsName, varName, mkOccNameFS, - mkVarOccFS ) +import Module +import OccName ( dataName, tcName, clsName, varName, tvName, + mkOccNameFS, mkVarOccFS ) import RdrName ( RdrName, nameRdrName, mkOrig, rdrNameOcc, mkUnqual ) import Unique ( Unique, Uniquable(..), hasKey, mkPreludeMiscIdUnique, mkPreludeDataConUnique, @@ -61,7 +67,7 @@ import Unique ( Unique, Uniquable(..), hasKey, ) import BasicTypes ( Boxity(..), Arity ) import Name ( Name, mkInternalName, mkExternalName ) -import SrcLoc ( noSrcLoc ) +import SrcLoc import FastString \end{code} @@ -75,14 +81,14 @@ import FastString This *local* name is used by the interactive stuff \begin{code} -itName uniq = mkInternalName uniq (mkOccNameFS varName FSLIT("it")) noSrcLoc +itName uniq = mkInternalName uniq (mkOccNameFS varName FSLIT("it")) noSrcSpan \end{code} \begin{code} -- mkUnboundName makes a place-holder Name; it shouldn't be looked at except possibly -- during compiler debugging. mkUnboundName :: RdrName -> Name -mkUnboundName rdr_name = mkInternalName unboundKey (rdrNameOcc rdr_name) noSrcLoc +mkUnboundName rdr_name = mkInternalName unboundKey (rdrNameOcc rdr_name) noSrcSpan isUnboundName :: Name -> Bool isUnboundName name = name `hasKey` unboundKey @@ -112,7 +118,7 @@ basicKnownKeyNames stringTyConName, ratioDataConName, ratioTyConName, - integerTyConName, smallIntegerDataConName, largeIntegerDataConName, + integerTyConName, smallIntegerName, -- Classes. *Must* include: -- classes that are grabbed by key (e.g., eqClassKey) @@ -169,17 +175,20 @@ basicKnownKeyNames -- Stable pointers newStablePtrName, + -- GHC Extensions + groupWithName, + -- Strings and lists unpackCStringName, unpackCStringAppendName, unpackCStringFoldrName, unpackCStringUtf8Name, -- List operations - concatName, filterName, + concatName, filterName, mapName, zipName, foldrName, buildName, augmentName, appendName, -- Parallel array operations - nullPName, lengthPName, replicatePName, mapPName, - filterPName, zipPName, crossPName, indexPName, + nullPName, lengthPName, replicatePName, singletonPName, mapPName, + filterPName, zipPName, crossMapPName, indexPName, toPName, bpermutePName, bpermuteDftPName, indexOfPName, -- FFI primitive types that are not wired-in. @@ -188,11 +197,10 @@ basicKnownKeyNames wordTyConName, word8TyConName, word16TyConName, word32TyConName, word64TyConName, -- Others - otherwiseIdName, + otherwiseIdName, inlineIdName, plusIntegerName, timesIntegerName, eqStringName, assertName, breakpointName, breakpointCondName, - breakpointAutoName, opaqueTyConName, unknownTyConName, - unknown1TyConName, unknown2TyConName, unknown3TyConName, + breakpointAutoName, opaqueTyConName, assertErrorName, runSTRepName, printName, fstName, sndName, @@ -228,12 +236,15 @@ genericTyConNames = [crossTyConName, plusTyConName, genUnitTyConName] --MetaHaskell Extension Add a new module here \begin{code} pRELUDE = mkBaseModule_ pRELUDE_NAME -gHC_PRIM = mkBaseModule FSLIT("GHC.Prim") -- Primitive types and values +gHC_PRIM = mkPrimModule FSLIT("GHC.Prim") -- Primitive types and values +gHC_BOOL = mkPrimModule FSLIT("GHC.Bool") +gHC_GENERICS = mkPrimModule FSLIT("GHC.Generics") gHC_BASE = mkBaseModule FSLIT("GHC.Base") gHC_ENUM = mkBaseModule FSLIT("GHC.Enum") gHC_SHOW = mkBaseModule FSLIT("GHC.Show") gHC_READ = mkBaseModule FSLIT("GHC.Read") gHC_NUM = mkBaseModule FSLIT("GHC.Num") +gHC_INTEGER = mkIntegerModule FSLIT("GHC.Integer") gHC_LIST = mkBaseModule FSLIT("GHC.List") gHC_PARR = mkBaseModule FSLIT("GHC.PArr") dATA_TUP = mkBaseModule FSLIT("Data.Tuple") @@ -257,14 +268,15 @@ tYPEABLE = mkBaseModule FSLIT("Data.Typeable") gENERICS = mkBaseModule FSLIT("Data.Generics.Basics") dOTNET = mkBaseModule FSLIT("GHC.Dotnet") rEAD_PREC = mkBaseModule FSLIT("Text.ParserCombinators.ReadPrec") -lEX = mkBaseModule FSLIT("Text.Read.Lex") +lEX = mkBaseModule FSLIT("Text.Read.Lex") gHC_INT = mkBaseModule FSLIT("GHC.Int") gHC_WORD = mkBaseModule FSLIT("GHC.Word") mONAD = mkBaseModule FSLIT("Control.Monad") mONAD_FIX = mkBaseModule FSLIT("Control.Monad.Fix") aRROW = mkBaseModule FSLIT("Control.Arrow") +gHC_DESUGAR = mkBaseModule FSLIT("GHC.Desugar") rANDOM = mkBaseModule FSLIT("System.Random") -gLA_EXTS = mkBaseModule FSLIT("GHC.Exts") +gHC_EXTS = mkBaseModule FSLIT("GHC.Exts") mAIN = mkMainModule_ mAIN_NAME rOOT_MAIN = mkMainModule FSLIT(":Main") -- Root module for initialisation @@ -279,6 +291,12 @@ thFAKE = mkMainModule FSLIT(":THFake") pRELUDE_NAME = mkModuleNameFS FSLIT("Prelude") mAIN_NAME = mkModuleNameFS FSLIT("Main") +mkPrimModule :: FastString -> Module +mkPrimModule m = mkModule primPackageId (mkModuleNameFS m) + +mkIntegerModule :: FastString -> Module +mkIntegerModule m = mkModule integerPackageId (mkModuleNameFS m) + mkBaseModule :: FastString -> Module mkBaseModule m = mkModule basePackageId (mkModuleNameFS m) @@ -313,14 +331,19 @@ mkTupleModule Unboxed _ = gHC_PRIM %************************************************************************ \begin{code} -main_RDR_Unqual = mkUnqual varName FSLIT("main") +main_RDR_Unqual = mkUnqual varName FSLIT("main") -- We definitely don't want an Orig RdrName, because -- main might, in principle, be imported into module Main +forall_tv_RDR, dot_tv_RDR :: RdrName +forall_tv_RDR = mkUnqual tvName FSLIT("forall") +dot_tv_RDR = mkUnqual tvName FSLIT(".") + eq_RDR = nameRdrName eqName ge_RDR = nameRdrName geName ne_RDR = varQual_RDR gHC_BASE FSLIT("/=") le_RDR = varQual_RDR gHC_BASE FSLIT("<=") +lt_RDR = varQual_RDR gHC_BASE FSLIT("<") gt_RDR = varQual_RDR gHC_BASE FSLIT(">") compare_RDR = varQual_RDR gHC_BASE FSLIT("compare") ltTag_RDR = dataQual_RDR gHC_BASE FSLIT("LT") @@ -425,10 +448,10 @@ mkTyConRep_RDR = varQual_RDR tYPEABLE FSLIT("mkTyCon") undefined_RDR = varQual_RDR gHC_ERR FSLIT("undefined") -crossDataCon_RDR = dataQual_RDR gHC_BASE FSLIT(":*:") -inlDataCon_RDR = dataQual_RDR gHC_BASE FSLIT("Inl") -inrDataCon_RDR = dataQual_RDR gHC_BASE FSLIT("Inr") -genUnitDataCon_RDR = dataQual_RDR gHC_BASE FSLIT("Unit") +crossDataCon_RDR = dataQual_RDR gHC_GENERICS FSLIT(":*:") +inlDataCon_RDR = dataQual_RDR gHC_GENERICS FSLIT("Inl") +inrDataCon_RDR = dataQual_RDR gHC_GENERICS FSLIT("Inr") +genUnitDataCon_RDR = dataQual_RDR gHC_GENERICS FSLIT("Unit") ---------------------- varQual_RDR mod str = mkOrig mod (mkOccNameFS varName str) @@ -461,9 +484,9 @@ leftDataConName = conName dATA_EITHER FSLIT("Left") leftDataConKey rightDataConName = conName dATA_EITHER FSLIT("Right") rightDataConKey -- Generics -crossTyConName = tcQual gHC_BASE FSLIT(":*:") crossTyConKey -plusTyConName = tcQual gHC_BASE FSLIT(":+:") plusTyConKey -genUnitTyConName = tcQual gHC_BASE FSLIT("Unit") genUnitTyConKey +crossTyConName = tcQual gHC_GENERICS FSLIT(":*:") crossTyConKey +plusTyConName = tcQual gHC_GENERICS FSLIT(":+:") plusTyConKey +genUnitTyConName = tcQual gHC_GENERICS FSLIT("Unit") genUnitTyConKey -- Base strings Strings unpackCStringName = varQual gHC_BASE FSLIT("unpackCString#") unpackCStringIdKey @@ -490,12 +513,16 @@ bindMName = methName gHC_BASE FSLIT(">>=") bindMClassOpKey returnMName = methName gHC_BASE FSLIT("return") returnMClassOpKey failMName = methName gHC_BASE FSLIT("fail") failMClassOpKey +-- Functions for GHC extensions +groupWithName = varQual gHC_EXTS FSLIT("groupWith") groupWithIdKey + -- Random PrelBase functions fromStringName = methName dATA_STRING FSLIT("fromString") fromStringClassOpKey otherwiseIdName = varQual gHC_BASE FSLIT("otherwise") otherwiseIdKey foldrName = varQual gHC_BASE FSLIT("foldr") foldrIdKey buildName = varQual gHC_BASE FSLIT("build") buildIdKey augmentName = varQual gHC_BASE FSLIT("augment") augmentIdKey +mapName = varQual gHC_BASE FSLIT("map") mapIdKey appendName = varQual gHC_BASE FSLIT("++") appendIdKey andName = varQual gHC_BASE FSLIT("&&") andIdKey orName = varQual gHC_BASE FSLIT("||") orIdKey @@ -503,27 +530,23 @@ assertName = varQual gHC_BASE FSLIT("assert") assertIdKey breakpointName = varQual gHC_BASE FSLIT("breakpoint") breakpointIdKey breakpointCondName= varQual gHC_BASE FSLIT("breakpointCond") breakpointCondIdKey breakpointAutoName= varQual gHC_BASE FSLIT("breakpointAuto") breakpointAutoIdKey -unknownTyConName = tcQual gHC_BASE FSLIT("Unknown") unknownTyConKey -unknown1TyConName = tcQual gHC_BASE FSLIT("Unknown1") unknown1TyConKey -unknown2TyConName = tcQual gHC_BASE FSLIT("Unknown2") unknown2TyConKey -unknown3TyConName = tcQual gHC_BASE FSLIT("Unknown3") unknown3TyConKey opaqueTyConName = tcQual gHC_BASE FSLIT("Opaque") opaqueTyConKey breakpointJumpName = mkInternalName breakpointJumpIdKey (mkOccNameFS varName FSLIT("breakpointJump")) - noSrcLoc + noSrcSpan breakpointCondJumpName = mkInternalName breakpointCondJumpIdKey (mkOccNameFS varName FSLIT("breakpointCondJump")) - noSrcLoc + noSrcSpan breakpointAutoJumpName = mkInternalName breakpointAutoJumpIdKey (mkOccNameFS varName FSLIT("breakpointAutoJump")) - noSrcLoc + noSrcSpan -- PrelTup fstName = varQual dATA_TUP FSLIT("fst") fstIdKey @@ -534,11 +557,10 @@ numClassName = clsQual gHC_NUM FSLIT("Num") numClassKey fromIntegerName = methName gHC_NUM FSLIT("fromInteger") fromIntegerClassOpKey minusName = methName gHC_NUM FSLIT("-") minusClassOpKey negateName = methName gHC_NUM FSLIT("negate") negateClassOpKey -plusIntegerName = varQual gHC_NUM FSLIT("plusInteger") plusIntegerIdKey -timesIntegerName = varQual gHC_NUM FSLIT("timesInteger") timesIntegerIdKey -integerTyConName = tcQual gHC_NUM FSLIT("Integer") integerTyConKey -smallIntegerDataConName = conName gHC_NUM FSLIT("S#") smallIntegerDataConKey -largeIntegerDataConName = conName gHC_NUM FSLIT("J#") largeIntegerDataConKey +plusIntegerName = varQual gHC_INTEGER FSLIT("plusInteger") plusIntegerIdKey +timesIntegerName = varQual gHC_INTEGER FSLIT("timesInteger") timesIntegerIdKey +integerTyConName = tcQual gHC_INTEGER FSLIT("Integer") integerTyConKey +smallIntegerName = varQual gHC_INTEGER FSLIT("smallInteger") smallIntegerIdKey -- PrelReal types and classes rationalTyConName = tcQual gHC_REAL FSLIT("Rational") rationalTyConKey @@ -601,11 +623,12 @@ enumFromToPName = varQual gHC_PARR FSLIT("enumFromToP") enumFromToPIdKey enumFromThenToPName= varQual gHC_PARR FSLIT("enumFromThenToP") enumFromThenToPIdKey nullPName = varQual gHC_PARR FSLIT("nullP") nullPIdKey lengthPName = varQual gHC_PARR FSLIT("lengthP") lengthPIdKey +singletonPName = varQual gHC_PARR FSLIT("singletonP") singletonPIdKey replicatePName = varQual gHC_PARR FSLIT("replicateP") replicatePIdKey mapPName = varQual gHC_PARR FSLIT("mapP") mapPIdKey filterPName = varQual gHC_PARR FSLIT("filterP") filterPIdKey zipPName = varQual gHC_PARR FSLIT("zipP") zipPIdKey -crossPName = varQual gHC_PARR FSLIT("crossP") crossPIdKey +crossMapPName = varQual gHC_PARR FSLIT("crossMapP") crossMapPIdKey indexPName = varQual gHC_PARR FSLIT("!:") indexPIdKey toPName = varQual gHC_PARR FSLIT("toP") toPIdKey bpermutePName = varQual gHC_PARR FSLIT("bpermuteP") bpermutePIdKey @@ -654,7 +677,7 @@ mfixName = methName mONAD_FIX FSLIT("mfix") mfixIdKey -- Arrow notation arrAName = varQual aRROW FSLIT("arr") arrAIdKey -composeAName = varQual aRROW FSLIT(">>>") composeAIdKey +composeAName = varQual gHC_DESUGAR FSLIT(">>>") composeAIdKey firstAName = varQual aRROW FSLIT("first") firstAIdKey appAName = varQual aRROW FSLIT("app") appAIdKey choiceAName = varQual aRROW FSLIT("|||") choiceAIdKey @@ -664,7 +687,7 @@ loopAName = varQual aRROW FSLIT("loop") loopAIdKey monadPlusClassName = clsQual mONAD FSLIT("MonadPlus") monadPlusClassKey randomClassName = clsQual rANDOM FSLIT("Random") randomClassKey randomGenClassName = clsQual rANDOM FSLIT("RandomGen") randomGenClassKey -isStringClassName = clsQual gHC_BASE FSLIT("IsString") isStringClassKey +isStringClassName = clsQual dATA_STRING FSLIT("IsString") isStringClassKey -- dotnet interop objectTyConName = tcQual dOTNET FSLIT("Object") objectTyConKey @@ -691,15 +714,15 @@ tcQual = mk_known_key_name tcName clsQual = mk_known_key_name clsName mk_known_key_name space mod str uniq - = mkExternalName uniq mod (mkOccNameFS space str) noSrcLoc + = mkExternalName uniq mod (mkOccNameFS space str) noSrcSpan conName :: Module -> FastString -> Unique -> Name conName mod occ uniq - = mkExternalName uniq mod (mkOccNameFS dataName occ) noSrcLoc + = mkExternalName uniq mod (mkOccNameFS dataName occ) noSrcSpan methName :: Module -> FastString -> Unique -> Name methName mod occ uniq - = mkExternalName uniq mod (mkVarOccFS occ) noSrcLoc + = mkExternalName uniq mod (mkVarOccFS occ) noSrcSpan \end{code} %************************************************************************ @@ -854,7 +877,6 @@ opaqueTyConKey = mkPreludeTyConUnique 133 stringTyConKey = mkPreludeTyConUnique 134 - ---------------- Template Haskell ------------------- -- USES TyConUniques 100-129 ----------------------------------------------------- @@ -875,8 +897,6 @@ doubleDataConKey = mkPreludeDataConUnique 3 falseDataConKey = mkPreludeDataConUnique 4 floatDataConKey = mkPreludeDataConUnique 5 intDataConKey = mkPreludeDataConUnique 6 -smallIntegerDataConKey = mkPreludeDataConUnique 7 -largeIntegerDataConKey = mkPreludeDataConUnique 8 nilDataConKey = mkPreludeDataConUnique 11 ratioDataConKey = mkPreludeDataConUnique 12 stableNameDataConKey = mkPreludeDataConUnique 14 @@ -943,6 +963,7 @@ bindIOIdKey = mkPreludeMiscIdUnique 36 returnIOIdKey = mkPreludeMiscIdUnique 37 deRefStablePtrIdKey = mkPreludeMiscIdUnique 38 newStablePtrIdKey = mkPreludeMiscIdUnique 39 +smallIntegerIdKey = mkPreludeMiscIdUnique 40 plusIntegerIdKey = mkPreludeMiscIdUnique 41 timesIntegerIdKey = mkPreludeMiscIdUnique 42 printIdKey = mkPreludeMiscIdUnique 43 @@ -973,14 +994,18 @@ breakpointAutoJumpIdKey = mkPreludeMiscIdUnique 67 inlineIdKey = mkPreludeMiscIdUnique 68 +mapIdKey = mkPreludeMiscIdUnique 69 +groupWithIdKey = mkPreludeMiscIdUnique 70 + -- Parallel array functions +singletonPIdKey = mkPreludeMiscIdUnique 79 nullPIdKey = mkPreludeMiscIdUnique 80 lengthPIdKey = mkPreludeMiscIdUnique 81 replicatePIdKey = mkPreludeMiscIdUnique 82 mapPIdKey = mkPreludeMiscIdUnique 83 filterPIdKey = mkPreludeMiscIdUnique 84 zipPIdKey = mkPreludeMiscIdUnique 85 -crossPIdKey = mkPreludeMiscIdUnique 86 +crossMapPIdKey = mkPreludeMiscIdUnique 86 indexPIdKey = mkPreludeMiscIdUnique 87 toPIdKey = mkPreludeMiscIdUnique 88 enumFromToPIdKey = mkPreludeMiscIdUnique 89