Optimise desugaring of parallel array comprehensions
[ghc-hetmet.git] / compiler / prelude / PrelNames.lhs
index 9e18d7a..baf3b50 100644 (file)
@@ -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,8 +56,7 @@ module PrelNames (
 
 #include "HsVersions.h"
 
-import PackageConfig
-import Module    ( Module, ModuleName, mkModule, mkModuleNameFS )
+import Module
 import OccName   ( dataName, tcName, clsName, varName, mkOccNameFS,
                    mkVarOccFS )
 import RdrName   ( RdrName, nameRdrName, mkOrig, rdrNameOcc, mkUnqual )
@@ -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
@@ -178,8 +184,8 @@ basicKnownKeyNames
        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 +194,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,
 
@@ -263,6 +268,7 @@ 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")
 
@@ -503,27 +509,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
@@ -601,11 +603,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 +657,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
@@ -691,15 +694,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 +857,6 @@ opaqueTyConKey                          = mkPreludeTyConUnique 133
 
 stringTyConKey                         = mkPreludeTyConUnique 134
 
-
 ---------------- Template Haskell -------------------
 --     USES TyConUniques 100-129
 -----------------------------------------------------
@@ -974,13 +976,14 @@ breakpointAutoJumpIdKey       = mkPreludeMiscIdUnique 67
 inlineIdKey                  = mkPreludeMiscIdUnique 68
 
 -- 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