Skip to content

Commit

Permalink
importedNames as a module state
Browse files Browse the repository at this point in the history
  • Loading branch information
galchinsky committed Oct 14, 2012
1 parent b19f5d8 commit 1b1f53f
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 5 deletions.
2 changes: 2 additions & 0 deletions compiler/clay.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -2378,6 +2378,8 @@ struct Module : public ANode {
bool allSymbolsLoaded;
int allSymbolsLoading;

set<string> importedNames;

bool topLevelLLVMGenerated;
bool externalsGenerated;

Expand Down
9 changes: 4 additions & 5 deletions compiler/loader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -322,7 +322,6 @@ static ModulePtr loadModuleByName(DottedNamePtr name, vector<string> *sourceFile
}

void loadDependent(ModulePtr m, vector<string> *sourceFiles, ImportPtr dependent, bool verbose) {
set<string> importedNames;
vector<ImportPtr>::iterator ii, iend;
for (ii = m->imports.begin(), iend = m->imports.end(); ii != iend; ++ii) {
ImportPtr x = *ii;
Expand Down Expand Up @@ -354,9 +353,9 @@ void loadDependent(ModulePtr m, vector<string> *sourceFiles, ImportPtr dependent

if (name.ptr()) {
string nameStr(name->str.begin(), name->str.end());
if (importedNames.count(nameStr))
if (m->importedNames.count(nameStr))
error(name, "name imported already: " + nameStr);
importedNames.insert(nameStr);
m->importedNames.insert(nameStr);
m->allSymbols[nameStr].insert(x->module.ptr());
if (x->visibility == PUBLIC)
m->publicSymbols[nameStr].insert(x->module.ptr());
Expand All @@ -372,10 +371,10 @@ void loadDependent(ModulePtr m, vector<string> *sourceFiles, ImportPtr dependent
ImportedMember &z = y->members[i];
IdentifierPtr alias = z.alias.ptr() ? z.alias : z.name;
string aliasStr(alias->str.begin(), alias->str.end());
if (importedNames.count(aliasStr))
if (m->importedNames.count(aliasStr))
error(alias, "name imported already: " + aliasStr);
assert(y->aliasMap.count(aliasStr) == 0);
importedNames.insert(aliasStr);
m->importedNames.insert(aliasStr);
y->aliasMap[aliasStr] = z.name;
}
break;
Expand Down

0 comments on commit 1b1f53f

Please sign in to comment.