aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChuanqi Xu <yedeng.yd@linux.alibaba.com>2024-04-03 13:40:25 +0800
committerChuanqi Xu <yedeng.yd@linux.alibaba.com>2024-04-03 15:03:07 +0800
commit468dc32ff55d19f55132cbcc4d6ceb1f6d1c12cf (patch)
treec8bc6a459d56af5f0db34786f7f65ca46eaa3640
parenta75b3e949da588bafd521eff6d265f3ea2f854c2 (diff)
downloadllvm-468dc32ff55d19f55132cbcc4d6ceb1f6d1c12cf.zip
llvm-468dc32ff55d19f55132cbcc4d6ceb1f6d1c12cf.tar.gz
llvm-468dc32ff55d19f55132cbcc4d6ceb1f6d1c12cf.tar.bz2
[NFC] Make `DeclContext::noload_lookup()` accept transparent context
Now the `DeclContext::noload_lookup()` asserts that 'this' is not a transparent context. However, this is not consistent with `DeclContext::lookup()`, which will lookup into its parent context if 'this' is a transparent context. This patch makes the behavior of `DeclContext::noload_lookup()` to be consistent with `DeclContext::lookup()`, to lookup into the parent context if 'this' is a transparent context.
-rw-r--r--clang/lib/AST/DeclBase.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/clang/lib/AST/DeclBase.cpp b/clang/lib/AST/DeclBase.cpp
index 2cbb86b31..66a727d 100644
--- a/clang/lib/AST/DeclBase.cpp
+++ b/clang/lib/AST/DeclBase.cpp
@@ -1852,9 +1852,9 @@ DeclContext::lookup(DeclarationName Name) const {
DeclContext::lookup_result
DeclContext::noload_lookup(DeclarationName Name) {
- assert(getDeclKind() != Decl::LinkageSpec &&
- getDeclKind() != Decl::Export &&
- "should not perform lookups into transparent contexts");
+ // For transparent DeclContext, we should lookup in their enclosing context.
+ if (getDeclKind() == Decl::LinkageSpec || getDeclKind() == Decl::Export)
+ return getParent()->noload_lookup(Name);
DeclContext *PrimaryContext = getPrimaryContext();
if (PrimaryContext != this)