[project @ 1999-04-06 09:44:27 by simonm]
[ghc-hetmet.git] / ghc / compiler / basicTypes / Id.lhs
index 56afa7a..f5bff89 100644 (file)
@@ -9,7 +9,7 @@ module Id (
 
        -- Simple construction
        mkVanillaId, mkImportedId, mkSysLocal, mkUserLocal,
-       mkTemplateLocals, mkWildId, mkUserId,
+       mkTemplateLocals, mkTemplateLocal, mkWildId, mkUserId,
 
        -- Taking an Id apart
        idName, idType, idUnique, idInfo, idDetails,
@@ -17,7 +17,7 @@ module Id (
        recordSelectorFieldLabel,
 
        -- Modifying an Id
-       setIdName, setIdUnique, setIdType, setIdInfo, mkIdVisible,
+       setIdName, setIdUnique, setIdType, setIdInfo,
 
        -- Predicates
        omitIfaceSigForId,
@@ -68,14 +68,15 @@ import VarSet
 import Type            ( Type, tyVarsOfType, typePrimRep, addFreeTyVars )
 import IdInfo
 import Demand          ( Demand )
-import Name            ( Name, OccName, Module,
+import Name            ( Name, OccName,
                          mkSysLocalName, mkLocalName,
-                         isWiredInName, mkNameVisible
+                         isWiredInName
                        ) 
 import Const           ( Con(..) )
 import PrimRep         ( PrimRep )
 import PrimOp          ( PrimOp )
 import FieldLabel      ( FieldLabel(..) )
+import SrcLoc          ( SrcLoc )
 import Unique          ( Unique, mkBuiltinUnique, getBuiltinUniques )
 import Outputable
 
@@ -109,11 +110,11 @@ mkUserId name ty = mkVanillaId name ty
 
 -- SysLocal: for an Id being created by the compiler out of thin air...
 -- UserLocal: an Id with a name the user might recognize...
-mkUserLocal :: OccName     -> Unique -> Type -> Id
+mkUserLocal :: OccName     -> Unique -> Type -> SrcLoc -> Id
 mkSysLocal  :: FAST_STRING -> Unique -> Type -> Id
 
-mkSysLocal  fs uniq ty  = mkVanillaId (mkSysLocalName uniq fs)  ty
-mkUserLocal occ uniq ty = mkVanillaId (mkLocalName    uniq occ) ty
+mkSysLocal  fs uniq ty      = mkVanillaId (mkSysLocalName uniq fs)      ty
+mkUserLocal occ uniq ty loc = mkVanillaId (mkLocalName    uniq occ loc) ty
 \end{code}
 
 Make some local @Ids@ for a template @CoreExpr@.  These have bogus
@@ -130,6 +131,9 @@ mkTemplateLocals :: [Type] -> [Id]
 mkTemplateLocals tys = zipWith (mkSysLocal SLIT("tpl"))
                               (getBuiltinUniques (length tys))
                               tys
+
+mkTemplateLocal :: Int -> Type -> Id
+mkTemplateLocal i ty = mkSysLocal SLIT("tpl") (mkBuiltinUnique i) ty
 \end{code}
 
 
@@ -173,12 +177,6 @@ omitIfaceSigForId id
        other          -> False -- Don't omit!
 \end{code}
 
-\begin{code}
-mkIdVisible :: Module -> Unique -> Id -> Id
-mkIdVisible mod u id 
-  = setIdName id (mkNameVisible mod u (idName id))
-\end{code}
-
 %************************************************************************
 %*                                                                     *
 \subsection{Special Ids}