Commit 016a498f authored by simonpj's avatar simonpj
Browse files

[project @ 2000-02-10 15:39:39 by simonpj]

A few comments about RnIfaces.lookupFixity
parent 461f1fb5
......@@ -624,6 +624,13 @@ lookupFixity name
Nothing -> returnRn defaultFixity
| otherwise -- Imported
-- For imported names, we have to get their fixities by doing a loadHomeInterface,
-- and consulting the Ifaces that comes back from that, because the interface
-- file for the Name might not have been loaded yet. Why not? Suppose you import module A,
-- which exports a function 'f', which is defined in module B. Then B isn't loaded
-- right away (after all, it's possible that nothing from B will be used).
-- When we come across a use of 'f', we need to know its fixity, and it's then,
-- and only then, that we load B.hi. That is what's happening here.
= loadHomeInterface doc name `thenRn` \ ifaces ->
case lookupNameEnv (iFixes ifaces) name of
Just (FixitySig _ fix _) -> returnRn fix
......
......@@ -132,8 +132,9 @@ data SDown = SDown {
-- we can look up record field names
rn_fixenv :: FixityEnv -- Local fixities
-- The global ones are held in the
-- rn_ifaces field
-- The global fixities are held in the
-- rn_ifaces field. Why? See the comments
-- with RnIfaces.lookupFixity
}
data RnMode = SourceMode -- Renaming source code
......@@ -308,6 +309,7 @@ data Ifaces = Ifaces {
iDecls :: DeclsMap, -- A single, global map of Names to decls
iFixes :: FixityEnv, -- A single, global map of Names to fixities
-- See comments with RnIfaces.lookupFixity
iSlurp :: NameSet,
-- All the names (whether "big" or "small", whether wired-in or not,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment