diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2013-02-01 16:36:12 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2013-02-01 16:36:12 +0000 |
commit | 125df0589b95ad297242dbdc7239f4421ea19b9b (patch) | |
tree | 6864b40ac18c412b91f894513439275be57d271e | |
parent | 22c22f5f9a0fa0db6cb0fae9c9ced4756cd52701 (diff) | |
download | bcm5719-llvm-125df0589b95ad297242dbdc7239f4421ea19b9b.tar.gz bcm5719-llvm-125df0589b95ad297242dbdc7239f4421ea19b9b.zip |
For ModuleLoader::makeModuleVisible() also pass the source location where the
module import occurred.
llvm-svn: 174191
-rw-r--r-- | clang/include/clang/Frontend/ASTUnit.h | 3 | ||||
-rw-r--r-- | clang/include/clang/Frontend/CompilerInstance.h | 3 | ||||
-rw-r--r-- | clang/include/clang/Lex/ModuleLoader.h | 3 | ||||
-rw-r--r-- | clang/include/clang/Serialization/ASTReader.h | 3 | ||||
-rw-r--r-- | clang/lib/Frontend/CompilerInstance.cpp | 10 | ||||
-rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Serialization/ASTReader.cpp | 6 | ||||
-rw-r--r-- | clang/unittests/Basic/SourceManagerTest.cpp | 3 | ||||
-rw-r--r-- | clang/unittests/Lex/LexerTest.cpp | 3 | ||||
-rw-r--r-- | clang/unittests/Lex/PPCallbacksTest.cpp | 3 | ||||
-rw-r--r-- | clang/unittests/Lex/PPConditionalDirectiveRecordTest.cpp | 3 |
11 files changed, 27 insertions, 15 deletions
diff --git a/clang/include/clang/Frontend/ASTUnit.h b/clang/include/clang/Frontend/ASTUnit.h index 3701cdc2e44..9a02c0c2b86 100644 --- a/clang/include/clang/Frontend/ASTUnit.h +++ b/clang/include/clang/Frontend/ASTUnit.h @@ -839,7 +839,8 @@ public: } virtual void makeModuleVisible(Module *Mod, - Module::NameVisibilityKind Visibility) { } + Module::NameVisibilityKind Visibility, + SourceLocation ImportLoc) { } }; diff --git a/clang/include/clang/Frontend/CompilerInstance.h b/clang/include/clang/Frontend/CompilerInstance.h index a17e1c8f5bc..273fcc10827 100644 --- a/clang/include/clang/Frontend/CompilerInstance.h +++ b/clang/include/clang/Frontend/CompilerInstance.h @@ -662,7 +662,8 @@ public: bool IsInclusionDirective); virtual void makeModuleVisible(Module *Mod, - Module::NameVisibilityKind Visibility); + Module::NameVisibilityKind Visibility, + SourceLocation ImportLoc); }; diff --git a/clang/include/clang/Lex/ModuleLoader.h b/clang/include/clang/Lex/ModuleLoader.h index 933cfd36e5b..93e69a6eed3 100644 --- a/clang/include/clang/Lex/ModuleLoader.h +++ b/clang/include/clang/Lex/ModuleLoader.h @@ -82,7 +82,8 @@ public: /// \brief Make the given module visible. virtual void makeModuleVisible(Module *Mod, - Module::NameVisibilityKind Visibility) = 0; + Module::NameVisibilityKind Visibility, + SourceLocation ImportLoc) = 0; }; } diff --git a/clang/include/clang/Serialization/ASTReader.h b/clang/include/clang/Serialization/ASTReader.h index d3f3466c338..bfa3994ec3e 100644 --- a/clang/include/clang/Serialization/ASTReader.h +++ b/clang/include/clang/Serialization/ASTReader.h @@ -1164,7 +1164,8 @@ public: /// \param NameVisibility The level of visibility to give the names in the /// module. Visibility can only be increased over time. void makeModuleVisible(Module *Mod, - Module::NameVisibilityKind NameVisibility); + Module::NameVisibilityKind NameVisibility, + SourceLocation ImportLoc); /// \brief Make the names within this set of hidden names visible. void makeNamesVisible(const HiddenNames &Names); diff --git a/clang/lib/Frontend/CompilerInstance.cpp b/clang/lib/Frontend/CompilerInstance.cpp index 27f96b0974d..d4a351394a2 100644 --- a/clang/lib/Frontend/CompilerInstance.cpp +++ b/clang/lib/Frontend/CompilerInstance.cpp @@ -890,7 +890,8 @@ CompilerInstance::loadModule(SourceLocation ImportLoc, if (!ImportLoc.isInvalid() && LastModuleImportLoc == ImportLoc) { // Make the named module visible. if (LastModuleImportResult) - ModuleManager->makeModuleVisible(LastModuleImportResult, Visibility); + ModuleManager->makeModuleVisible(LastModuleImportResult, Visibility, + ImportLoc); return LastModuleImportResult; } @@ -1178,7 +1179,7 @@ CompilerInstance::loadModule(SourceLocation ImportLoc, return ModuleLoadResult(); } - ModuleManager->makeModuleVisible(Module, Visibility); + ModuleManager->makeModuleVisible(Module, Visibility, ImportLoc); } // If this module import was due to an inclusion directive, create an @@ -1199,7 +1200,8 @@ CompilerInstance::loadModule(SourceLocation ImportLoc, } void CompilerInstance::makeModuleVisible(Module *Mod, - Module::NameVisibilityKind Visibility){ - ModuleManager->makeModuleVisible(Mod, Visibility); + Module::NameVisibilityKind Visibility, + SourceLocation ImportLoc){ + ModuleManager->makeModuleVisible(Mod, Visibility, ImportLoc); } diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 0d549fcc18e..45f7cae960a 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -11514,7 +11514,7 @@ void Sema::createImplicitModuleImport(SourceLocation Loc, Module *Mod) { Consumer.HandleImplicitImportDecl(ImportD); // Make the module visible. - PP.getModuleLoader().makeModuleVisible(Mod, Module::AllVisible); + PP.getModuleLoader().makeModuleVisible(Mod, Module::AllVisible, Loc); } void Sema::ActOnPragmaRedefineExtname(IdentifierInfo* Name, diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index 1524da9bd66..37db83e594a 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -2591,7 +2591,8 @@ void ASTReader::makeNamesVisible(const HiddenNames &Names) { } void ASTReader::makeModuleVisible(Module *Mod, - Module::NameVisibilityKind NameVisibility) { + Module::NameVisibilityKind NameVisibility, + SourceLocation ImportLoc) { llvm::SmallPtrSet<Module *, 4> Visited; SmallVector<Module *, 4> Stack; Stack.push_back(Mod); @@ -3082,7 +3083,8 @@ void ASTReader::InitializeContext() { // Re-export any modules that were imported by a non-module AST file. for (unsigned I = 0, N = ImportedModules.size(); I != N; ++I) { if (Module *Imported = getSubmodule(ImportedModules[I])) - makeModuleVisible(Imported, Module::AllVisible); + makeModuleVisible(Imported, Module::AllVisible, + /*ImportLoc=*/SourceLocation()); } ImportedModules.clear(); } diff --git a/clang/unittests/Basic/SourceManagerTest.cpp b/clang/unittests/Basic/SourceManagerTest.cpp index 443d0771452..a7beb8f090c 100644 --- a/clang/unittests/Basic/SourceManagerTest.cpp +++ b/clang/unittests/Basic/SourceManagerTest.cpp @@ -60,7 +60,8 @@ class VoidModuleLoader : public ModuleLoader { } virtual void makeModuleVisible(Module *Mod, - Module::NameVisibilityKind Visibility) { } + Module::NameVisibilityKind Visibility, + SourceLocation ImportLoc) { } }; TEST_F(SourceManagerTest, isBeforeInTranslationUnit) { diff --git a/clang/unittests/Lex/LexerTest.cpp b/clang/unittests/Lex/LexerTest.cpp index a7c62849513..505be75ab44 100644 --- a/clang/unittests/Lex/LexerTest.cpp +++ b/clang/unittests/Lex/LexerTest.cpp @@ -61,7 +61,8 @@ class VoidModuleLoader : public ModuleLoader { } virtual void makeModuleVisible(Module *Mod, - Module::NameVisibilityKind Visibility) { } + Module::NameVisibilityKind Visibility, + SourceLocation ImportLoc) { } }; TEST_F(LexerTest, LexAPI) { diff --git a/clang/unittests/Lex/PPCallbacksTest.cpp b/clang/unittests/Lex/PPCallbacksTest.cpp index 073e07cbb4f..13104cbc039 100644 --- a/clang/unittests/Lex/PPCallbacksTest.cpp +++ b/clang/unittests/Lex/PPCallbacksTest.cpp @@ -38,7 +38,8 @@ class VoidModuleLoader : public ModuleLoader { } virtual void makeModuleVisible(Module *Mod, - Module::NameVisibilityKind Visibility) { } + Module::NameVisibilityKind Visibility, + SourceLocation ImportLoc) { } }; // Stub to collect data from InclusionDirective callbacks. diff --git a/clang/unittests/Lex/PPConditionalDirectiveRecordTest.cpp b/clang/unittests/Lex/PPConditionalDirectiveRecordTest.cpp index 80c352d66ae..856a8ff26d9 100644 --- a/clang/unittests/Lex/PPConditionalDirectiveRecordTest.cpp +++ b/clang/unittests/Lex/PPConditionalDirectiveRecordTest.cpp @@ -61,7 +61,8 @@ class VoidModuleLoader : public ModuleLoader { } virtual void makeModuleVisible(Module *Mod, - Module::NameVisibilityKind Visibility) { } + Module::NameVisibilityKind Visibility, + SourceLocation ImportLoc) { } }; TEST_F(PPConditionalDirectiveRecordTest, PPRecAPI) { |