14#include "cling/Interpreter/Interpreter.h"
15#include "cling/Interpreter/LookupHelper.h"
17#include "clang/AST/DeclTemplate.h"
21 cling::Interpreter::PushTransactionRAII RAII(
fInterp);
37 if (
auto *NSD = llvm::dyn_cast<clang::NamespaceDecl>(*
fDeclIter)) {
38 if (NSD->isInlineNamespace() || NSD->isAnonymousNamespace()) {
44 }
else if (
auto *ED = llvm::dyn_cast<clang::EnumDecl>(*
fDeclIter)) {
45 if (!ED->isScoped()) {
50 }
else if (
auto *RD = llvm::dyn_cast<clang::RecordDecl>(*
fDeclIter)) {
51 if (RD->isAnonymousStructOrUnion()) {
79 cling::Interpreter::PushTransactionRAII RAII(
fInterp);
94 cling::Interpreter::PushTransactionRAII RAII(interp);
110 if (
auto *UD = llvm::dyn_cast<clang::UsingDecl>(
Iter()->getTargetDecl())) {
111 if (UD->shadow_size()) {
112 cling::Interpreter::PushTransactionRAII RAII(
fInterp);
127 const clang::Decl *D =
Get();
128 if (
auto *UD = llvm::dyn_cast<clang::UsingDecl>(D)) {
129 if (UD->shadow_size()) {
130 assert(!
fUsingDeclIter.IsValid() &&
"Expected UsingDecl to be already handled by UsingDeclIter!");
136 if (
auto *USD = llvm::dyn_cast<clang::UsingShadowDecl>(D)) {
139 }
else if (
auto *RTD = llvm::dyn_cast<clang::RedeclarableTemplateDecl>(D)) {
llvm::SmallVector< clang::DeclContext *, 2 > fContexts
bool AdvanceToFirstValidDecl()
Do not return inline namespaces etc.
cling::Interpreter * fInterp
bool IterNext()
Increment the iterator, possibly moving to the next context.
clang::DeclContext::decl_iterator fDeclIter
bool HandleInlineDeclContext()
Return true if fDeclIter has triggered an inline or anonymous namespace / ... to be appended to fCont...
std::stack< UsingDeclFrame > fUsingIterStack
Handle nested UsingDecls:
const clang::UsingDecl::shadow_iterator & End() const
cling::Interpreter * fInterp
clang::UsingDecl::shadow_iterator & Iter()
ClingMemberIterInternal::UsingDeclIter fUsingDeclIter
virtual const clang::Decl * Get() const
virtual bool ShouldSkip(const clang::Decl *D) const =0
const clang::Decl * fTemplateSpec
cling::Interpreter * fInterp
virtual clang::Decl * AdvanceUnfiltered()
virtual const clang::Decl * InstantiateTemplateWithDefaults(const clang::RedeclarableTemplateDecl *TD) const