]> granicus.if.org Git - clang/commitdiff
For ModuleLoader::makeModuleVisible() also pass the source location where the
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Fri, 1 Feb 2013 16:36:12 +0000 (16:36 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Fri, 1 Feb 2013 16:36:12 +0000 (16:36 +0000)
module import occurred.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174191 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Frontend/ASTUnit.h
include/clang/Frontend/CompilerInstance.h
include/clang/Lex/ModuleLoader.h
include/clang/Serialization/ASTReader.h
lib/Frontend/CompilerInstance.cpp
lib/Sema/SemaDecl.cpp
lib/Serialization/ASTReader.cpp
unittests/Basic/SourceManagerTest.cpp
unittests/Lex/LexerTest.cpp
unittests/Lex/PPCallbacksTest.cpp
unittests/Lex/PPConditionalDirectiveRecordTest.cpp

index 3701cdc2e44f8ab16541125eff2438da40be8032..9a02c0c2b8610a691b3b21f3a8e071f98dc23918 100644 (file)
@@ -839,7 +839,8 @@ public:
   }
 
   virtual void makeModuleVisible(Module *Mod,
-                                 Module::NameVisibilityKind Visibility) { }
+                                 Module::NameVisibilityKind Visibility,
+                                 SourceLocation ImportLoc) { }
 
 };
 
index a17e1c8f5bc413f996e4eab8d2906a57e361b8f3..273fcc10827ff955aa50f93c8846c7c048f4aec3 100644 (file)
@@ -662,7 +662,8 @@ public:
                                       bool IsInclusionDirective);
 
   virtual void makeModuleVisible(Module *Mod,
-                                 Module::NameVisibilityKind Visibility);
+                                 Module::NameVisibilityKind Visibility,
+                                 SourceLocation ImportLoc);
 
 };
 
index 933cfd36e5b7076bc4f62d6644b157f6fbe569c4..93e69a6eed3a3a1c2cc335c6b16604488270b483 100644 (file)
@@ -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;
 };
   
 }
index d3f3466c338b54cfe6b7e2e656e4d80b794ce4ea..bfa3994ec3e6995d64605492b4b4e7bb15564c6b 100644 (file)
@@ -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);
index 27f96b0974d377e7cac26704258de18f490668c7..d4a351394a2e4b45f30931760736c8021ebd1cea 100644 (file)
@@ -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);
 }
 
index 0d549fcc18e152fa5be70416eff6ced3048919f1..45f7cae960add8d96bb9a174f1f67ea3bf8ec55c 100644 (file)
@@ -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,
index 1524da9bd66194a3c0f615a235a3686ccff3842e..37db83e594a46851ba45e65188a683575145b4b4 100644 (file)
@@ -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();
 }
index 443d07714527f9534eaf099c33fa2babe668ea02..a7beb8f090ca43eaab83a44454b6fa781a1bddd5 100644 (file)
@@ -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) {
index a7c62849513a76a161513f247926e8ab49ba6312..505be75ab4447b50d7192b70f230eaffcdddbe85 100644 (file)
@@ -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) {
index 073e07cbb4fb67de6f1789e753223b3265465b2e..13104cbc0398c01e1358fc3e8ca69c2e7b19f90f 100644 (file)
@@ -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.
index 80c352d66ae30b4b7abffcf8c35db02f80dfc2cd..856a8ff26d9751b028230a5cda0e19f7f67314f2 100644 (file)
@@ -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) {