From 7d2f5c4a913604938467a865659b3e75cf672e42 Mon Sep 17 00:00:00 2001 From: Manman Ren Date: Fri, 9 Sep 2016 19:03:07 +0000 Subject: [PATCH] Modules: revert r280728. In post-commit review, Richard suggested a better way to fix this. rdar://27926200 llvm-svn: 281078 --- clang/lib/AST/DeclBase.cpp | 10 ++++------ clang/test/Modules/Inputs/lookup-assert/Base.h | 4 ---- clang/test/Modules/Inputs/lookup-assert/Derive.h | 3 --- clang/test/Modules/Inputs/lookup-assert/H3.h | 1 - clang/test/Modules/Inputs/lookup-assert/module.map | 4 ---- clang/test/Modules/lookup-assert.m | 10 ---------- 6 files changed, 4 insertions(+), 28 deletions(-) delete mode 100644 clang/test/Modules/Inputs/lookup-assert/Base.h delete mode 100644 clang/test/Modules/Inputs/lookup-assert/Derive.h delete mode 100644 clang/test/Modules/Inputs/lookup-assert/H3.h delete mode 100644 clang/test/Modules/Inputs/lookup-assert/module.map delete mode 100644 clang/test/Modules/lookup-assert.m diff --git a/clang/lib/AST/DeclBase.cpp b/clang/lib/AST/DeclBase.cpp index 4d4e725..cea511b 100644 --- a/clang/lib/AST/DeclBase.cpp +++ b/clang/lib/AST/DeclBase.cpp @@ -1413,6 +1413,10 @@ DeclContext::lookup(DeclarationName Name) const { assert(DeclKind != Decl::LinkageSpec && DeclKind != Decl::Export && "should not perform lookups into transparent contexts"); + const DeclContext *PrimaryContext = getPrimaryContext(); + if (PrimaryContext != this) + return PrimaryContext->lookup(Name); + // If we have an external source, ensure that any later redeclarations of this // context have been loaded, since they may add names to the result of this // lookup (or add external visible storage). @@ -1420,12 +1424,6 @@ DeclContext::lookup(DeclarationName Name) const { if (Source) (void)cast(this)->getMostRecentDecl(); - // getMostRecentDecl can change the result of getPrimaryContext. Call - // getPrimaryContext afterwards. - const DeclContext *PrimaryContext = getPrimaryContext(); - if (PrimaryContext != this) - return PrimaryContext->lookup(Name); - if (hasExternalVisibleStorage()) { assert(Source && "external visible storage but no external source?"); diff --git a/clang/test/Modules/Inputs/lookup-assert/Base.h b/clang/test/Modules/Inputs/lookup-assert/Base.h deleted file mode 100644 index 8d5e06b..0000000 --- a/clang/test/Modules/Inputs/lookup-assert/Base.h +++ /dev/null @@ -1,4 +0,0 @@ -@interface BaseInterface -- (void) test; -@end - diff --git a/clang/test/Modules/Inputs/lookup-assert/Derive.h b/clang/test/Modules/Inputs/lookup-assert/Derive.h deleted file mode 100644 index 313a961..0000000 --- a/clang/test/Modules/Inputs/lookup-assert/Derive.h +++ /dev/null @@ -1,3 +0,0 @@ -#include "Base.h" -@interface DerivedInterface : BaseInterface -@end diff --git a/clang/test/Modules/Inputs/lookup-assert/H3.h b/clang/test/Modules/Inputs/lookup-assert/H3.h deleted file mode 100644 index 3d8f878..0000000 --- a/clang/test/Modules/Inputs/lookup-assert/H3.h +++ /dev/null @@ -1 +0,0 @@ -#include "Base.h" diff --git a/clang/test/Modules/Inputs/lookup-assert/module.map b/clang/test/Modules/Inputs/lookup-assert/module.map deleted file mode 100644 index e8a89eb..0000000 --- a/clang/test/Modules/Inputs/lookup-assert/module.map +++ /dev/null @@ -1,4 +0,0 @@ -module X { - header "H3.h" - export * -} diff --git a/clang/test/Modules/lookup-assert.m b/clang/test/Modules/lookup-assert.m deleted file mode 100644 index 2697fb1..0000000 --- a/clang/test/Modules/lookup-assert.m +++ /dev/null @@ -1,10 +0,0 @@ -// RUN: rm -rf %t -// RUN: %clang_cc1 -fmodules-cache-path=%t -fmodules -fimplicit-module-maps -I %S/Inputs/lookup-assert %s -verify -// expected-no-diagnostics - -#include "Derive.h" -#import -@implementation DerivedInterface -- (void)test { -} -@end -- 2.7.4