-- Predicates
isImplicitId, isDeadBinder,
externallyVisibleId,
- isIP,
isSpecPragmaId, isRecordSelector,
isPrimOpId, isPrimOpId_maybe, isDictFunId,
isDataConId, isDataConId_maybe,
import Demand ( Demand )
import Name ( Name, OccName,
mkSysLocalName, mkLocalName,
- getOccName, isIPOcc
+ getOccName
)
import OccName ( UserFS )
import PrimRep ( PrimRep )
isDeadBinder :: Id -> Bool
isDeadBinder bndr | isId bndr = isDeadOcc (idOccInfo bndr)
| otherwise = False -- TyVars count as not dead
-
-isIP id = isIPOcc (getOccName id)
\end{code}
\begin{code}
module OccName (
-- The NameSpace type; abstact
- NameSpace, tcName, clsName, tcClsName, dataName, varName, ipName,
+ NameSpace, tcName, clsName, tcClsName, dataName, varName,
tvName, nameSpaceString,
-- The OccName type
mkDerivedTyConOcc, mkClassTyConOcc, mkClassDataConOcc, mkSpecOcc,
mkGenOcc1, mkGenOcc2,
- isSysOcc, isTvOcc, isDataOcc, isDataSymOcc, isSymOcc, isIPOcc, isValOcc,
+ isSysOcc, isTvOcc, isDataOcc, isDataSymOcc, isSymOcc, isValOcc,
occNameFS, occNameString, occNameUserString, occNameSpace, occNameFlavour,
setOccNameSpace,
\begin{code}
data NameSpace = VarName -- Variables
- | IPName -- Implicit Parameters
| DataName -- Data constructors
| TvName -- Type variables
| TcClsName -- Type constructors and classes; Haskell has them
dataName = DataName
tvName = TvName
varName = VarName
-ipName = IPName
nameSpaceString :: NameSpace -> String
nameSpaceString DataName = "Data constructor"
nameSpaceString VarName = "Variable"
-nameSpaceString IPName = "Implicit Param"
nameSpaceString TvName = "Type variable"
nameSpaceString TcClsName = "Type constructor or class"
\end{code}
-- Pretty inefficient!
isSymOcc (OccName DataName s) = isLexConSym (decodeFS s)
isSymOcc (OccName VarName s) = isLexSym (decodeFS s)
-
-isIPOcc (OccName IPName _) = True
-isIPOcc _ = False
\end{code}
{-
-----------------------------------------------------------------------------
-$Id: Parser.y,v 1.53 2001/02/20 09:40:43 simonpj Exp $
+$Id: Parser.y,v 1.54 2001/02/20 15:36:55 simonpj Exp $
Haskell grammar.
import PrelNames ( mAIN_Name, unitTyCon_RDR, funTyCon_RDR, listTyCon_RDR,
tupleTyCon_RDR, unitCon_RDR, nilCon_RDR, tupleCon_RDR
)
-import OccName ( UserFS, varName, ipName, tcName, dataName, tcClsName, tvName )
+import OccName ( UserFS, varName, tcName, dataName, tcClsName, tvName )
import SrcLoc ( SrcLoc )
import Module
import CallConv
-- *after* we see the close paren.
ipvar :: { RdrName }
- : IPVARID { (mkUnqual ipName (tailFS $1)) }
+ : IPVARID { (mkUnqual varName (tailFS $1)) }
qcon :: { RdrName }
: qconid { $1 }
import RdrName ( RdrName, mkRdrUnqual, mkIfaceOrig )
import Name ( OccName )
import OccName ( mkSysOccFS,
- tcName, varName, ipName, dataName, clsName, tvName,
+ tcName, varName, dataName, clsName, tvName,
EncodedFS
)
import Module ( ModuleName, PackageName, mkSysModuleNameFS, mkModule )
| qvar_fs { mkIfaceOrig varName $1 }
ipvar_name :: { RdrName }
- : IPVARID { mkRdrUnqual (mkSysOccFS ipName (tailFS $1)) }
+ : IPVARID { mkRdrUnqual (mkSysOccFS varName (tailFS $1)) }
qvar_names1 :: { [RdrName] }
qvar_names1 : qvar_name { [$1] }