diff options
author | Chuanqi Xu <yedeng.yd@linux.alibaba.com> | 2024-04-03 13:40:25 +0800 |
---|---|---|
committer | Chuanqi Xu <yedeng.yd@linux.alibaba.com> | 2024-04-03 15:03:07 +0800 |
commit | 468dc32ff55d19f55132cbcc4d6ceb1f6d1c12cf (patch) | |
tree | c8bc6a459d56af5f0db34786f7f65ca46eaa3640 | |
parent | a75b3e949da588bafd521eff6d265f3ea2f854c2 (diff) | |
download | llvm-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.cpp | 6 |
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) |