Skip to content
Snippets Groups Projects
Commit 8c0bd142 authored by Simon Marlow's avatar Simon Marlow
Browse files

[project @ 1999-07-12 14:40:08 by simonmar]

Keep the original name for non-exported record selectors and class
methods.
parent 90bf51fc
No related merge requests found
...@@ -22,6 +22,7 @@ module Id ( ...@@ -22,6 +22,7 @@ module Id (
-- Predicates -- Predicates
omitIfaceSigForId, omitIfaceSigForId,
exportWithOrigOccName,
externallyVisibleId, externallyVisibleId,
idFreeTyVars, idFreeTyVars,
...@@ -248,6 +249,12 @@ omitIfaceSigForId id ...@@ -248,6 +249,12 @@ omitIfaceSigForId id
-- the instance decl -- the instance decl
other -> False -- Don't omit! other -> False -- Don't omit!
-- Certain names must be exported with their original occ names, because
-- these names are bound by either a class declaration or a data declaration
-- or an explicit user export.
exportWithOrigOccName :: Id -> Bool
exportWithOrigOccName id = omitIfaceSigForId id || isUserExportedId id
\end{code} \end{code}
......
...@@ -21,7 +21,7 @@ import VarEnv ...@@ -21,7 +21,7 @@ import VarEnv
import VarSet import VarSet
import Var ( Id, IdOrTyVar ) import Var ( Id, IdOrTyVar )
import Id ( idType, idInfo, idName, import Id ( idType, idInfo, idName,
mkVanillaId, mkId, isUserExportedId, mkVanillaId, mkId, exportWithOrigOccName,
getIdStrictness, setIdStrictness, getIdStrictness, setIdStrictness,
getIdDemandInfo, setIdDemandInfo, getIdDemandInfo, setIdDemandInfo,
) )
...@@ -94,7 +94,7 @@ tidyCorePgm us module_name binds_in rules ...@@ -94,7 +94,7 @@ tidyCorePgm us module_name binds_in rules
-- decl. tidyTopId then does a no-op on exported binders. -- decl. tidyTopId then does a no-op on exported binders.
init_tidy_env = (initTidyOccEnv avoids, emptyVarEnv) init_tidy_env = (initTidyOccEnv avoids, emptyVarEnv)
avoids = [getOccName bndr | bndr <- bindersOfBinds binds_in, avoids = [getOccName bndr | bndr <- bindersOfBinds binds_in,
isUserExportedId bndr] exportWithOrigOccName bndr]
tidyBind :: Maybe Module -- (Just m) for top level, Nothing for nested tidyBind :: Maybe Module -- (Just m) for top level, Nothing for nested
-> TidyEnv -> TidyEnv
...@@ -207,8 +207,8 @@ tidyTopId :: Module -> TidyEnv -> TidyEnv -> Id -> (TidyEnv, Id) ...@@ -207,8 +207,8 @@ tidyTopId :: Module -> TidyEnv -> TidyEnv -> Id -> (TidyEnv, Id)
tidyTopId mod env@(tidy_env, var_env) env_idinfo id tidyTopId mod env@(tidy_env, var_env) env_idinfo id
= -- Top level variables = -- Top level variables
let let
(tidy_env', name') | isUserExportedId id = (tidy_env, idName id) (tidy_env', name') | exportWithOrigOccName id = (tidy_env, idName id)
| otherwise = tidyTopName mod tidy_env (idName id) | otherwise = tidyTopName mod tidy_env (idName id)
ty' = tidyTopType (idType id) ty' = tidyTopType (idType id)
idinfo' = tidyIdInfo env_idinfo (idInfo id) idinfo' = tidyIdInfo env_idinfo (idInfo id)
id' = mkId name' ty' idinfo' id' = mkId name' ty' idinfo'
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment