A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://clang.llvm.org/doxygen/ASTMatchersInternal_8cpp_source.html below:

clang: lib/ASTMatchers/ASTMatchersInternal.cpp Source File

23#include "llvm/ADT/ArrayRef.h" 24#include "llvm/ADT/DenseSet.h" 25#include "llvm/ADT/IntrusiveRefCntPtr.h" 26#include "llvm/ADT/SmallString.h" 27#include "llvm/ADT/SmallVector.h" 28#include "llvm/ADT/StringRef.h" 29#include "llvm/Support/Casting.h" 30#include "llvm/Support/ErrorHandling.h" 31#include "llvm/Support/ManagedStatic.h" 32#include "llvm/Support/Regex.h" 33#include "llvm/Support/WithColor.h" 34#include "llvm/Support/raw_ostream.h" 44namespace

ast_matchers {

48 return

llvm::is_contained(Matches,

Node

.getSelector().getAsString());

54

ASTMatchFinder *Finder,

55

BoundNodesTreeBuilder *Builder,

59

ASTMatchFinder *Finder,

60

BoundNodesTreeBuilder *Builder,

64

ASTMatchFinder *Finder,

65

BoundNodesTreeBuilder *Builder,

69

ASTMatchFinder *Finder,

70

BoundNodesTreeBuilder *Builder,

74

ASTMatchFinder *Finder,

75

BoundNodesTreeBuilder *Builder,

79 const

Matcher<CXXBaseSpecifier> &BaseSpecMatcher,

80

ASTMatchFinder *Finder, BoundNodesTreeBuilder *Builder) {

81 if

(!

Node

.hasDefinition())

85

Paths.setOrigin(&

Node

);

87 const auto

basePredicate =

90

BoundNodesTreeBuilder

Result

(*Builder);

91 if

(BaseSpecMatcher.matches(*BaseSpec, Finder, &

Result

)) {

92

*Builder = std::move(

Result

);

98 return Node

.lookupInBases(basePredicate, Paths,

102void

BoundNodesTreeBuilder::visitMatches(Visitor *ResultVisitor) {

104 Bindings

.push_back(BoundNodesMap());

105 for

(BoundNodesMap &Binding :

Bindings

) {

106

ResultVisitor->visitMatch(

BoundNodes

(Binding));

112using

VariadicOperatorFunction =

bool

(*)(

113 const

DynTypedNode &DynNode, ASTMatchFinder *Finder,

114

BoundNodesTreeBuilder *Builder, ArrayRef<DynTypedMatcher> InnerMatchers);

116template

<VariadicOperatorFunction Func>

117class

VariadicMatcher :

public

DynMatcherInterface {

119

VariadicMatcher(std::vector<DynTypedMatcher> InnerMatchers)

120

: InnerMatchers(

std

::move(InnerMatchers)) {}

122 bool

dynMatches(

const

DynTypedNode &DynNode, ASTMatchFinder *Finder,

123

BoundNodesTreeBuilder *Builder)

const override

{

124 return Func

(DynNode, Finder, Builder, InnerMatchers);

128

std::vector<DynTypedMatcher> InnerMatchers;

131class

IdDynMatcher :

public

DynMatcherInterface {

133

IdDynMatcher(StringRef ID,

134

IntrusiveRefCntPtr<DynMatcherInterface> InnerMatcher)

135

:

ID

(

ID

), InnerMatcher(

std

::move(InnerMatcher)) {}

137 bool

dynMatches(

const

DynTypedNode &DynNode, ASTMatchFinder *Finder,

138

BoundNodesTreeBuilder *Builder)

const override

{

139 bool Result

= InnerMatcher->dynMatches(DynNode, Finder, Builder);

140 if

(

Result

) Builder->setBinding(ID, DynNode);

144

std::optional<clang::TraversalKind>

TraversalKind

()

const override

{

145 return

InnerMatcher->TraversalKind();

149 const

std::string

ID

;

150 const

IntrusiveRefCntPtr<DynMatcherInterface> InnerMatcher;

154class

TrueMatcherImpl :

public

DynMatcherInterface {

156

TrueMatcherImpl() =

default

;

158 bool

dynMatches(

const

DynTypedNode &, ASTMatchFinder *,

159

BoundNodesTreeBuilder *)

const override

{

168class

DynTraversalMatcherImpl :

public

DynMatcherInterface {

170 explicit

DynTraversalMatcherImpl(

172

IntrusiveRefCntPtr<DynMatcherInterface> InnerMatcher)

173

: TK(TK), InnerMatcher(

std

::move(InnerMatcher)) {}

175 bool

dynMatches(

const

DynTypedNode &DynNode, ASTMatchFinder *Finder,

176

BoundNodesTreeBuilder *Builder)

const override

{

177 return

this->InnerMatcher->dynMatches(DynNode, Finder, Builder);

180

std::optional<clang::TraversalKind>

TraversalKind

()

const override

{

186

IntrusiveRefCntPtr<DynMatcherInterface> InnerMatcher;

191bool

ASTMatchFinder::isTraversalIgnoringImplicitNodes()

const

{

192 return

getASTContext().getParentMapContext().getTraversalKind() ==

197

DynTypedMatcher::constructVariadic(DynTypedMatcher::VariadicOperator Op,

198

ASTNodeKind SupportedKind,

199

std::vector<DynTypedMatcher> InnerMatchers) {

200

assert(!InnerMatchers.empty() &&

"Array must not be empty."

);

201

assert(llvm::all_of(InnerMatchers,

202

[SupportedKind](

const

DynTypedMatcher &M) {

203 return

M.canConvertTo(SupportedKind);

205 "InnerMatchers must be convertible to SupportedKind!"

);

211 auto

RestrictKind = SupportedKind;

219 for

(

auto

&IM : InnerMatchers) {

223 return

DynTypedMatcher(

224

SupportedKind, RestrictKind,

225 new

VariadicMatcher<allOfVariadicOperator>(std::move(InnerMatchers)));

228 return

DynTypedMatcher(

229

SupportedKind, RestrictKind,

230 new

VariadicMatcher<anyOfVariadicOperator>(std::move(InnerMatchers)));

233 return

DynTypedMatcher(

234

SupportedKind, RestrictKind,

235 new

VariadicMatcher<eachOfVariadicOperator>(std::move(InnerMatchers)));

238 return

DynTypedMatcher(SupportedKind, RestrictKind,

239 new

VariadicMatcher<optionallyVariadicOperator>(

240

std::move(InnerMatchers)));

245 return

DynTypedMatcher(

246

SupportedKind, RestrictKind,

247 new

VariadicMatcher<notUnaryOperator>(std::move(InnerMatchers)));

249

llvm_unreachable(

"Invalid Op value."

);

253

DynTypedMatcher::constructRestrictedWrapper(

const

DynTypedMatcher &InnerMatcher,

254

ASTNodeKind RestrictKind) {

255

DynTypedMatcher

Copy

= InnerMatcher;

256 Copy

.RestrictKind = RestrictKind;

260

DynTypedMatcher DynTypedMatcher::withTraversalKind(

TraversalKind

TK) {

262 Copy

.Implementation =

263 new

DynTraversalMatcherImpl(TK, std::move(

Copy

.Implementation));

267

DynTypedMatcher DynTypedMatcher::trueMatcher(ASTNodeKind NodeKind) {

272 new

TrueMatcherImpl();

273 return

DynTypedMatcher(NodeKind, NodeKind, Instance);

276bool

DynTypedMatcher::canMatchNodesOfKind(ASTNodeKind

Kind

)

const

{

277 return

RestrictKind.isBaseOf(

Kind

);

280

DynTypedMatcher DynTypedMatcher::dynCastTo(

const

ASTNodeKind

Kind

)

const

{

287bool

DynTypedMatcher::matches(

const

DynTypedNode &DynNode,

288

ASTMatchFinder *Finder,

289

BoundNodesTreeBuilder *Builder)

const

{

290

TraversalKindScope RAII(Finder->getASTContext(),

291

Implementation->TraversalKind());

293 if

(Finder->isTraversalIgnoringImplicitNodes() &&

294

Finder->IsMatchingInASTNodeNotSpelledInSource())

297 if

(!Finder->isTraversalIgnoringImplicitNodes() &&

298

Finder->IsMatchingInASTNodeNotAsIs())

302

Finder->getASTContext().getParentMapContext().traverseIgnored(DynNode);

304 if

(RestrictKind.isBaseOf(N.getNodeKind()) &&

305

Implementation->dynMatches(N, Finder, Builder)) {

311

Builder->removeBindings([](

const

BoundNodesMap &) {

return true

; });

315bool

DynTypedMatcher::matchesNoKindCheck(

const

DynTypedNode &DynNode,

316

ASTMatchFinder *Finder,

317

BoundNodesTreeBuilder *Builder)

const

{

318

TraversalKindScope raii(Finder->getASTContext(),

319

Implementation->TraversalKind());

321 if

(Finder->isTraversalIgnoringImplicitNodes() &&

322

Finder->IsMatchingInASTNodeNotSpelledInSource())

325 if

(!Finder->isTraversalIgnoringImplicitNodes() &&

326

Finder->IsMatchingInASTNodeNotAsIs())

330

Finder->getASTContext().getParentMapContext().traverseIgnored(DynNode);

332

assert(RestrictKind.isBaseOf(N.getNodeKind()));

333 if

(Implementation->dynMatches(N, Finder, Builder)) {

339

Builder->removeBindings([](

const

BoundNodesMap &) {

return true

; });

343

std::optional<DynTypedMatcher> DynTypedMatcher::tryBind(StringRef

ID

)

const

{

348 new

IdDynMatcher(

ID

, std::move(

Result

.Implementation));

349 return

std::move(

Result

);

352bool

DynTypedMatcher::canConvertTo(ASTNodeKind To)

const

{

353 const auto

From = getSupportedKind();

354 auto

QualKind = ASTNodeKind::getFromNodeKind<QualType>();

355 auto

TypeKind = ASTNodeKind::getFromNodeKind<Type>();

358 if

(From.isSame(TypeKind) && To.isSame(QualKind))

return true

;

360 return

From.isBaseOf(To);

363void

BoundNodesTreeBuilder::addMatch(

const

BoundNodesTreeBuilder &

Other

) {

368

ASTMatchFinder *Finder,

369

BoundNodesTreeBuilder *Builder,

371 if

(InnerMatchers.size() != 1)

384

BoundNodesTreeBuilder Discard(*Builder);

385 return

!InnerMatchers[0].matches(DynNode, Finder, &Discard);

389

ASTMatchFinder *Finder,

390

BoundNodesTreeBuilder *Builder,

395 return

llvm::all_of(InnerMatchers, [&](

const

DynTypedMatcher &InnerMatcher) {

396 return

InnerMatcher.matchesNoKindCheck(DynNode, Finder, Builder);

401

ASTMatchFinder *Finder,

402

BoundNodesTreeBuilder *Builder,

404

BoundNodesTreeBuilder

Result

;

405 bool

Matched =

false

;

406 for

(

const

DynTypedMatcher &InnerMatcher : InnerMatchers) {

407

BoundNodesTreeBuilder BuilderInner(*Builder);

408 if

(InnerMatcher.matches(DynNode, Finder, &BuilderInner)) {

410 Result

.addMatch(BuilderInner);

413

*Builder = std::move(

Result

);

418

ASTMatchFinder *Finder,

419

BoundNodesTreeBuilder *Builder,

421 for

(

const

DynTypedMatcher &InnerMatcher : InnerMatchers) {

422

BoundNodesTreeBuilder

Result

= *Builder;

423 if

(InnerMatcher.matches(DynNode, Finder, &

Result

)) {

424

*Builder = std::move(

Result

);

433

BoundNodesTreeBuilder *Builder,

435 if

(InnerMatchers.size() != 1)

438

BoundNodesTreeBuilder

Result

(*Builder);

439 if

(InnerMatchers[0].matches(DynNode, Finder, &

Result

))

440

*Builder = std::move(

Result

);

446

std::vector<std::string> Names;

447

Names.reserve(NameRefs.size());

448 for

(

auto

*Name : NameRefs)

449

Names.emplace_back(*Name);

454 return

internal::Matcher<NamedDecl>(

467

HasOverloadOpNameMatcher

472

HasNameMatcher::HasNameMatcher(std::vector<std::string> N)

473

: UseUnqualifiedMatch(

474 llvm

::all_of(N, [](StringRef Name) {

return

!Name.contains(

"::"

); })),

475

Names(std::move(N)) {

477 for

(StringRef Name : Names)

478

assert(!Name.empty());

484 if

(!Name.ends_with(Suffix))

486

Name = Name.drop_back(Suffix.size());

488 if

(!Name.ends_with(

"::"

))

490

Name = Name.drop_back(2);

499 if

(

Node

.getIdentifier())

500 return Node

.getName();

502 if

(

Node

.getDeclName()) {

505

llvm::raw_svector_ostream OS(Scratch);

510 return "(anonymous)"

;

515 if

(

Node

.getIdentifier()) {

516 return Node

.getName();

519 return

(

"(anonymous "

+

Node

.getKindName() +

")"

).toStringRef(Scratch);

524 return Node

.isAnonymousNamespace() ?

"(anonymous namespace)"

:

Node

.getName();

532

Patterns.reserve(Names.size());

533 for

(StringRef Name : Names)

534

Patterns.push_back({Name, Name.starts_with(

"::"

)});

540 bool

consumeNameSuffix(StringRef NodeName,

bool

CanSkip) {

548 for

(

size_t

I = 0,

E

= Patterns.size(); I !=

E

; ++I) {

549

StringRef Pattern = Patterns[I].P;

550 if

(ast_matchers::internal::consumeNameSuffix(Patterns[I].

P

, NodeName))

551

Patterns.push_back({Pattern, Patterns[I].IsFullyQualified});

554

llvm::erase_if(Patterns, [&NodeName](

auto

&Pattern) {

559 return

!Patterns.empty();

565 bool

foundMatch(

bool

AllowFullyQualified)

const

{

566 return

llvm::any_of(Patterns, [&](

const

Pattern &Pattern) {

567 return

Pattern.P.empty() &&

568

(AllowFullyQualified || !Pattern.IsFullyQualified);

583bool

HasNameMatcher::matchesNodeUnqualified(

const

NamedDecl &

Node

)

const

{

584

assert(UseUnqualifiedMatch);

587 return

llvm::any_of(Names, [&](StringRef Name) {

592bool

HasNameMatcher::matchesNodeFullFast(

const

NamedDecl &

Node

)

const

{

593

PatternSet Patterns(Names);

610 const

DeclContext *Ctx =

Node

.getDeclContext();

612 if

(Ctx->isFunctionOrMethod())

613 return

Patterns.foundMatch(

false

);

615 for

(; Ctx; Ctx = Ctx->getParent()) {

618 if

(isa<LinkageSpecDecl>(Ctx))

620 if

(!isa<NamedDecl>(Ctx))

622 if

(Patterns.foundMatch(

false

))

625 if

(

const auto

*ND = dyn_cast<NamespaceDecl>(Ctx)) {

627 if

(Patterns.consumeNameSuffix(

getNodeName

(*ND, Scratch),

628

ND->isAnonymousNamespace() ||

633 if

(

const auto

*RD = dyn_cast<RecordDecl>(Ctx)) {

634 if

(!isa<ClassTemplateSpecializationDecl>(Ctx)) {

635 if

(Patterns.consumeNameSuffix(

getNodeName

(*RD, Scratch),

645 return

matchesNodeFullSlow(

Node

);

648 return

Patterns.foundMatch(

true

);

651bool

HasNameMatcher::matchesNodeFullSlow(

const

NamedDecl &

Node

)

const

{

652 const bool

SkipUnwrittenCases[] = {

false

,

true

};

653 for

(

bool

SkipUnwritten : SkipUnwrittenCases) {

655

llvm::raw_svector_ostream OS(NodeName);

657

PrintingPolicy Policy =

Node

.getASTContext().getPrintingPolicy();

658

Policy.SuppressUnwrittenScope = SkipUnwritten;

659

Policy.SuppressInlineNamespace =

662 Node

.printQualifiedName(OS, Policy);

664 const

StringRef

FullName

= OS.str();

666 for

(

const

StringRef Pattern : Names) {

667 if

(Pattern.starts_with(

"::"

)) {

670

}

else if

(

FullName

.ends_with(Pattern) &&

671 FullName

.drop_back(Pattern.size()).ends_with(

"::"

)) {

680bool

HasNameMatcher::matchesNode(

const

NamedDecl &

Node

)

const

{

681

assert(matchesNodeFullFast(

Node

) == matchesNodeFullSlow(

Node

));

682 if

(UseUnqualifiedMatch) {

683

assert(matchesNodeUnqualified(

Node

) == matchesNodeFullFast(

Node

));

684 return

matchesNodeUnqualified(

Node

);

686 return

matchesNodeFullFast(

Node

);

703

llvm::DenseSet<SourceLocation> &CheckedLocations) {

704 auto

&

SM

= Context.getSourceManager();

705 const LangOptions

&LangOpts = Context.getLangOpts();

706 while

(

Loc

.isMacroID()) {

707 if

(CheckedLocations.count(

Loc

))

709

CheckedLocations.insert(

Loc

);

711 SM

.getSLocEntry(

SM

.getFileID(

Loc

)).getExpansion();

715 if

(std::optional<SourceLocation> ArgLoc =

718

Context, CheckedLocations)) {

729

std::optional<SourceLocation>

732

llvm::DenseSet<SourceLocation> CheckedLocations;

738

llvm::Regex::RegexFlags Flags,

740

assert(!Regex.empty() &&

"Empty regex string"

);

741 auto

SharedRegex = std::make_shared<llvm::Regex>(Regex, Flags);

743 if

(!SharedRegex->isValid(Error)) {

744

llvm::WithColor::error()

745

<<

"building matcher '"

<<

MatcherID

<<

"': "

<< Error <<

"\n"

;

746

llvm::WithColor::note() <<

" input was '"

<< Regex <<

"'\n"

;

752const

internal::VariadicDynCastAllOfMatcher<Stmt, ObjCAutoreleasePoolStmt>

754const

internal::VariadicDynCastAllOfMatcher<Decl, TranslationUnitDecl>

756const

internal::VariadicDynCastAllOfMatcher<Decl, TypedefDecl>

typedefDecl

;

757const

internal::VariadicDynCastAllOfMatcher<Decl, TypedefNameDecl>

759const

internal::VariadicDynCastAllOfMatcher<Decl, TypeAliasDecl>

typeAliasDecl

;

760const

internal::VariadicDynCastAllOfMatcher<Decl, TypeAliasTemplateDecl>

762const

internal::VariadicAllOfMatcher<Decl>

decl

;

764const

internal::VariadicDynCastAllOfMatcher<Decl, BindingDecl>

bindingDecl

;

765const

internal::VariadicDynCastAllOfMatcher<Decl, LinkageSpecDecl>

767const

internal::VariadicDynCastAllOfMatcher<Decl, NamedDecl>

namedDecl

;

768const

internal::VariadicDynCastAllOfMatcher<Decl, LabelDecl>

labelDecl

;

769const

internal::VariadicDynCastAllOfMatcher<Decl, NamespaceDecl>

namespaceDecl

;

770const

internal::VariadicDynCastAllOfMatcher<Decl, NamespaceAliasDecl>

772const

internal::VariadicDynCastAllOfMatcher<Decl, RecordDecl>

recordDecl

;

773const

internal::VariadicDynCastAllOfMatcher<Decl, CXXRecordDecl>

cxxRecordDecl

;

774const

internal::VariadicDynCastAllOfMatcher<Decl, ClassTemplateDecl>

776const

internal::VariadicDynCastAllOfMatcher<

Decl

,

779const

internal::VariadicDynCastAllOfMatcher<

782const

internal::VariadicDynCastAllOfMatcher<Decl, DeclaratorDecl>

784const

internal::VariadicDynCastAllOfMatcher<Decl, ParmVarDecl>

parmVarDecl

;

785const

internal::VariadicDynCastAllOfMatcher<Decl, AccessSpecDecl>

792const

internal::VariadicDynCastAllOfMatcher<Decl, NonTypeTemplateParmDecl>

794const

internal::VariadicDynCastAllOfMatcher<Decl, TemplateTypeParmDecl>

796const

internal::VariadicDynCastAllOfMatcher<Decl, TemplateTemplateParmDecl>

800const

internal::VariadicAllOfMatcher<QualType>

qualType

;

801const

internal::VariadicAllOfMatcher<Type>

type

;

802const

internal::VariadicAllOfMatcher<TypeLoc>

typeLoc

;

804const

internal::VariadicDynCastAllOfMatcher<TypeLoc, QualifiedTypeLoc>

806const

internal::VariadicDynCastAllOfMatcher<TypeLoc, PointerTypeLoc>

808const

internal::VariadicDynCastAllOfMatcher<TypeLoc, ReferenceTypeLoc>

810const

internal::VariadicDynCastAllOfMatcher<

TypeLoc

,

813const

internal::VariadicDynCastAllOfMatcher<TypeLoc, ElaboratedTypeLoc>

816const

internal::VariadicDynCastAllOfMatcher<Stmt, UnaryExprOrTypeTraitExpr>

818const

internal::VariadicDynCastAllOfMatcher<Decl, ExportDecl>

exportDecl

;

819const

internal::VariadicDynCastAllOfMatcher<Decl, ValueDecl>

valueDecl

;

820const

internal::VariadicDynCastAllOfMatcher<Decl, CXXConstructorDecl>

822const

internal::VariadicDynCastAllOfMatcher<Decl, CXXDestructorDecl>

824const

internal::VariadicDynCastAllOfMatcher<Decl, EnumDecl>

enumDecl

;

825const

internal::VariadicDynCastAllOfMatcher<Decl, EnumConstantDecl>

827const

internal::VariadicDynCastAllOfMatcher<Decl, TagDecl>

tagDecl

;

828const

internal::VariadicDynCastAllOfMatcher<Decl, CXXMethodDecl>

cxxMethodDecl

;

829const

internal::VariadicDynCastAllOfMatcher<Decl, CXXConversionDecl>

831const

internal::VariadicDynCastAllOfMatcher<Decl, ConceptDecl>

conceptDecl

;

832const

internal::VariadicDynCastAllOfMatcher<Decl, VarDecl>

varDecl

;

833const

internal::VariadicDynCastAllOfMatcher<Decl, FieldDecl>

fieldDecl

;

834const

internal::VariadicDynCastAllOfMatcher<Decl, IndirectFieldDecl>

836const

internal::VariadicDynCastAllOfMatcher<Decl, FunctionDecl>

functionDecl

;

837const

internal::VariadicDynCastAllOfMatcher<Decl, FunctionTemplateDecl>

839const

internal::VariadicDynCastAllOfMatcher<Decl, FriendDecl>

friendDecl

;

840const

internal::VariadicAllOfMatcher<Stmt>

stmt

;

841const

internal::VariadicDynCastAllOfMatcher<Stmt, DeclStmt>

declStmt

;

842const

internal::VariadicDynCastAllOfMatcher<Stmt, MemberExpr>

memberExpr

;

843const

internal::VariadicDynCastAllOfMatcher<Stmt, UnresolvedMemberExpr>

845const

internal::VariadicDynCastAllOfMatcher<Stmt, CXXDependentScopeMemberExpr>

847const

internal::VariadicDynCastAllOfMatcher<Stmt, CallExpr>

callExpr

;

848const

internal::VariadicDynCastAllOfMatcher<Stmt, LambdaExpr>

lambdaExpr

;

849const

internal::VariadicDynCastAllOfMatcher<Stmt, CXXMemberCallExpr>

851const

internal::VariadicDynCastAllOfMatcher<Stmt, ObjCMessageExpr>

853const

internal::VariadicDynCastAllOfMatcher<Decl, ObjCInterfaceDecl>

855const

internal::VariadicDynCastAllOfMatcher<Decl, ObjCImplementationDecl>

857const

internal::VariadicDynCastAllOfMatcher<Decl, ObjCProtocolDecl>

859const

internal::VariadicDynCastAllOfMatcher<Decl, ObjCCategoryDecl>

861const

internal::VariadicDynCastAllOfMatcher<Decl, ObjCCategoryImplDecl>

863const

internal::VariadicDynCastAllOfMatcher<Decl, ObjCMethodDecl>

865const

internal::VariadicDynCastAllOfMatcher<Decl, BlockDecl>

867const

internal::VariadicDynCastAllOfMatcher<Decl, ObjCIvarDecl>

objcIvarDecl

;

868const

internal::VariadicDynCastAllOfMatcher<Decl, ObjCPropertyDecl>

870const

internal::VariadicDynCastAllOfMatcher<Stmt, ObjCAtThrowStmt>

872const

internal::VariadicDynCastAllOfMatcher<Stmt, ObjCAtTryStmt>

objcTryStmt

;

873const

internal::VariadicDynCastAllOfMatcher<Stmt, ObjCAtCatchStmt>

875const

internal::VariadicDynCastAllOfMatcher<Stmt, ObjCAtFinallyStmt>

877const

internal::VariadicDynCastAllOfMatcher<Stmt, ExprWithCleanups>

879const

internal::VariadicDynCastAllOfMatcher<Stmt, InitListExpr>

initListExpr

;

880const

internal::VariadicDynCastAllOfMatcher<Stmt, CXXStdInitializerListExpr>

882const

internal::VariadicDynCastAllOfMatcher<Stmt, ImplicitValueInitExpr>

884const

internal::VariadicDynCastAllOfMatcher<Stmt, ParenListExpr>

parenListExpr

;

885const

internal::VariadicDynCastAllOfMatcher<Stmt, SubstNonTypeTemplateParmExpr>

887const

internal::VariadicDynCastAllOfMatcher<Decl, UsingDecl>

usingDecl

;

888const

internal::VariadicDynCastAllOfMatcher<Decl, UsingEnumDecl>

usingEnumDecl

;

889const

internal::VariadicDynCastAllOfMatcher<Decl, UsingDirectiveDecl>

891const

internal::VariadicDynCastAllOfMatcher<Stmt, UnresolvedLookupExpr>

893const

internal::VariadicDynCastAllOfMatcher<Decl, UnresolvedUsingValueDecl>

895const

internal::VariadicDynCastAllOfMatcher<Decl, UnresolvedUsingTypenameDecl>

897const

internal::VariadicDynCastAllOfMatcher<Stmt, ConstantExpr>

constantExpr

;

898const

internal::VariadicDynCastAllOfMatcher<Stmt, ParenExpr>

parenExpr

;

899const

internal::VariadicDynCastAllOfMatcher<Stmt, CXXConstructExpr>

901const

internal::VariadicDynCastAllOfMatcher<Stmt, CXXUnresolvedConstructExpr>

903const

internal::VariadicDynCastAllOfMatcher<Stmt, CXXThisExpr>

cxxThisExpr

;

904const

internal::VariadicDynCastAllOfMatcher<Stmt, CXXBindTemporaryExpr>

906const

internal::VariadicDynCastAllOfMatcher<Stmt, MaterializeTemporaryExpr>

908const

internal::VariadicDynCastAllOfMatcher<Stmt, CXXNewExpr>

cxxNewExpr

;

909const

internal::VariadicDynCastAllOfMatcher<Stmt, CXXDeleteExpr>

cxxDeleteExpr

;

910const

internal::VariadicDynCastAllOfMatcher<Stmt, CXXNoexceptExpr>

912const

internal::VariadicDynCastAllOfMatcher<Stmt, ArraySubscriptExpr>

914const

internal::VariadicDynCastAllOfMatcher<Stmt, ArrayInitIndexExpr>

916const

internal::VariadicDynCastAllOfMatcher<Stmt, ArrayInitLoopExpr>

918const

internal::VariadicDynCastAllOfMatcher<Stmt, CXXDefaultArgExpr>

920const

internal::VariadicDynCastAllOfMatcher<Stmt, CXXOperatorCallExpr>

922const

internal::VariadicDynCastAllOfMatcher<Stmt, CXXRewrittenBinaryOperator>

924const

internal::VariadicDynCastAllOfMatcher<Stmt, CXXFoldExpr>

cxxFoldExpr

;

925const

internal::VariadicDynCastAllOfMatcher<Stmt, Expr>

expr

;

926const

internal::VariadicDynCastAllOfMatcher<Stmt, DeclRefExpr>

declRefExpr

;

927const

internal::VariadicDynCastAllOfMatcher<Stmt, DependentScopeDeclRefExpr>

930const

internal::VariadicDynCastAllOfMatcher<Stmt, BlockExpr>

blockExpr

;

931const

internal::VariadicDynCastAllOfMatcher<Stmt, IfStmt>

ifStmt

;

932const

internal::VariadicDynCastAllOfMatcher<Stmt, ForStmt>

forStmt

;

933const

internal::VariadicDynCastAllOfMatcher<Stmt, CXXForRangeStmt>

935const

internal::VariadicDynCastAllOfMatcher<Stmt, WhileStmt>

whileStmt

;

936const

internal::VariadicDynCastAllOfMatcher<Stmt, DoStmt>

doStmt

;

937const

internal::VariadicDynCastAllOfMatcher<Stmt, BreakStmt>

breakStmt

;

938const

internal::VariadicDynCastAllOfMatcher<Stmt, ContinueStmt>

continueStmt

;

939const

internal::VariadicDynCastAllOfMatcher<Stmt, CoreturnStmt>

coreturnStmt

;

940const

internal::VariadicDynCastAllOfMatcher<Stmt, ReturnStmt>

returnStmt

;

941const

internal::VariadicDynCastAllOfMatcher<Stmt, GotoStmt>

gotoStmt

;

942const

internal::VariadicDynCastAllOfMatcher<Stmt, LabelStmt>

labelStmt

;

943const

internal::VariadicDynCastAllOfMatcher<Stmt, AddrLabelExpr>

addrLabelExpr

;

944const

internal::VariadicDynCastAllOfMatcher<Stmt, SwitchStmt>

switchStmt

;

945const

internal::VariadicDynCastAllOfMatcher<Stmt, SwitchCase>

switchCase

;

946const

internal::VariadicDynCastAllOfMatcher<Stmt, CaseStmt>

caseStmt

;

947const

internal::VariadicDynCastAllOfMatcher<Stmt, DefaultStmt>

defaultStmt

;

948const

internal::VariadicDynCastAllOfMatcher<Stmt, CompoundStmt>

compoundStmt

;

949const

internal::VariadicDynCastAllOfMatcher<Stmt, CoroutineBodyStmt>

951const

internal::VariadicDynCastAllOfMatcher<Stmt, CXXCatchStmt>

cxxCatchStmt

;

952const

internal::VariadicDynCastAllOfMatcher<Stmt, CXXTryStmt>

cxxTryStmt

;

953const

internal::VariadicDynCastAllOfMatcher<Stmt, CXXThrowExpr>

cxxThrowExpr

;

954const

internal::VariadicDynCastAllOfMatcher<Stmt, NullStmt>

nullStmt

;

955const

internal::VariadicDynCastAllOfMatcher<Stmt, AsmStmt>

asmStmt

;

956const

internal::VariadicDynCastAllOfMatcher<Stmt, CXXBoolLiteralExpr>

958const

internal::VariadicDynCastAllOfMatcher<Stmt, StringLiteral>

stringLiteral

;

960const

internal::VariadicDynCastAllOfMatcher<Stmt, CharacterLiteral>

962const

internal::VariadicDynCastAllOfMatcher<Stmt, IntegerLiteral>

964const

internal::VariadicDynCastAllOfMatcher<Stmt, FloatingLiteral>

floatLiteral

;

966const

internal::VariadicDynCastAllOfMatcher<Stmt, FixedPointLiteral>

968const

internal::VariadicDynCastAllOfMatcher<Stmt, UserDefinedLiteral>

970const

internal::VariadicDynCastAllOfMatcher<Stmt, CompoundLiteralExpr>

972const

internal::VariadicDynCastAllOfMatcher<Stmt, CXXNullPtrLiteralExpr>

974const

internal::VariadicDynCastAllOfMatcher<Stmt, ChooseExpr>

chooseExpr

;

975const

internal::VariadicDynCastAllOfMatcher<Stmt, ConvertVectorExpr>

977const

internal::VariadicDynCastAllOfMatcher<Stmt, CoawaitExpr>

979const

internal::VariadicDynCastAllOfMatcher<Stmt, DependentCoawaitExpr>

981const

internal::VariadicDynCastAllOfMatcher<Stmt, CoyieldExpr>

983const

internal::VariadicDynCastAllOfMatcher<Stmt, GNUNullExpr>

gnuNullExpr

;

984const

internal::VariadicDynCastAllOfMatcher<Stmt, GenericSelectionExpr>

986const

internal::VariadicDynCastAllOfMatcher<Stmt, AtomicExpr>

atomicExpr

;

987const

internal::VariadicDynCastAllOfMatcher<Stmt, StmtExpr>

stmtExpr

;

988const

internal::VariadicDynCastAllOfMatcher<Stmt, BinaryOperator>

993const

internal::MapAnyOfMatcher<CallExpr, CXXConstructExpr>

invocation

;

994const

internal::VariadicDynCastAllOfMatcher<Stmt, UnaryOperator>

unaryOperator

;

995const

internal::VariadicDynCastAllOfMatcher<Stmt, ConditionalOperator>

997const

internal::VariadicDynCastAllOfMatcher<Stmt, BinaryConditionalOperator>

999const

internal::VariadicDynCastAllOfMatcher<Stmt, OpaqueValueExpr>

1001const

internal::VariadicDynCastAllOfMatcher<Decl, StaticAssertDecl>

1003const

internal::VariadicDynCastAllOfMatcher<Stmt, CXXReinterpretCastExpr>

1005const

internal::VariadicDynCastAllOfMatcher<Stmt, CXXStaticCastExpr>

1007const

internal::VariadicDynCastAllOfMatcher<Stmt, CXXDynamicCastExpr>

1009const

internal::VariadicDynCastAllOfMatcher<Stmt, CXXConstCastExpr>

1011const

internal::VariadicDynCastAllOfMatcher<Stmt, CStyleCastExpr>

1013const

internal::VariadicDynCastAllOfMatcher<Stmt, ExplicitCastExpr>

1015const

internal::VariadicDynCastAllOfMatcher<Stmt, ImplicitCastExpr>

1017const

internal::VariadicDynCastAllOfMatcher<Stmt, CastExpr>

castExpr

;

1018const

internal::VariadicDynCastAllOfMatcher<Stmt, CXXFunctionalCastExpr>

1020const

internal::VariadicDynCastAllOfMatcher<Stmt, CXXTemporaryObjectExpr>

1022const

internal::VariadicDynCastAllOfMatcher<Stmt, PredefinedExpr>

1024const

internal::VariadicDynCastAllOfMatcher<Stmt, DesignatedInitExpr>

1026const

internal::VariadicOperatorMatcherFunc<

1027

2, std::numeric_limits<unsigned>::max()>

1028 eachOf

= {internal::DynTypedMatcher::VO_EachOf};

1029const

internal::VariadicOperatorMatcherFunc<

1030

2, std::numeric_limits<unsigned>::max()>

1031 anyOf

= {internal::DynTypedMatcher::VO_AnyOf};

1032const

internal::VariadicOperatorMatcherFunc<

1033

2, std::numeric_limits<unsigned>::max()>

1034 allOf

= {internal::DynTypedMatcher::VO_AllOf};

1036

internal::DynTypedMatcher::VO_Optionally};

1037const

internal::VariadicFunction<internal::Matcher<NamedDecl>, StringRef,

1038

internal::hasAnyNameFunc>

1041const

internal::VariadicFunction<internal::HasOpNameMatcher, StringRef,

1042

internal::hasAnyOperatorNameFunc>

1044const

internal::VariadicFunction<internal::HasOverloadOpNameMatcher, StringRef,

1045

internal::hasAnyOverloadedOperatorNameFunc>

1047const

internal::VariadicFunction<internal::Matcher<ObjCMessageExpr>, StringRef,

1048

internal::hasAnySelectorFunc>

1050const

internal::ArgumentAdaptingMatcherFunc<internal::HasMatcher>

has

= {};

1051const

internal::ArgumentAdaptingMatcherFunc<internal::HasDescendantMatcher>

1053const

internal::ArgumentAdaptingMatcherFunc<internal::ForEachMatcher>

forEach

=

1055const

internal::ArgumentAdaptingMatcherFunc<internal::ForEachDescendantMatcher>

1057const

internal::ArgumentAdaptingMatcherFunc<

1058

internal::HasParentMatcher,

1059

internal::TypeList<Decl, NestedNameSpecifierLoc, Stmt, TypeLoc, Attr>,

1060

internal::TypeList<Decl, NestedNameSpecifierLoc, Stmt, TypeLoc, Attr>>

1062const

internal::ArgumentAdaptingMatcherFunc<

1063

internal::HasAncestorMatcher,

1064

internal::TypeList<Decl, NestedNameSpecifierLoc, Stmt, TypeLoc, Attr>,

1065

internal::TypeList<Decl, NestedNameSpecifierLoc, Stmt, TypeLoc, Attr>>

1067const

internal::VariadicOperatorMatcherFunc<1, 1>

unless

= {

1068

internal::DynTypedMatcher::VO_UnaryNot};

1070const

internal::VariadicAllOfMatcher<NestedNameSpecifierLoc>

1072const

internal::VariadicAllOfMatcher<Attr>

attr

;

1073const

internal::VariadicDynCastAllOfMatcher<Stmt, CUDAKernelCallExpr>

1125const

internal::VariadicDynCastAllOfMatcher<Stmt, OMPExecutableDirective>

1127const

internal::VariadicDynCastAllOfMatcher<OMPClause, OMPDefaultClause>

1129const

internal::VariadicDynCastAllOfMatcher<Decl, CXXDeductionGuideDecl>

Defines the clang::ASTContext interface.

DynTypedMatcher::MatcherIDType MatcherID

#define AST_POLYMORPHIC_SUPPORTED_TYPES(...)

Construct a type-list to be passed to the AST_POLYMORPHIC_MATCHER* macros.

#define AST_TYPELOC_TRAVERSE_MATCHER_DEF(MatcherName, ReturnTypesF)

#define AST_MATCHER_P(Type, DefineMatcher, ParamType, Param)

AST_MATCHER_P(Type, DefineMatcher, ParamType, Param) { ... } defines a single-parameter function name...

enum clang::sema::@1704::IndirectLocalPathEntry::EntryKind Kind

Defines the C++ template declaration subclasses.

Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified.

Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...

static ASTNodeKind getMostDerivedType(ASTNodeKind Kind1, ASTNodeKind Kind2)

Return the most derived type between Kind1 and Kind2.

Represents an array type, per C99 6.7.5.2 - Array Declarators.

A builtin binary operation expression such as "x + y" or "x <= y".

Represents a path from a specific derived class (which is not represented as part of the path) to a p...

BasePaths - Represents the set of paths from a derived class to one of its (direct or indirect) bases...

Represents a base class of a C++ class.

A call to an overloaded operator written using operator syntax.

Represents a C++ struct/union/class.

A rewritten comparison expression that was originally written using operator syntax.

Represents a class template specialization, which refers to a class template with a given set of temp...

Complex values, per C99 6.2.5p11.

Decl - This represents one declaration (or definition), e.g.

A dynamically typed AST node container.

Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...

static unsigned getSpelling(const Token &Tok, const char *&Buffer, const SourceManager &SourceMgr, const LangOptions &LangOpts, bool *Invalid=nullptr)

getSpelling - This method is used to get the spelling of a token into a preallocated buffer,...

A pointer to member type per C++ 8.3.3 - Pointers to members.

This represents a decl that may have a name.

Represent a C++ namespace.

An expression that sends a message to the given Objective-C object or class.

Represents a pointer to an Objective C object.

PointerType - C99 6.7.5.1 - Pointer Declarators.

Represents a struct/union/class.

Base for LValueReferenceType and RValueReferenceType.

Encodes a location in the source.

This class handles loading and caching of source files into memory.

Each ExpansionInfo encodes the expansion location - where the token was ultimately expanded,...

SourceLocation getExpansionLocStart() const

SourceLocation getSpellingLoc() const

bool isMacroArgExpansion() const

Base wrapper for a particular "section" of type source info.

Maps string IDs to AST nodes matched by parts of a matcher.

HasOverloadOpNameMatcher hasAnyOverloadedOperatorNameFunc(ArrayRef< const StringRef * > NameRefs)

static std::vector< std::string > vectorFromRefs(ArrayRef< const StringRef * > NameRefs)

std::shared_ptr< llvm::Regex > createAndVerifyRegex(StringRef Regex, llvm::Regex::RegexFlags Flags, StringRef MatcherID)

Matcher< ObjCMessageExpr > hasAnySelectorFunc(ArrayRef< const StringRef * > NameRefs)

static bool eachOfVariadicOperator(const DynTypedNode &DynNode, ASTMatchFinder *Finder, BoundNodesTreeBuilder *Builder, ArrayRef< DynTypedMatcher > InnerMatchers)

static bool isTokenAtLoc(const SourceManager &SM, const LangOptions &LangOpts, StringRef Text, SourceLocation Loc)

static StringRef getNodeName(const NamedDecl &Node, llvm::SmallString< 128 > &Scratch)

static bool anyOfVariadicOperator(const DynTypedNode &DynNode, ASTMatchFinder *Finder, BoundNodesTreeBuilder *Builder, ArrayRef< DynTypedMatcher > InnerMatchers)

static bool optionallyVariadicOperator(const DynTypedNode &DynNode, ASTMatchFinder *Finder, BoundNodesTreeBuilder *Builder, ArrayRef< DynTypedMatcher > InnerMatchers)

Matcher< NamedDecl > hasAnyNameFunc(ArrayRef< const StringRef * > NameRefs)

HasOpNameMatcher hasAnyOperatorNameFunc(ArrayRef< const StringRef * > NameRefs)

static bool notUnaryOperator(const DynTypedNode &DynNode, ASTMatchFinder *Finder, BoundNodesTreeBuilder *Builder, ArrayRef< DynTypedMatcher > InnerMatchers)

std::optional< SourceLocation > getExpansionLocOfMacro(StringRef MacroName, SourceLocation Loc, const ASTContext &Context)

static bool consumeNameSuffix(StringRef &FullName, StringRef Suffix)

bool matchesAnyBase(const CXXRecordDecl &Node, const Matcher< CXXBaseSpecifier > &BaseSpecMatcher, ASTMatchFinder *Finder, BoundNodesTreeBuilder *Builder)

static std::optional< SourceLocation > getExpansionLocOfMacroRecursive(StringRef MacroName, SourceLocation Loc, const ASTContext &Context, llvm::DenseSet< SourceLocation > &CheckedLocations)

static bool allOfVariadicOperator(const DynTypedNode &DynNode, ASTMatchFinder *Finder, BoundNodesTreeBuilder *Builder, ArrayRef< DynTypedMatcher > InnerMatchers)

const internal::VariadicDynCastAllOfMatcher< Stmt, FixedPointLiteral > fixedPointLiteral

Matches fixed point literals.

const internal::VariadicDynCastAllOfMatcher< Stmt, CStyleCastExpr > cStyleCastExpr

Matches a C-style cast expression.

const internal::VariadicDynCastAllOfMatcher< Decl, TagDecl > tagDecl

Matches tag declarations.

const internal::VariadicDynCastAllOfMatcher< Stmt, CXXReinterpretCastExpr > cxxReinterpretCastExpr

Matches a reinterpret_cast expression.

const internal::VariadicDynCastAllOfMatcher< Decl, VarDecl > varDecl

Matches variable declarations.

const internal::VariadicDynCastAllOfMatcher< TypeLoc, ElaboratedTypeLoc > elaboratedTypeLoc

Matches C or C++ elaborated TypeLocs.

const internal::VariadicDynCastAllOfMatcher< Stmt, StmtExpr > stmtExpr

Matches statement expression (GNU extension).

const internal::VariadicDynCastAllOfMatcher< Stmt, ExprWithCleanups > exprWithCleanups

Matches expressions that introduce cleanups to be run at the end of the sub-expression's evaluation.

const internal::VariadicDynCastAllOfMatcher< Stmt, DeclRefExpr > declRefExpr

Matches expressions that refer to declarations.

const internal::VariadicDynCastAllOfMatcher< Decl, TypedefNameDecl > typedefNameDecl

Matches typedef name declarations.

const internal::VariadicDynCastAllOfMatcher< Decl, ObjCIvarDecl > objcIvarDecl

Matches Objective-C instance variable declarations.

const AstTypeMatcher< EnumType > enumType

Matches enum types.

const AstTypeMatcher< FunctionProtoType > functionProtoType

Matches FunctionProtoType nodes.

const AstTypeMatcher< ElaboratedType > elaboratedType

Matches types specified with an elaborated type keyword or with a qualified name.

const internal::VariadicDynCastAllOfMatcher< Decl, TypeAliasDecl > typeAliasDecl

Matches type alias declarations.

const internal::VariadicDynCastAllOfMatcher< Decl, UsingEnumDecl > usingEnumDecl

Matches using-enum declarations.

const AstTypeMatcher< ObjCObjectPointerType > objcObjectPointerType

Matches an Objective-C object pointer type, which is different from a pointer type,...

const internal::VariadicDynCastAllOfMatcher< Stmt, ConstantExpr > constantExpr

Matches a constant expression wrapper.

const internal::VariadicDynCastAllOfMatcher< Stmt, ArrayInitLoopExpr > arrayInitLoopExpr

Matches a loop initializing the elements of an array in a number of contexts:

const internal::VariadicDynCastAllOfMatcher< Stmt, ObjCIvarRefExpr > objcIvarRefExpr

Matches a reference to an ObjCIvar.

const AstTypeMatcher< BuiltinType > builtinType

Matches builtin Types.

const internal::VariadicOperatorMatcherFunc< 1, 1 > unless

Matches if the provided matcher does not match.

const internal::VariadicDynCastAllOfMatcher< Decl, ConceptDecl > conceptDecl

Matches concept declarations.

const internal::VariadicDynCastAllOfMatcher< Stmt, CoyieldExpr > coyieldExpr

Matches co_yield expressions.

const AstTypeMatcher< DependentSizedExtVectorType > dependentSizedExtVectorType

Matches C++ extended vector type where either the type or size is dependent.

const internal::VariadicDynCastAllOfMatcher< Stmt, CXXDeleteExpr > cxxDeleteExpr

Matches delete expressions.

const internal::VariadicAllOfMatcher< TemplateName > templateName

Matches template name.

const internal::VariadicDynCastAllOfMatcher< Decl, ObjCProtocolDecl > objcProtocolDecl

Matches Objective-C protocol declarations.

const AstTypeMatcher< DependentTemplateSpecializationType > dependentTemplateSpecializationType

Matches a dependent template specialization type.

const internal::VariadicDynCastAllOfMatcher< Stmt, ImplicitCastExpr > implicitCastExpr

Matches the implicit cast nodes of Clang's AST.

const internal::VariadicOperatorMatcherFunc< 1, 1 > optionally

Matches any node regardless of the submatcher.

const internal::VariadicDynCastAllOfMatcher< Decl, UsingDecl > usingDecl

Matches using declarations.

const internal::ArgumentAdaptingMatcherFunc< internal::HasDescendantMatcher > hasDescendant

Matches AST nodes that have descendant AST nodes that match the provided matcher.

const internal::VariadicDynCastAllOfMatcher< Decl, ObjCPropertyDecl > objcPropertyDecl

Matches Objective-C property declarations.

const internal::VariadicDynCastAllOfMatcher< Stmt, StringLiteral > stringLiteral

Matches string literals (also matches wide string literals).

const internal::VariadicAllOfMatcher< CXXCtorInitializer > cxxCtorInitializer

Matches constructor initializers.

const internal::VariadicDynCastAllOfMatcher< Stmt, ObjCAtFinallyStmt > objcFinallyStmt

Matches Objective-C @finally statements.

const AstTypeMatcher< DependentSizedArrayType > dependentSizedArrayType

Matches C++ arrays whose size is a value-dependent expression.

const AstTypeMatcher< TemplateSpecializationType > templateSpecializationType

Matches template specialization types.

const internal::VariadicDynCastAllOfMatcher< Stmt, AtomicExpr > atomicExpr

Matches atomic builtins.

const AstTypeMatcher< DeducedTemplateSpecializationType > deducedTemplateSpecializationType

Matches C++17 deduced template specialization types, e.g.

const internal::VariadicDynCastAllOfMatcher< Stmt, CoawaitExpr > coawaitExpr

Matches co_await expressions.

const internal::VariadicDynCastAllOfMatcher< Decl, EnumDecl > enumDecl

Matches enum declarations.

const internal::VariadicDynCastAllOfMatcher< Stmt, ConvertVectorExpr > convertVectorExpr

Matches builtin function __builtin_convertvector.

const internal::VariadicDynCastAllOfMatcher< Stmt, AddrLabelExpr > addrLabelExpr

Matches address of label statements (GNU extension).

const internal::VariadicDynCastAllOfMatcher< Stmt, CXXDependentScopeMemberExpr > cxxDependentScopeMemberExpr

Matches member expressions where the actual member referenced could not be resolved because the base ...

const internal::VariadicDynCastAllOfMatcher< Stmt, PredefinedExpr > predefinedExpr

Matches predefined identifier expressions [C99 6.4.2.2].

const internal::VariadicAllOfMatcher< NestedNameSpecifier > nestedNameSpecifier

Matches nested name specifiers.

const AstTypeMatcher< PointerType > pointerType

Matches pointer types, but does not match Objective-C object pointer types.

const internal::VariadicDynCastAllOfMatcher< Stmt, DependentCoawaitExpr > dependentCoawaitExpr

Matches co_await expressions where the type of the promise is dependent.

const internal::VariadicDynCastAllOfMatcher< Stmt, BreakStmt > breakStmt

Matches break statements.

const internal::VariadicDynCastAllOfMatcher< Decl, BindingDecl > bindingDecl

Matches binding declarations Example matches foo and bar (matcher = bindingDecl()

const internal::VariadicDynCastAllOfMatcher< Stmt, UnresolvedLookupExpr > unresolvedLookupExpr

Matches reference to a name that can be looked up during parsing but could not be resolved to a speci...

const internal::VariadicDynCastAllOfMatcher< Stmt, OMPExecutableDirective > ompExecutableDirective

Matches any #pragma omp executable directive.

const internal::VariadicDynCastAllOfMatcher< Stmt, ObjCStringLiteral > objcStringLiteral

Matches ObjectiveC String literal expressions.

const internal::VariadicDynCastAllOfMatcher< Decl, ObjCMethodDecl > objcMethodDecl

Matches Objective-C method declarations.

const internal::VariadicDynCastAllOfMatcher< Decl, ParmVarDecl > parmVarDecl

Matches parameter variable declarations.

const internal::VariadicDynCastAllOfMatcher< Stmt, CXXRewrittenBinaryOperator > cxxRewrittenBinaryOperator

Matches rewritten binary operators.

const internal::VariadicDynCastAllOfMatcher< Decl, TypedefDecl > typedefDecl

Matches typedef declarations.

const internal::VariadicDynCastAllOfMatcher< Stmt, GenericSelectionExpr > genericSelectionExpr

Matches C11 _Generic expression.

const internal::VariadicDynCastAllOfMatcher< Decl, CXXDeductionGuideDecl > cxxDeductionGuideDecl

Matches user-defined and implicitly generated deduction guide.

const internal::VariadicDynCastAllOfMatcher< Stmt, CXXBoolLiteralExpr > cxxBoolLiteral

Matches bool literals.

const AstTypeMatcher< DependentNameType > dependentNameType

Matches a dependent name type.

const internal::VariadicDynCastAllOfMatcher< Stmt, ReturnStmt > returnStmt

Matches return statements.

const internal::VariadicDynCastAllOfMatcher< Stmt, AsmStmt > asmStmt

Matches asm statements.

const internal::VariadicAllOfMatcher< Attr > attr

Matches attributes.

const internal::VariadicDynCastAllOfMatcher< Stmt, CXXDynamicCastExpr > cxxDynamicCastExpr

Matches a dynamic_cast expression.

const internal::VariadicDynCastAllOfMatcher< Stmt, CoreturnStmt > coreturnStmt

Matches co_return statements.

const internal::VariadicDynCastAllOfMatcher< Stmt, CallExpr > callExpr

Matches call expressions.

const internal::VariadicDynCastAllOfMatcher< Stmt, LambdaExpr > lambdaExpr

Matches lambda expressions.

const internal::VariadicDynCastAllOfMatcher< Stmt, CompoundStmt > compoundStmt

Matches compound statements.

const internal::VariadicDynCastAllOfMatcher< Stmt, FloatingLiteral > floatLiteral

Matches float literals of all sizes / encodings, e.g.

const internal::VariadicDynCastAllOfMatcher< Stmt, ObjCAutoreleasePoolStmt > autoreleasePoolStmt

Matches an Objective-C autorelease pool statement.

const internal::VariadicFunction< internal::PolymorphicMatcher< internal::HasOverloadedOperatorNameMatcher, AST_POLYMORPHIC_SUPPORTED_TYPES(CXXOperatorCallExpr, FunctionDecl), std::vector< std::string > >, StringRef, internal::hasAnyOverloadedOperatorNameFunc > hasAnyOverloadedOperatorName

Matches overloaded operator names.

const internal::VariadicDynCastAllOfMatcher< Decl, NonTypeTemplateParmDecl > nonTypeTemplateParmDecl

Matches non-type template parameter declarations.

const AstTypeMatcher< VariableArrayType > variableArrayType

Matches C arrays with a specified size that is not an integer-constant-expression.

const internal::VariadicDynCastAllOfMatcher< Stmt, UnaryExprOrTypeTraitExpr > unaryExprOrTypeTraitExpr

Matches sizeof (C99), alignof (C++11) and vec_step (OpenCL)

const internal::VariadicDynCastAllOfMatcher< Stmt, NullStmt > nullStmt

Matches null statements.

const internal::VariadicDynCastAllOfMatcher< TypeLoc, TemplateSpecializationTypeLoc > templateSpecializationTypeLoc

Matches template specialization TypeLocs.

const internal::ArgumentAdaptingMatcherFunc< internal::ForEachDescendantMatcher > forEachDescendant

Matches AST nodes that have descendant AST nodes that match the provided matcher.

const internal::VariadicAllOfMatcher< CXXBaseSpecifier > cxxBaseSpecifier

Matches class bases.

const internal::VariadicDynCastAllOfMatcher< Stmt, CXXDefaultArgExpr > cxxDefaultArgExpr

Matches the value of a default argument at the call site.

const internal::VariadicAllOfMatcher< TemplateArgument > templateArgument

Matches template arguments.

const internal::ArgumentAdaptingMatcherFunc< internal::ForEachMatcher > forEach

Matches AST nodes that have child AST nodes that match the provided matcher.

const internal::VariadicDynCastAllOfMatcher< Stmt, CaseStmt > caseStmt

Matches case statements inside switch statements.

const internal::VariadicAllOfMatcher< NestedNameSpecifierLoc > nestedNameSpecifierLoc

Same as nestedNameSpecifier but matches NestedNameSpecifierLoc.

const internal::VariadicDynCastAllOfMatcher< Decl, NamedDecl > namedDecl

Matches a declaration of anything that could have a name.

const internal::VariadicDynCastAllOfMatcher< Decl, UnresolvedUsingTypenameDecl > unresolvedUsingTypenameDecl

Matches unresolved using value declarations that involve the typename.

const internal::VariadicAllOfMatcher< Type > type

Matches Types in the clang AST.

const AstTypeMatcher< DecltypeType > decltypeType

Matches types nodes representing C++11 decltype(<expr>) types.

const internal::VariadicAllOfMatcher< TypeLoc > typeLoc

Matches TypeLocs in the clang AST.

const internal::VariadicDynCastAllOfMatcher< Stmt, ParenListExpr > parenListExpr

Matches paren list expressions.

const internal::VariadicDynCastAllOfMatcher< Decl, ClassTemplatePartialSpecializationDecl > classTemplatePartialSpecializationDecl

Matches C++ class template partial specializations.

const internal::VariadicDynCastAllOfMatcher< Stmt, WhileStmt > whileStmt

Matches while statements.

const internal::VariadicDynCastAllOfMatcher< Decl, ObjCCategoryDecl > objcCategoryDecl

Matches Objective-C category declarations.

const internal::VariadicFunction< internal::Matcher< ObjCMessageExpr >, StringRef, internal::hasAnySelectorFunc > hasAnySelector

Matches when at least one of the supplied string equals to the Selector.getAsString()

const AstTypeMatcher< AutoType > autoType

Matches types nodes representing C++11 auto types.

const AstTypeMatcher< ArrayType > arrayType

Matches all kinds of arrays.

const internal::VariadicDynCastAllOfMatcher< Decl, CXXConversionDecl > cxxConversionDecl

Matches conversion operator declarations.

const AstTypeMatcher< ParenType > parenType

Matches ParenType nodes.

const internal::VariadicDynCastAllOfMatcher< Decl, LabelDecl > labelDecl

Matches a declaration of label.

const internal::VariadicDynCastAllOfMatcher< Stmt, CXXFunctionalCastExpr > cxxFunctionalCastExpr

Matches functional cast expressions.

const internal::VariadicDynCastAllOfMatcher< Stmt, CXXConstCastExpr > cxxConstCastExpr

Matches a const_cast expression.

const internal::VariadicDynCastAllOfMatcher< Stmt, CXXTemporaryObjectExpr > cxxTemporaryObjectExpr

Matches functional cast expressions having N != 1 arguments.

const internal::VariadicDynCastAllOfMatcher< Stmt, UnaryOperator > unaryOperator

Matches unary operator expressions.

const internal::VariadicDynCastAllOfMatcher< TypeLoc, ReferenceTypeLoc > referenceTypeLoc

Matches reference TypeLocs.

const internal::VariadicFunction< internal::Matcher< NamedDecl >, StringRef, internal::hasAnyNameFunc > hasAnyName

Matches NamedDecl nodes that have any of the specified names.

const internal::VariadicDynCastAllOfMatcher< Stmt, ObjCMessageExpr > objcMessageExpr

Matches ObjectiveC Message invocation expressions.

const internal::MapAnyOfMatcher< BinaryOperator, CXXOperatorCallExpr, CXXRewrittenBinaryOperator > binaryOperation

Matches nodes which can be used with binary operators.

const internal::VariadicDynCastAllOfMatcher< Stmt, ArraySubscriptExpr > arraySubscriptExpr

Matches array subscript expressions.

const internal::VariadicDynCastAllOfMatcher< OMPClause, OMPDefaultClause > ompDefaultClause

Matches OpenMP default clause.

const internal::VariadicDynCastAllOfMatcher< Decl, AccessSpecDecl > accessSpecDecl

Matches C++ access specifier declarations.

const internal::VariadicDynCastAllOfMatcher< Decl, LinkageSpecDecl > linkageSpecDecl

Matches a declaration of a linkage specification.

const AstTypeMatcher< InjectedClassNameType > injectedClassNameType

Matches injected class name types.

const internal::VariadicDynCastAllOfMatcher< Stmt, GNUNullExpr > gnuNullExpr

Matches GNU __null expression.

const internal::VariadicDynCastAllOfMatcher< TypeLoc, PointerTypeLoc > pointerTypeLoc

Matches pointer TypeLocs.

const internal::VariadicDynCastAllOfMatcher< Stmt, CXXForRangeStmt > cxxForRangeStmt

Matches range-based for statements.

const internal::VariadicDynCastAllOfMatcher< Stmt, CXXMemberCallExpr > cxxMemberCallExpr

Matches member call expressions.

const internal::VariadicDynCastAllOfMatcher< Decl, CXXConstructorDecl > cxxConstructorDecl

Matches C++ constructor declarations.

const internal::VariadicDynCastAllOfMatcher< Stmt, DependentScopeDeclRefExpr > dependentScopeDeclRefExpr

Matches expressions that refer to dependent scope declarations.

const AstTypeMatcher< BlockPointerType > blockPointerType

Matches block pointer types, i.e.

const internal::VariadicDynCastAllOfMatcher< Stmt, InitListExpr > initListExpr

Matches init list expressions.

const AstTypeMatcher< AtomicType > atomicType

Matches atomic types.

const internal::VariadicDynCastAllOfMatcher< Decl, TypeAliasTemplateDecl > typeAliasTemplateDecl

Matches type alias template declarations.

const internal::VariadicDynCastAllOfMatcher< Stmt, CXXNoexceptExpr > cxxNoexceptExpr

Matches noexcept expressions.

const internal::VariadicDynCastAllOfMatcher< Stmt, ArrayInitIndexExpr > arrayInitIndexExpr

The arrayInitIndexExpr consists of two subexpressions: a common expression (the source array) that is...

internal::VariadicDynCastAllOfMatcher< Type, NodeType > AstTypeMatcher

const AstTypeMatcher< UsingType > usingType

Matches types specified through a using declaration.

const internal::VariadicDynCastAllOfMatcher< Stmt, CXXNewExpr > cxxNewExpr

Matches new expressions.

const internal::VariadicDynCastAllOfMatcher< Decl, EnumConstantDecl > enumConstantDecl

Matches enum constants.

const internal::VariadicDynCastAllOfMatcher< Stmt, ForStmt > forStmt

Matches for statements.

const internal::VariadicDynCastAllOfMatcher< Stmt, GotoStmt > gotoStmt

Matches goto statements.

const internal::VariadicDynCastAllOfMatcher< Decl, DeclaratorDecl > declaratorDecl

Matches declarator declarations (field, variable, function and non-type template parameter declaratio...

const internal::VariadicDynCastAllOfMatcher< Stmt, ObjCAtCatchStmt > objcCatchStmt

Matches Objective-C @catch statements.

const internal::VariadicDynCastAllOfMatcher< Stmt, BinaryOperator > binaryOperator

Matches binary operator expressions.

const internal::VariadicDynCastAllOfMatcher< TypeLoc, QualifiedTypeLoc > qualifiedTypeLoc

Matches QualifiedTypeLocs in the clang AST.

const internal::VariadicDynCastAllOfMatcher< Decl, TemplateTypeParmDecl > templateTypeParmDecl

Matches template type parameter declarations.

const internal::VariadicDynCastAllOfMatcher< Stmt, BlockExpr > blockExpr

Matches a reference to a block.

const internal::VariadicDynCastAllOfMatcher< Decl, FunctionTemplateDecl > functionTemplateDecl

Matches C++ function template declarations.

const internal::VariadicDynCastAllOfMatcher< Stmt, ParenExpr > parenExpr

Matches parentheses used in expressions.

const internal::VariadicDynCastAllOfMatcher< Decl, StaticAssertDecl > staticAssertDecl

Matches a C++ static_assert declaration.

const internal::ArgumentAdaptingMatcherFunc< internal::HasMatcher > has

Matches AST nodes that have child AST nodes that match the provided matcher.

const internal::VariadicDynCastAllOfMatcher< Stmt, CoroutineBodyStmt > coroutineBodyStmt

Matches coroutine body statements.

const AstTypeMatcher< MacroQualifiedType > macroQualifiedType

Matches qualified types when the qualifier is applied via a macro.

const internal::VariadicDynCastAllOfMatcher< Decl, ObjCCategoryImplDecl > objcCategoryImplDecl

Matches Objective-C category definitions.

const AstTypeMatcher< TypedefType > typedefType

Matches typedef types.

const internal::VariadicDynCastAllOfMatcher< Stmt, MaterializeTemporaryExpr > materializeTemporaryExpr

Matches nodes where temporaries are materialized.

const AstTypeMatcher< TagType > tagType

Matches tag types (record and enum types).

const internal::VariadicDynCastAllOfMatcher< Stmt, BinaryConditionalOperator > binaryConditionalOperator

Matches binary conditional operator expressions (GNU extension).

const internal::VariadicDynCastAllOfMatcher< Stmt, ObjCAtTryStmt > objcTryStmt

Matches Objective-C @try statements.

const internal::VariadicDynCastAllOfMatcher< Stmt, ExplicitCastExpr > explicitCastExpr

Matches explicit cast expressions.

const internal::VariadicDynCastAllOfMatcher< Stmt, CXXStaticCastExpr > cxxStaticCastExpr

Matches a C++ static_cast expression.

const internal::VariadicDynCastAllOfMatcher< Decl, ValueDecl > valueDecl

Matches any value declaration.

const internal::VariadicDynCastAllOfMatcher< Decl, TranslationUnitDecl > translationUnitDecl

Matches the top declaration context.

const AstTypeMatcher< TemplateTypeParmType > templateTypeParmType

Matches template type parameter types.

const AstTypeMatcher< ConstantArrayType > constantArrayType

Matches C arrays with a specified constant size.

const internal::VariadicAllOfMatcher< LambdaCapture > lambdaCapture

Matches lambda captures.

const internal::VariadicOperatorMatcherFunc< 2, std::numeric_limits< unsigned >::max()> eachOf

Matches if any of the given matchers matches.

const internal::VariadicDynCastAllOfMatcher< Stmt, CXXConstructExpr > cxxConstructExpr

Matches constructor call expressions (including implicit ones).

const internal::VariadicDynCastAllOfMatcher< Decl, ObjCInterfaceDecl > objcInterfaceDecl

Matches Objective-C interface declarations.

const internal::VariadicDynCastAllOfMatcher< Decl, TemplateTemplateParmDecl > templateTemplateParmDecl

Matches template template parameter declarations.

const internal::VariadicDynCastAllOfMatcher< Decl, FieldDecl > fieldDecl

Matches field declarations.

const internal::VariadicDynCastAllOfMatcher< Stmt, UserDefinedLiteral > userDefinedLiteral

Matches user defined literal operator call.

const internal::VariadicDynCastAllOfMatcher< Stmt, ChooseExpr > chooseExpr

Matches GNU __builtin_choose_expr.

const internal::VariadicDynCastAllOfMatcher< Stmt, CXXOperatorCallExpr > cxxOperatorCallExpr

Matches overloaded operator calls.

const internal::VariadicDynCastAllOfMatcher< Decl, NamespaceAliasDecl > namespaceAliasDecl

Matches a declaration of a namespace alias.

const internal::VariadicDynCastAllOfMatcher< Stmt, CXXBindTemporaryExpr > cxxBindTemporaryExpr

Matches nodes where temporaries are created.

const internal::VariadicDynCastAllOfMatcher< Stmt, SwitchCase > switchCase

Matches case and default statements inside switch statements.

const internal::VariadicDynCastAllOfMatcher< Stmt, DefaultStmt > defaultStmt

Matches default statements inside switch statements.

const internal::VariadicOperatorMatcherFunc< 2, std::numeric_limits< unsigned >::max()> allOf

Matches if all given matchers match.

const internal::VariadicDynCastAllOfMatcher< Decl, ClassTemplateSpecializationDecl > classTemplateSpecializationDecl

Matches C++ class template specializations.

const internal::VariadicDynCastAllOfMatcher< Decl, DecompositionDecl > decompositionDecl

Matches decomposition-declarations.

const AstTypeMatcher< SubstTemplateTypeParmType > substTemplateTypeParmType

Matches types that represent the result of substituting a type for a template type parameter.

const internal::VariadicDynCastAllOfMatcher< Decl, FunctionDecl > functionDecl

Matches function declarations.

const AstTypeMatcher< UnaryTransformType > unaryTransformType

Matches types nodes representing unary type transformations.

const internal::VariadicDynCastAllOfMatcher< Stmt, UnresolvedMemberExpr > unresolvedMemberExpr

Matches unresolved member expressions.

const internal::VariadicDynCastAllOfMatcher< Stmt, ObjCAtThrowStmt > objcThrowStmt

Matches Objective-C @throw statements.

const internal::MapAnyOfMatcher< CallExpr, CXXConstructExpr > invocation

Matches function calls and constructor calls.

const internal::VariadicDynCastAllOfMatcher< Stmt, CXXThrowExpr > cxxThrowExpr

Matches throw expressions.

const internal::VariadicDynCastAllOfMatcher< Stmt, SwitchStmt > switchStmt

Matches switch statements.

const AstTypeMatcher< RecordType > recordType

Matches record types (e.g.

const internal::VariadicDynCastAllOfMatcher< Stmt, MemberExpr > memberExpr

Matches member expressions.

const internal::VariadicDynCastAllOfMatcher< Decl, CXXRecordDecl > cxxRecordDecl

Matches C++ class declarations.

const internal::VariadicAllOfMatcher< TemplateArgumentLoc > templateArgumentLoc

Matches template arguments (with location info).

const AstTypeMatcher< ReferenceType > referenceType

Matches both lvalue and rvalue reference types.

const internal::VariadicDynCastAllOfMatcher< Stmt, DesignatedInitExpr > designatedInitExpr

Matches C99 designated initializer expressions [C99 6.7.8].

const internal::VariadicAllOfMatcher< Decl > decl

Matches declarations.

const internal::VariadicDynCastAllOfMatcher< Decl, CXXDestructorDecl > cxxDestructorDecl

Matches explicit C++ destructor declarations.

const internal::VariadicDynCastAllOfMatcher< Stmt, CXXUnresolvedConstructExpr > cxxUnresolvedConstructExpr

Matches unresolved constructor call expressions.

const internal::VariadicDynCastAllOfMatcher< Decl, ObjCImplementationDecl > objcImplementationDecl

Matches Objective-C implementation declarations.

const internal::VariadicDynCastAllOfMatcher< Decl, RecordDecl > recordDecl

Matches class, struct, and union declarations.

const internal::VariadicDynCastAllOfMatcher< Stmt, IntegerLiteral > integerLiteral

Matches integer literals of all sizes / encodings, e.g.

const internal::VariadicDynCastAllOfMatcher< Decl, ExportDecl > exportDecl

Matches any export declaration.

const internal::VariadicDynCastAllOfMatcher< Stmt, ImplicitValueInitExpr > implicitValueInitExpr

Matches implicit initializers of init list expressions.

const internal::VariadicDynCastAllOfMatcher< Stmt, DoStmt > doStmt

Matches do statements.

const internal::VariadicDynCastAllOfMatcher< Decl, NamespaceDecl > namespaceDecl

Matches a declaration of a namespace.

const internal::VariadicDynCastAllOfMatcher< Stmt, CXXNullPtrLiteralExpr > cxxNullPtrLiteralExpr

Matches nullptr literal.

const AstTypeMatcher< DecayedType > decayedType

Matches decayed type Example matches i[] in declaration of f.

const internal::VariadicDynCastAllOfMatcher< Stmt, DeclStmt > declStmt

Matches declaration statements.

const internal::VariadicDynCastAllOfMatcher< Stmt, CompoundLiteralExpr > compoundLiteralExpr

Matches compound (i.e.

const AstTypeMatcher< MemberPointerType > memberPointerType

Matches member pointer types.

const internal::VariadicDynCastAllOfMatcher< Stmt, LabelStmt > labelStmt

Matches label statements.

const internal::VariadicAllOfMatcher< Stmt > stmt

Matches statements.

const internal::VariadicDynCastAllOfMatcher< Decl, FriendDecl > friendDecl

Matches friend declarations.

const internal::VariadicDynCastAllOfMatcher< Stmt, Expr > expr

Matches expressions.

const AstTypeMatcher< IncompleteArrayType > incompleteArrayType

Matches C arrays with unspecified size.

const internal::VariadicDynCastAllOfMatcher< Stmt, CharacterLiteral > characterLiteral

Matches character literals (also matches wchar_t).

const internal::VariadicDynCastAllOfMatcher< Stmt, CXXFoldExpr > cxxFoldExpr

Matches C++17 fold expressions.

const internal::VariadicDynCastAllOfMatcher< Stmt, ConditionalOperator > conditionalOperator

Matches conditional operator expressions.

const internal::VariadicDynCastAllOfMatcher< Stmt, CXXStdInitializerListExpr > cxxStdInitializerListExpr

Matches C++ initializer list expressions.

const internal::VariadicOperatorMatcherFunc< 2, std::numeric_limits< unsigned >::max()> anyOf

Matches if any of the given matchers matches.

const internal::VariadicFunction< internal::PolymorphicMatcher< internal::HasAnyOperatorNameMatcher, AST_POLYMORPHIC_SUPPORTED_TYPES(BinaryOperator, CXXOperatorCallExpr, CXXRewrittenBinaryOperator, UnaryOperator), std::vector< std::string > >, StringRef, internal::hasAnyOperatorNameFunc > hasAnyOperatorName

Matches operator expressions (binary or unary) that have any of the specified names.

const internal::VariadicDynCastAllOfMatcher< Stmt, OpaqueValueExpr > opaqueValueExpr

Matches opaque value expressions.

const AstTypeMatcher< ComplexType > complexType

Matches C99 complex types.

const internal::VariadicDynCastAllOfMatcher< Stmt, CUDAKernelCallExpr > cudaKernelCallExpr

Matches CUDA kernel call expression.

const internal::VariadicDynCastAllOfMatcher< Decl, IndirectFieldDecl > indirectFieldDecl

Matches indirect field declarations.

const AstTypeMatcher< FunctionType > functionType

Matches FunctionType nodes.

const internal::VariadicDynCastAllOfMatcher< Decl, BlockDecl > blockDecl

Matches block declarations.

const internal::VariadicDynCastAllOfMatcher< Decl, CXXMethodDecl > cxxMethodDecl

Matches method declarations.

const internal::VariadicDynCastAllOfMatcher< Stmt, CXXCatchStmt > cxxCatchStmt

Matches catch statements.

const internal::VariadicDynCastAllOfMatcher< Stmt, CastExpr > castExpr

Matches any cast nodes of Clang's AST.

const internal::VariadicAllOfMatcher< QualType > qualType

Matches QualTypes in the clang AST.

const internal::VariadicDynCastAllOfMatcher< Stmt, CXXTryStmt > cxxTryStmt

Matches try statements.

const internal::VariadicDynCastAllOfMatcher< Stmt, SubstNonTypeTemplateParmExpr > substNonTypeTemplateParmExpr

Matches substitutions of non-type template parameters.

const internal::VariadicDynCastAllOfMatcher< Decl, UsingDirectiveDecl > usingDirectiveDecl

Matches using namespace declarations.

const internal::VariadicDynCastAllOfMatcher< Decl, UnresolvedUsingValueDecl > unresolvedUsingValueDecl

Matches unresolved using value declarations.

const internal::ArgumentAdaptingMatcherFunc< internal::HasAncestorMatcher, internal::TypeList< Decl, NestedNameSpecifierLoc, Stmt, TypeLoc, Attr >, internal::TypeList< Decl, NestedNameSpecifierLoc, Stmt, TypeLoc, Attr > > hasAncestor

Matches AST nodes that have an ancestor that matches the provided matcher.

const internal::ArgumentAdaptingMatcherFunc< internal::HasParentMatcher, internal::TypeList< Decl, NestedNameSpecifierLoc, Stmt, TypeLoc, Attr >, internal::TypeList< Decl, NestedNameSpecifierLoc, Stmt, TypeLoc, Attr > > hasParent

Matches AST nodes that have a parent that matches the provided matcher.

const internal::VariadicDynCastAllOfMatcher< Stmt, IfStmt > ifStmt

Matches if statements.

const internal::VariadicDynCastAllOfMatcher< Stmt, CXXThisExpr > cxxThisExpr

Matches implicit and explicit this expressions.

const internal::VariadicDynCastAllOfMatcher< Stmt, ImaginaryLiteral > imaginaryLiteral

Matches imaginary literals, which are based on integer and floating point literals e....

const AstTypeMatcher< RValueReferenceType > rValueReferenceType

Matches rvalue reference types.

const internal::VariadicDynCastAllOfMatcher< Stmt, ContinueStmt > continueStmt

Matches continue statements.

const internal::VariadicDynCastAllOfMatcher< Decl, ClassTemplateDecl > classTemplateDecl

Matches C++ class template declarations.

const AstTypeMatcher< LValueReferenceType > lValueReferenceType

Matches lvalue reference types.

The JSON file list parser is used to communicate input to InstallAPI.

TraversalKind

Defines how we descend a level in the AST when we pass through expressions.

@ TK_IgnoreUnlessSpelledInSource

Ignore AST nodes not written in the source.

@ Result

The result type of a method or function.

@ Other

Other implicit parameter.

Diagnostic wrappers for TextAPI types for error reporting.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4