On Wed, Apr 23, 2014 at 1:28 PM, Richard Smith <[email protected]>wrote:
> On Wed, Apr 23, 2014 at 12:04 PM, John Thompson < > [email protected]> wrote: > >> Author: jtsoftware >> Date: Wed Apr 23 14:04:32 2014 >> New Revision: 207011 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=207011&view=rev >> Log: >> Quick fix for layering that broke shared library build. >> > > Thanks! Putting this into ModuleLoader seems reasonable for now. > > >> Modified: >> cfe/trunk/include/clang/Frontend/ASTUnit.h >> cfe/trunk/include/clang/Frontend/CompilerInstance.h >> cfe/trunk/include/clang/Lex/ModuleLoader.h >> cfe/trunk/lib/Frontend/CompilerInstance.cpp >> cfe/trunk/lib/Sema/SemaLookup.cpp >> cfe/trunk/unittests/Basic/SourceManagerTest.cpp >> cfe/trunk/unittests/Lex/LexerTest.cpp >> cfe/trunk/unittests/Lex/PPCallbacksTest.cpp >> cfe/trunk/unittests/Lex/PPConditionalDirectiveRecordTest.cpp >> >> Modified: cfe/trunk/include/clang/Frontend/ASTUnit.h >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/ASTUnit.h?rev=207011&r1=207010&r2=207011&view=diff >> >> ============================================================================== >> --- cfe/trunk/include/clang/Frontend/ASTUnit.h (original) >> +++ cfe/trunk/include/clang/Frontend/ASTUnit.h Wed Apr 23 14:04:32 2014 >> @@ -874,8 +874,10 @@ public: >> void makeModuleVisible(Module *Mod, Module::NameVisibilityKind >> Visibility, >> SourceLocation ImportLoc, bool Complain) >> override {} >> >> - GlobalModuleIndex *loadGlobalModuleIndex(SourceLocation TriggerLoc) >> + GlobalModuleIndex *loadGlobalModuleIndex(SourceLocation TriggerLoc) >> override >> { return 0; } >> + bool lookupMissingImports(StringRef Name, SourceLocation TriggerLoc) >> override >> + { return 0; }; >> }; >> >> } // namespace clang >> >> Modified: cfe/trunk/include/clang/Frontend/CompilerInstance.h >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/CompilerInstance.h?rev=207011&r1=207010&r2=207011&view=diff >> >> ============================================================================== >> --- cfe/trunk/include/clang/Frontend/CompilerInstance.h (original) >> +++ cfe/trunk/include/clang/Frontend/CompilerInstance.h Wed Apr 23 >> 14:04:32 2014 >> @@ -700,7 +700,9 @@ public: >> return ModuleLoader::HadFatalFailure; >> } >> >> - GlobalModuleIndex *loadGlobalModuleIndex(SourceLocation TriggerLoc); >> + GlobalModuleIndex *loadGlobalModuleIndex(SourceLocation TriggerLoc) >> override; >> + >> + bool lookupMissingImports(StringRef Name, SourceLocation TriggerLoc) >> override; >> }; >> >> } // end namespace clang >> >> Modified: cfe/trunk/include/clang/Lex/ModuleLoader.h >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Lex/ModuleLoader.h?rev=207011&r1=207010&r2=207011&view=diff >> >> ============================================================================== >> --- cfe/trunk/include/clang/Lex/ModuleLoader.h (original) >> +++ cfe/trunk/include/clang/Lex/ModuleLoader.h Wed Apr 23 14:04:32 2014 >> @@ -113,7 +113,14 @@ public: >> /// \param TriggerLoc The location for what triggered the load. >> /// \returns Returns null if load failed. >> virtual GlobalModuleIndex *loadGlobalModuleIndex( >> - SourceLocation TriggerLoc) = >> 0; >> + SourceLocation >> TriggerLoc) = 0; >> + >> + /// Check global module index for missing imports. >> + /// \param Name The symbol name to look for. >> + /// \param TriggerLoc The location for what triggered the load. >> + /// \returns Returns true if any modules with that symbol found. >> + virtual bool lookupMissingImports(StringRef Name, >> + SourceLocation TriggerLoc) = 0; >> >> bool HadFatalFailure; >> }; >> >> Modified: cfe/trunk/lib/Frontend/CompilerInstance.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInstance.cpp?rev=207011&r1=207010&r2=207011&view=diff >> >> ============================================================================== >> --- cfe/trunk/lib/Frontend/CompilerInstance.cpp (original) >> +++ cfe/trunk/lib/Frontend/CompilerInstance.cpp Wed Apr 23 14:04:32 2014 >> @@ -1466,3 +1466,29 @@ GlobalModuleIndex *CompilerInstance::loa >> } >> return GlobalIndex; >> } >> + >> +// Check global module index for missing imports. >> +bool >> +CompilerInstance::lookupMissingImports(StringRef Name, >> + SourceLocation TriggerLoc) { >> + // Look for the symbol in non-imported modules, but only if an error >> + // actually occurred. >> + if (!buildingModule()) { >> + // Load global module index, or retrieve a previously loaded one. >> + GlobalModuleIndex *GlobalIndex = loadGlobalModuleIndex( >> + TriggerLoc); >> + >> + // Only if we have a global index. >> + if (GlobalIndex) { >> + GlobalModuleIndex::HitSet FoundModules; >> + >> + // Find the modules that reference the identifier. >> + // Note that this only finds top-level modules. >> + // We'll let diagnoseTypo find the actual declaration module. >> + if (GlobalIndex->lookupIdentifier(Name, FoundModules)) >> + return true; >> + } >> + } >> + >> + return false; >> +} >> >> Modified: cfe/trunk/lib/Sema/SemaLookup.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaLookup.cpp?rev=207011&r1=207010&r2=207011&view=diff >> >> ============================================================================== >> --- cfe/trunk/lib/Sema/SemaLookup.cpp (original) >> +++ cfe/trunk/lib/Sema/SemaLookup.cpp Wed Apr 23 14:04:32 2014 >> @@ -23,8 +23,6 @@ >> #include "clang/AST/ExprCXX.h" >> #include "clang/Basic/Builtins.h" >> #include "clang/Basic/LangOptions.h" >> -#include "clang/Lex/HeaderSearch.h" >> -#include "clang/Lex/ModuleLoader.h" >> #include "clang/Lex/Preprocessor.h" >> #include "clang/Sema/DeclSpec.h" >> #include "clang/Sema/ExternalSemaSource.h" >> @@ -35,8 +33,6 @@ >> #include "clang/Sema/SemaInternal.h" >> #include "clang/Sema/TemplateDeduction.h" >> #include "clang/Sema/TypoCorrection.h" >> -#include "clang/Serialization/GlobalModuleIndex.h" >> -#include "clang/Serialization/Module.h" >> #include "llvm/ADT/STLExtras.h" >> #include "llvm/ADT/SetVector.h" >> #include "llvm/ADT/SmallPtrSet.h" >> @@ -3986,29 +3982,13 @@ TypoCorrection Sema::CorrectTypo(const D >> >> TypoCorrectionConsumer Consumer(*this, Typo); >> >> - // Get the module loader (usually compiler instance). >> - ModuleLoader &Loader = PP.getModuleLoader(); >> - >> - // Look for the symbol in non-imported modules, but only if an error >> - // actually occurred. >> - if ((Mode == CTK_ErrorRecovery) && !Loader.buildingModule() && >> - getLangOpts().Modules && getLangOpts().ModulesSearchAll) { >> - // Load global module index, or retrieve a previously loaded one. >> - GlobalModuleIndex *GlobalIndex = Loader.loadGlobalModuleIndex( >> - TypoName.getLocStart()); >> - >> - // Only if we have a global index. >> - if (GlobalIndex) { >> - GlobalModuleIndex::HitSet FoundModules; >> - >> - // Find the modules that reference the identifier. >> - // Note that this only finds top-level modules. >> - // We'll let diagnoseTypo find the actual declaration module. >> - if (GlobalIndex->lookupIdentifier(Typo->getName(), FoundModules)) { >> - TypoCorrection TC(TypoName.getName(), (NestedNameSpecifier *)0, >> 0); >> - TC.setCorrectionRange(SS, TypoName); >> - TC.setRequiresImport(true); >> - } >> + if ((Mode == CTK_ErrorRecovery) && getLangOpts().Modules && >> + getLangOpts().ModulesSearchAll) { >> + if (PP.getModuleLoader().lookupMissingImports(Typo->getName(), >> + TypoName.getLocStart())) { >> + TypoCorrection TC(TypoName.getName(), (NestedNameSpecifier *)0, 0); >> + TC.setCorrectionRange(SS, TypoName); >> + TC.setRequiresImport(true); >> > > This TC variable is unused; remove it? > I suspect TC was intended to be added to Consumer so that it participates in typo correction as a candidate... John, is that a correct assumption? If not then this block of code does nothing beyond whatever side effects .lookupMissingImports() may have, and the TC variable should be removed. > } >> } >> >> >> Modified: cfe/trunk/unittests/Basic/SourceManagerTest.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Basic/SourceManagerTest.cpp?rev=207011&r1=207010&r2=207011&view=diff >> >> ============================================================================== >> --- cfe/trunk/unittests/Basic/SourceManagerTest.cpp (original) >> +++ cfe/trunk/unittests/Basic/SourceManagerTest.cpp Wed Apr 23 14:04:32 >> 2014 >> @@ -52,20 +52,22 @@ protected: >> }; >> >> class VoidModuleLoader : public ModuleLoader { >> - virtual ModuleLoadResult loadModule(SourceLocation ImportLoc, >> - ModuleIdPath Path, >> - Module::NameVisibilityKind >> Visibility, >> - bool IsInclusionDirective) { >> + ModuleLoadResult loadModule(SourceLocation ImportLoc, >> + ModuleIdPath Path, >> + Module::NameVisibilityKind Visibility, >> + bool IsInclusionDirective) override { >> return ModuleLoadResult(); >> } >> >> - virtual void makeModuleVisible(Module *Mod, >> - Module::NameVisibilityKind Visibility, >> - SourceLocation ImportLoc, >> - bool Complain) { } >> + void makeModuleVisible(Module *Mod, >> + Module::NameVisibilityKind Visibility, >> + SourceLocation ImportLoc, >> + bool Complain) override { } >> >> - virtual GlobalModuleIndex *loadGlobalModuleIndex(SourceLocation >> TriggerLoc) >> + GlobalModuleIndex *loadGlobalModuleIndex(SourceLocation TriggerLoc) >> override >> { return 0; } >> + bool lookupMissingImports(StringRef Name, SourceLocation TriggerLoc) >> override >> + { return 0; }; >> }; >> >> TEST_F(SourceManagerTest, isBeforeInTranslationUnit) { >> >> Modified: cfe/trunk/unittests/Lex/LexerTest.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Lex/LexerTest.cpp?rev=207011&r1=207010&r2=207011&view=diff >> >> ============================================================================== >> --- cfe/trunk/unittests/Lex/LexerTest.cpp (original) >> +++ cfe/trunk/unittests/Lex/LexerTest.cpp Wed Apr 23 14:04:32 2014 >> @@ -29,20 +29,22 @@ using namespace clang; >> namespace { >> >> class VoidModuleLoader : public ModuleLoader { >> - virtual ModuleLoadResult loadModule(SourceLocation ImportLoc, >> - ModuleIdPath Path, >> - Module::NameVisibilityKind >> Visibility, >> - bool IsInclusionDirective) { >> + ModuleLoadResult loadModule(SourceLocation ImportLoc, >> + ModuleIdPath Path, >> + Module::NameVisibilityKind Visibility, >> + bool IsInclusionDirective) override { >> return ModuleLoadResult(); >> } >> >> - virtual void makeModuleVisible(Module *Mod, >> - Module::NameVisibilityKind Visibility, >> - SourceLocation ImportLoc, >> - bool Complain) { } >> + void makeModuleVisible(Module *Mod, >> + Module::NameVisibilityKind Visibility, >> + SourceLocation ImportLoc, >> + bool Complain) override { } >> >> - virtual GlobalModuleIndex *loadGlobalModuleIndex(SourceLocation >> TriggerLoc) >> + GlobalModuleIndex *loadGlobalModuleIndex(SourceLocation TriggerLoc) >> override >> { return 0; } >> + bool lookupMissingImports(StringRef Name, SourceLocation TriggerLoc) >> override >> + { return 0; }; >> }; >> >> // The test fixture. >> >> Modified: cfe/trunk/unittests/Lex/PPCallbacksTest.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Lex/PPCallbacksTest.cpp?rev=207011&r1=207010&r2=207011&view=diff >> >> ============================================================================== >> --- cfe/trunk/unittests/Lex/PPCallbacksTest.cpp (original) >> +++ cfe/trunk/unittests/Lex/PPCallbacksTest.cpp Wed Apr 23 14:04:32 2014 >> @@ -34,20 +34,22 @@ namespace { >> >> // Stub out module loading. >> class VoidModuleLoader : public ModuleLoader { >> - virtual ModuleLoadResult loadModule(SourceLocation ImportLoc, >> - ModuleIdPath Path, >> - Module::NameVisibilityKind >> Visibility, >> - bool IsInclusionDirective) { >> + ModuleLoadResult loadModule(SourceLocation ImportLoc, >> + ModuleIdPath Path, >> + Module::NameVisibilityKind Visibility, >> + bool IsInclusionDirective) override { >> return ModuleLoadResult(); >> } >> >> - virtual void makeModuleVisible(Module *Mod, >> - Module::NameVisibilityKind Visibility, >> - SourceLocation ImportLoc, >> - bool Complain) { } >> + void makeModuleVisible(Module *Mod, >> + Module::NameVisibilityKind Visibility, >> + SourceLocation ImportLoc, >> + bool Complain) override { } >> >> - virtual GlobalModuleIndex *loadGlobalModuleIndex(SourceLocation >> TriggerLoc) >> + GlobalModuleIndex *loadGlobalModuleIndex(SourceLocation TriggerLoc) >> override >> { return 0; } >> + bool lookupMissingImports(StringRef Name, SourceLocation TriggerLoc) >> override >> + { return 0; }; >> }; >> >> // Stub to collect data from InclusionDirective callbacks. >> >> Modified: cfe/trunk/unittests/Lex/PPConditionalDirectiveRecordTest.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Lex/PPConditionalDirectiveRecordTest.cpp?rev=207011&r1=207010&r2=207011&view=diff >> >> ============================================================================== >> --- cfe/trunk/unittests/Lex/PPConditionalDirectiveRecordTest.cpp >> (original) >> +++ cfe/trunk/unittests/Lex/PPConditionalDirectiveRecordTest.cpp Wed Apr >> 23 14:04:32 2014 >> @@ -53,20 +53,22 @@ protected: >> }; >> >> class VoidModuleLoader : public ModuleLoader { >> - virtual ModuleLoadResult loadModule(SourceLocation ImportLoc, >> - ModuleIdPath Path, >> - Module::NameVisibilityKind >> Visibility, >> - bool IsInclusionDirective) { >> + ModuleLoadResult loadModule(SourceLocation ImportLoc, >> + ModuleIdPath Path, >> + Module::NameVisibilityKind Visibility, >> + bool IsInclusionDirective) override { >> return ModuleLoadResult(); >> } >> >> - virtual void makeModuleVisible(Module *Mod, >> - Module::NameVisibilityKind Visibility, >> - SourceLocation ImportLoc, >> - bool Complain) { } >> + void makeModuleVisible(Module *Mod, >> + Module::NameVisibilityKind Visibility, >> + SourceLocation ImportLoc, >> + bool Complain) override { } >> >> - virtual GlobalModuleIndex *loadGlobalModuleIndex(SourceLocation >> TriggerLoc) >> + GlobalModuleIndex *loadGlobalModuleIndex(SourceLocation TriggerLoc) >> override >> { return 0; } >> + bool lookupMissingImports(StringRef Name, SourceLocation TriggerLoc) >> override >> + { return 0; }; >> }; >> >> TEST_F(PPConditionalDirectiveRecordTest, PPRecAPI) { >> >> >> _______________________________________________ >> cfe-commits mailing list >> [email protected] >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >> > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
