r265597 - [modules] Don't try to add lookup results to non-lookup contexts.

Vassil Vassilev via cfe-commits cfe-commits at lists.llvm.org
Wed Apr 6 13:56:04 PDT 2016


Author: vvassilev
Date: Wed Apr  6 15:56:03 2016
New Revision: 265597

URL: http://llvm.org/viewvc/llvm-project?rev=265597&view=rev
Log:
[modules] Don't try to add lookup results to non-lookup contexts.

Fixes https://llvm.org/bugs/show_bug.cgi?id=27186

Patch reviewed by Richard Smith.


Modified:
    cfe/trunk/lib/AST/DeclBase.cpp
    cfe/trunk/lib/Serialization/ASTWriter.cpp

Modified: cfe/trunk/lib/AST/DeclBase.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclBase.cpp?rev=265597&r1=265596&r2=265597&view=diff
==============================================================================
--- cfe/trunk/lib/AST/DeclBase.cpp (original)
+++ cfe/trunk/lib/AST/DeclBase.cpp Wed Apr  6 15:56:03 2016
@@ -1559,9 +1559,12 @@ void DeclContext::makeDeclVisibleInConte
                                                     bool Recoverable) {
   assert(this == getPrimaryContext() && "expected a primary DC");
 
-  // Skip declarations within functions.
-  if (isFunctionOrMethod())
+  if (!isLookupContext()) {
+    if (isTransparentContext())
+      getParent()->getPrimaryContext()
+        ->makeDeclVisibleInContextWithFlags(D, Internal, Recoverable);
     return;
+  }
 
   // Skip declarations which should be invisible to name lookup.
   if (shouldBeHidden(D))

Modified: cfe/trunk/lib/Serialization/ASTWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTWriter.cpp?rev=265597&r1=265596&r2=265597&view=diff
==============================================================================
--- cfe/trunk/lib/Serialization/ASTWriter.cpp (original)
+++ cfe/trunk/lib/Serialization/ASTWriter.cpp Wed Apr  6 15:56:03 2016
@@ -5736,6 +5736,9 @@ static bool isImportedDeclContext(ASTRea
 }
 
 void ASTWriter::AddedVisibleDecl(const DeclContext *DC, const Decl *D) {
+   assert(DC->isLookupContext() &&
+          "Should not add lookup results to non-lookup contexts!");
+
   // TU is handled elsewhere.
   if (isa<TranslationUnitDecl>(DC))
     return;




More information about the cfe-commits mailing list