[modules] Introduce ModuleFile::DirectImportLoc which is the source location
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Fri, 1 Feb 2013 16:36:14 +0000 (16:36 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Fri, 1 Feb 2013 16:36:14 +0000 (16:36 +0000)
where the module was explicitly or implicitly imported in the local translation unit.

llvm-svn: 174192

clang/include/clang/Serialization/Module.h
clang/lib/Serialization/ASTReader.cpp

index 547bf4c..5b019bd 100644 (file)
@@ -124,6 +124,14 @@ public:
   /// \brief The main bitstream cursor for the main block.
   llvm::BitstreamCursor Stream;
 
+  /// \brief The source location where the module was explicitly or implicitly
+  /// imported in the local translation unit.
+  ///
+  /// If module A depends on and imports module B, both modules will have the
+  /// same DirectImportLoc, but different ImportLoc (B's ImportLoc will be a
+  /// source location inside module A).
+  SourceLocation DirectImportLoc;
+
   /// \brief The source location where this module was first imported.
   SourceLocation ImportLoc;
 
index 37db83e..604b231 100644 (file)
@@ -2779,6 +2779,7 @@ ASTReader::ASTReadResult ASTReader::ReadAST(const std::string &FileName,
                                               MEnd = Loaded.end();
        M != MEnd; ++M) {
     ModuleFile &F = *M->Mod;
+    F.DirectImportLoc = ImportLoc;
     if (!M->ImportedBy)
       F.ImportLoc = M->ImportLoc;
     else