clang  14.0.0git
TextNodeDumper.cpp
Go to the documentation of this file.
1 //===--- TextNodeDumper.cpp - Printing of AST nodes -----------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file implements AST dumping of components of individual AST nodes.
10 //
11 //===----------------------------------------------------------------------===//
12 
14 #include "clang/AST/APValue.h"
15 #include "clang/AST/DeclFriend.h"
16 #include "clang/AST/DeclOpenMP.h"
17 #include "clang/AST/DeclTemplate.h"
18 #include "clang/AST/LocInfoType.h"
19 #include "clang/AST/Type.h"
20 #include "clang/Basic/Module.h"
22 #include "clang/Basic/Specifiers.h"
23 #include "clang/Basic/TypeTraits.h"
24 #include "llvm/ADT/StringExtras.h"
25 
26 #include <algorithm>
27 #include <utility>
28 
29 using namespace clang;
30 
31 static void dumpPreviousDeclImpl(raw_ostream &OS, ...) {}
32 
33 template <typename T>
34 static void dumpPreviousDeclImpl(raw_ostream &OS, const Mergeable<T> *D) {
35  const T *First = D->getFirstDecl();
36  if (First != D)
37  OS << " first " << First;
38 }
39 
40 template <typename T>
41 static void dumpPreviousDeclImpl(raw_ostream &OS, const Redeclarable<T> *D) {
42  const T *Prev = D->getPreviousDecl();
43  if (Prev)
44  OS << " prev " << Prev;
45 }
46 
47 /// Dump the previous declaration in the redeclaration chain for a declaration,
48 /// if any.
49 static void dumpPreviousDecl(raw_ostream &OS, const Decl *D) {
50  switch (D->getKind()) {
51 #define DECL(DERIVED, BASE) \
52  case Decl::DERIVED: \
53  return dumpPreviousDeclImpl(OS, cast<DERIVED##Decl>(D));
54 #define ABSTRACT_DECL(DECL)
55 #include "clang/AST/DeclNodes.inc"
56  }
57  llvm_unreachable("Decl that isn't part of DeclNodes.inc!");
58 }
59 
60 TextNodeDumper::TextNodeDumper(raw_ostream &OS, const ASTContext &Context,
61  bool ShowColors)
62  : TextTreeStructure(OS, ShowColors), OS(OS), ShowColors(ShowColors),
63  Context(&Context), SM(&Context.getSourceManager()),
64  PrintPolicy(Context.getPrintingPolicy()),
65  Traits(&Context.getCommentCommandTraits()) {}
66 
67 TextNodeDumper::TextNodeDumper(raw_ostream &OS, bool ShowColors)
68  : TextTreeStructure(OS, ShowColors), OS(OS), ShowColors(ShowColors) {}
69 
71  const comments::FullComment *FC) {
72  if (!C) {
73  ColorScope Color(OS, ShowColors, NullColor);
74  OS << "<<<NULL>>>";
75  return;
76  }
77 
78  {
79  ColorScope Color(OS, ShowColors, CommentColor);
80  OS << C->getCommentKindName();
81  }
82  dumpPointer(C);
83  dumpSourceRange(C->getSourceRange());
84 
85  ConstCommentVisitor<TextNodeDumper, void,
86  const comments::FullComment *>::visit(C, FC);
87 }
88 
89 void TextNodeDumper::Visit(const Attr *A) {
90  {
91  ColorScope Color(OS, ShowColors, AttrColor);
92 
93  switch (A->getKind()) {
94 #define ATTR(X) \
95  case attr::X: \
96  OS << #X; \
97  break;
98 #include "clang/Basic/AttrList.inc"
99  }
100  OS << "Attr";
101  }
102  dumpPointer(A);
104  if (A->isInherited())
105  OS << " Inherited";
106  if (A->isImplicit())
107  OS << " Implicit";
108 
110 }
111 
113  const Decl *From, StringRef Label) {
114  OS << "TemplateArgument";
115  if (R.isValid())
116  dumpSourceRange(R);
117 
118  if (From)
119  dumpDeclRef(From, Label);
120 
122 }
123 
125  if (!Node) {
126  ColorScope Color(OS, ShowColors, NullColor);
127  OS << "<<<NULL>>>";
128  return;
129  }
130  {
131  ColorScope Color(OS, ShowColors, StmtColor);
132  OS << Node->getStmtClassName();
133  }
134  dumpPointer(Node);
136 
137  if (const auto *E = dyn_cast<Expr>(Node)) {
138  dumpType(E->getType());
139 
140  if (E->containsErrors()) {
141  ColorScope Color(OS, ShowColors, ErrorsColor);
142  OS << " contains-errors";
143  }
144 
145  {
146  ColorScope Color(OS, ShowColors, ValueKindColor);
147  switch (E->getValueKind()) {
148  case VK_PRValue:
149  break;
150  case VK_LValue:
151  OS << " lvalue";
152  break;
153  case VK_XValue:
154  OS << " xvalue";
155  break;
156  }
157  }
158 
159  {
160  ColorScope Color(OS, ShowColors, ObjectKindColor);
161  switch (E->getObjectKind()) {
162  case OK_Ordinary:
163  break;
164  case OK_BitField:
165  OS << " bitfield";
166  break;
167  case OK_ObjCProperty:
168  OS << " objcproperty";
169  break;
170  case OK_ObjCSubscript:
171  OS << " objcsubscript";
172  break;
173  case OK_VectorComponent:
174  OS << " vectorcomponent";
175  break;
176  case OK_MatrixComponent:
177  OS << " matrixcomponent";
178  break;
179  }
180  }
181  }
182 
184 }
185 
186 void TextNodeDumper::Visit(const Type *T) {
187  if (!T) {
188  ColorScope Color(OS, ShowColors, NullColor);
189  OS << "<<<NULL>>>";
190  return;
191  }
192  if (isa<LocInfoType>(T)) {
193  {
194  ColorScope Color(OS, ShowColors, TypeColor);
195  OS << "LocInfo Type";
196  }
197  dumpPointer(T);
198  return;
199  }
200 
201  {
202  ColorScope Color(OS, ShowColors, TypeColor);
203  OS << T->getTypeClassName() << "Type";
204  }
205  dumpPointer(T);
206  OS << " ";
207  dumpBareType(QualType(T, 0), false);
208 
209  QualType SingleStepDesugar =
211  if (SingleStepDesugar != QualType(T, 0))
212  OS << " sugar";
213 
214  if (T->containsErrors()) {
215  ColorScope Color(OS, ShowColors, ErrorsColor);
216  OS << " contains-errors";
217  }
218 
219  if (T->isDependentType())
220  OS << " dependent";
221  else if (T->isInstantiationDependentType())
222  OS << " instantiation_dependent";
223 
224  if (T->isVariablyModifiedType())
225  OS << " variably_modified";
227  OS << " contains_unexpanded_pack";
228  if (T->isFromAST())
229  OS << " imported";
230 
232 }
233 
235  OS << "QualType";
237  OS << " ";
238  dumpBareType(T, false);
239  OS << " " << T.split().Quals.getAsString();
240 }
241 
242 void TextNodeDumper::Visit(const Decl *D) {
243  if (!D) {
244  ColorScope Color(OS, ShowColors, NullColor);
245  OS << "<<<NULL>>>";
246  return;
247  }
248 
249  {
250  ColorScope Color(OS, ShowColors, DeclKindNameColor);
251  OS << D->getDeclKindName() << "Decl";
252  }
253  dumpPointer(D);
254  if (D->getLexicalDeclContext() != D->getDeclContext())
255  OS << " parent " << cast<Decl>(D->getDeclContext());
256  dumpPreviousDecl(OS, D);
258  OS << ' ';
260  if (D->isFromASTFile())
261  OS << " imported";
262  if (Module *M = D->getOwningModule())
263  OS << " in " << M->getFullModuleName();
264  if (auto *ND = dyn_cast<NamedDecl>(D))
266  const_cast<NamedDecl *>(ND)))
267  AddChild([=] { OS << "also in " << M->getFullModuleName(); });
268  if (const NamedDecl *ND = dyn_cast<NamedDecl>(D))
269  if (!ND->isUnconditionallyVisible())
270  OS << " hidden";
271  if (D->isImplicit())
272  OS << " implicit";
273 
274  if (D->isUsed())
275  OS << " used";
276  else if (D->isThisDeclarationReferenced())
277  OS << " referenced";
278 
279  if (D->isInvalidDecl())
280  OS << " invalid";
281  if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) {
282  if (FD->isConstexprSpecified())
283  OS << " constexpr";
284  if (FD->isConsteval())
285  OS << " consteval";
286  }
287 
288  if (!isa<FunctionDecl>(*D)) {
289  const auto *MD = dyn_cast<ObjCMethodDecl>(D);
290  if (!MD || !MD->isThisDeclarationADefinition()) {
291  const auto *DC = dyn_cast<DeclContext>(D);
292  if (DC && DC->hasExternalLexicalStorage()) {
293  ColorScope Color(OS, ShowColors, UndeserializedColor);
294  OS << " <undeserialized declarations>";
295  }
296  }
297  }
298 
300 }
301 
303  OS << "CXXCtorInitializer";
304  if (Init->isAnyMemberInitializer()) {
305  OS << ' ';
306  dumpBareDeclRef(Init->getAnyMember());
307  } else if (Init->isBaseInitializer()) {
308  dumpType(QualType(Init->getBaseClass(), 0));
309  } else if (Init->isDelegatingInitializer()) {
310  dumpType(Init->getTypeSourceInfo()->getType());
311  } else {
312  llvm_unreachable("Unknown initializer type");
313  }
314 }
315 
317  OS << "capture";
318  if (C.isByRef())
319  OS << " byref";
320  if (C.isNested())
321  OS << " nested";
322  if (C.getVariable()) {
323  OS << ' ';
324  dumpBareDeclRef(C.getVariable());
325  }
326 }
327 
329  if (!C) {
330  ColorScope Color(OS, ShowColors, NullColor);
331  OS << "<<<NULL>>> OMPClause";
332  return;
333  }
334  {
335  ColorScope Color(OS, ShowColors, AttrColor);
336  StringRef ClauseName(llvm::omp::getOpenMPClauseName(C->getClauseKind()));
337  OS << "OMP" << ClauseName.substr(/*Start=*/0, /*N=*/1).upper()
338  << ClauseName.drop_front() << "Clause";
339  }
340  dumpPointer(C);
341  dumpSourceRange(SourceRange(C->getBeginLoc(), C->getEndLoc()));
342  if (C->isImplicit())
343  OS << " <implicit>";
344 }
345 
347  const TypeSourceInfo *TSI = A.getTypeSourceInfo();
348  if (TSI) {
349  OS << "case ";
350  dumpType(TSI->getType());
351  } else {
352  OS << "default";
353  }
354 
355  if (A.isSelected())
356  OS << " selected";
357 }
358 
360  if (!R) {
361  ColorScope Color(OS, ShowColors, NullColor);
362  OS << "<<<NULL>>> Requirement";
363  return;
364  }
365 
366  {
367  ColorScope Color(OS, ShowColors, StmtColor);
368  switch (R->getKind()) {
370  OS << "TypeRequirement";
371  break;
373  OS << "SimpleRequirement";
374  break;
376  OS << "CompoundRequirement";
377  break;
379  OS << "NestedRequirement";
380  break;
381  }
382  }
383 
384  dumpPointer(R);
385 
386  if (auto *ER = dyn_cast<concepts::ExprRequirement>(R)) {
387  if (ER->hasNoexceptRequirement())
388  OS << " noexcept";
389  }
390 
391  if (R->isDependent())
392  OS << " dependent";
393  else
394  OS << (R->isSatisfied() ? " satisfied" : " unsatisfied");
396  OS << " contains_unexpanded_pack";
397 }
398 
399 static double GetApproxValue(const llvm::APFloat &F) {
400  llvm::APFloat V = F;
401  bool ignored;
402  V.convert(llvm::APFloat::IEEEdouble(), llvm::APFloat::rmNearestTiesToEven,
403  &ignored);
404  return V.convertToDouble();
405 }
406 
407 /// True if the \p APValue \p Value can be folded onto the current line.
408 static bool isSimpleAPValue(const APValue &Value) {
409  switch (Value.getKind()) {
410  case APValue::None:
412  case APValue::Int:
413  case APValue::Float:
414  case APValue::FixedPoint:
415  case APValue::ComplexInt:
417  case APValue::LValue:
420  return true;
421  case APValue::Vector:
422  case APValue::Array:
423  case APValue::Struct:
424  return false;
425  case APValue::Union:
426  return isSimpleAPValue(Value.getUnionValue());
427  }
428  llvm_unreachable("unexpected APValue kind!");
429 }
430 
431 /// Dump the children of the \p APValue \p Value.
432 ///
433 /// \param[in] Value The \p APValue to visit
434 /// \param[in] Ty The \p QualType passed to \p Visit
435 ///
436 /// \param[in] IdxToChildFun A function mapping an \p APValue and an index
437 /// to one of the child of the \p APValue
438 ///
439 /// \param[in] NumChildren \p IdxToChildFun will be called on \p Value with
440 /// the indices in the range \p [0,NumChildren(
441 ///
442 /// \param[in] LabelSingular The label to use on a line with a single child
443 /// \param[in] LabelPlurial The label to use on a line with multiple children
444 void TextNodeDumper::dumpAPValueChildren(
445  const APValue &Value, QualType Ty,
446  const APValue &(*IdxToChildFun)(const APValue &, unsigned),
447  unsigned NumChildren, StringRef LabelSingular, StringRef LabelPlurial) {
448  // To save some vertical space we print up to MaxChildrenPerLine APValues
449  // considered to be simple (by isSimpleAPValue) on a single line.
450  constexpr unsigned MaxChildrenPerLine = 4;
451  unsigned I = 0;
452  while (I < NumChildren) {
453  unsigned J = I;
454  while (J < NumChildren) {
455  if (isSimpleAPValue(IdxToChildFun(Value, J)) &&
456  (J - I < MaxChildrenPerLine)) {
457  ++J;
458  continue;
459  }
460  break;
461  }
462 
463  J = std::max(I + 1, J);
464 
465  // Print [I,J) on a single line.
466  AddChild(J - I > 1 ? LabelPlurial : LabelSingular, [=]() {
467  for (unsigned X = I; X < J; ++X) {
468  Visit(IdxToChildFun(Value, X), Ty);
469  if (X + 1 != J)
470  OS << ", ";
471  }
472  });
473  I = J;
474  }
475 }
476 
478  ColorScope Color(OS, ShowColors, ValueKindColor);
479  switch (Value.getKind()) {
480  case APValue::None:
481  OS << "None";
482  return;
484  OS << "Indeterminate";
485  return;
486  case APValue::Int:
487  OS << "Int ";
488  {
489  ColorScope Color(OS, ShowColors, ValueColor);
490  OS << Value.getInt();
491  }
492  return;
493  case APValue::Float:
494  OS << "Float ";
495  {
496  ColorScope Color(OS, ShowColors, ValueColor);
497  OS << GetApproxValue(Value.getFloat());
498  }
499  return;
500  case APValue::FixedPoint:
501  OS << "FixedPoint ";
502  {
503  ColorScope Color(OS, ShowColors, ValueColor);
504  OS << Value.getFixedPoint();
505  }
506  return;
507  case APValue::Vector: {
508  unsigned VectorLength = Value.getVectorLength();
509  OS << "Vector length=" << VectorLength;
510 
511  dumpAPValueChildren(
512  Value, Ty,
513  [](const APValue &Value, unsigned Index) -> const APValue & {
514  return Value.getVectorElt(Index);
515  },
516  VectorLength, "element", "elements");
517  return;
518  }
519  case APValue::ComplexInt:
520  OS << "ComplexInt ";
521  {
522  ColorScope Color(OS, ShowColors, ValueColor);
523  OS << Value.getComplexIntReal() << " + " << Value.getComplexIntImag()
524  << 'i';
525  }
526  return;
528  OS << "ComplexFloat ";
529  {
530  ColorScope Color(OS, ShowColors, ValueColor);
531  OS << GetApproxValue(Value.getComplexFloatReal()) << " + "
532  << GetApproxValue(Value.getComplexFloatImag()) << 'i';
533  }
534  return;
535  case APValue::LValue:
536  (void)Context;
537  OS << "LValue <todo>";
538  return;
539  case APValue::Array: {
540  unsigned ArraySize = Value.getArraySize();
541  unsigned NumInitializedElements = Value.getArrayInitializedElts();
542  OS << "Array size=" << ArraySize;
543 
544  dumpAPValueChildren(
545  Value, Ty,
546  [](const APValue &Value, unsigned Index) -> const APValue & {
547  return Value.getArrayInitializedElt(Index);
548  },
549  NumInitializedElements, "element", "elements");
550 
551  if (Value.hasArrayFiller()) {
552  AddChild("filler", [=] {
553  {
554  ColorScope Color(OS, ShowColors, ValueColor);
555  OS << ArraySize - NumInitializedElements << " x ";
556  }
557  Visit(Value.getArrayFiller(), Ty);
558  });
559  }
560 
561  return;
562  }
563  case APValue::Struct: {
564  OS << "Struct";
565 
566  dumpAPValueChildren(
567  Value, Ty,
568  [](const APValue &Value, unsigned Index) -> const APValue & {
569  return Value.getStructBase(Index);
570  },
571  Value.getStructNumBases(), "base", "bases");
572 
573  dumpAPValueChildren(
574  Value, Ty,
575  [](const APValue &Value, unsigned Index) -> const APValue & {
576  return Value.getStructField(Index);
577  },
578  Value.getStructNumFields(), "field", "fields");
579 
580  return;
581  }
582  case APValue::Union: {
583  OS << "Union";
584  {
585  ColorScope Color(OS, ShowColors, ValueColor);
586  if (const FieldDecl *FD = Value.getUnionField())
587  OS << " ." << *cast<NamedDecl>(FD);
588  }
589  // If the union value is considered to be simple, fold it into the
590  // current line to save some vertical space.
591  const APValue &UnionValue = Value.getUnionValue();
592  if (isSimpleAPValue(UnionValue)) {
593  OS << ' ';
594  Visit(UnionValue, Ty);
595  } else {
596  AddChild([=] { Visit(UnionValue, Ty); });
597  }
598 
599  return;
600  }
602  OS << "MemberPointer <todo>";
603  return;
605  OS << "AddrLabelDiff <todo>";
606  return;
607  }
608  llvm_unreachable("Unknown APValue kind!");
609 }
610 
611 void TextNodeDumper::dumpPointer(const void *Ptr) {
612  ColorScope Color(OS, ShowColors, AddressColor);
613  OS << ' ' << Ptr;
614 }
615 
617  if (!SM)
618  return;
619 
620  ColorScope Color(OS, ShowColors, LocationColor);
621  SourceLocation SpellingLoc = SM->getSpellingLoc(Loc);
622 
623  // The general format we print out is filename:line:col, but we drop pieces
624  // that haven't changed since the last loc printed.
625  PresumedLoc PLoc = SM->getPresumedLoc(SpellingLoc);
626 
627  if (PLoc.isInvalid()) {
628  OS << "<invalid sloc>";
629  return;
630  }
631 
632  if (strcmp(PLoc.getFilename(), LastLocFilename) != 0) {
633  OS << PLoc.getFilename() << ':' << PLoc.getLine() << ':'
634  << PLoc.getColumn();
635  LastLocFilename = PLoc.getFilename();
636  LastLocLine = PLoc.getLine();
637  } else if (PLoc.getLine() != LastLocLine) {
638  OS << "line" << ':' << PLoc.getLine() << ':' << PLoc.getColumn();
639  LastLocLine = PLoc.getLine();
640  } else {
641  OS << "col" << ':' << PLoc.getColumn();
642  }
643 }
644 
646  // Can't translate locations if a SourceManager isn't available.
647  if (!SM)
648  return;
649 
650  OS << " <";
651  dumpLocation(R.getBegin());
652  if (R.getBegin() != R.getEnd()) {
653  OS << ", ";
654  dumpLocation(R.getEnd());
655  }
656  OS << ">";
657 
658  // <t2.c:123:421[blah], t2.c:412:321>
659 }
660 
662  ColorScope Color(OS, ShowColors, TypeColor);
663 
664  SplitQualType T_split = T.split();
665  OS << "'" << QualType::getAsString(T_split, PrintPolicy) << "'";
666 
667  if (Desugar && !T.isNull()) {
668  // If the type is sugared, also dump a (shallow) desugared type.
669  SplitQualType D_split = T.getSplitDesugaredType();
670  if (T_split != D_split)
671  OS << ":'" << QualType::getAsString(D_split, PrintPolicy) << "'";
672  }
673 }
674 
676  OS << ' ';
677  dumpBareType(T);
678 }
679 
681  if (!D) {
682  ColorScope Color(OS, ShowColors, NullColor);
683  OS << "<<<NULL>>>";
684  return;
685  }
686 
687  {
688  ColorScope Color(OS, ShowColors, DeclKindNameColor);
689  OS << D->getDeclKindName();
690  }
691  dumpPointer(D);
692 
693  if (const NamedDecl *ND = dyn_cast<NamedDecl>(D)) {
694  ColorScope Color(OS, ShowColors, DeclNameColor);
695  OS << " '" << ND->getDeclName() << '\'';
696  }
697 
698  if (const ValueDecl *VD = dyn_cast<ValueDecl>(D))
699  dumpType(VD->getType());
700 }
701 
703  if (ND->getDeclName()) {
704  ColorScope Color(OS, ShowColors, DeclNameColor);
705  OS << ' ' << ND->getDeclName();
706  }
707 }
708 
710  const auto AccessSpelling = getAccessSpelling(AS);
711  if (AccessSpelling.empty())
712  return;
713  OS << AccessSpelling;
714 }
715 
718  if (auto *BD = C.dyn_cast<BlockDecl *>())
719  dumpDeclRef(BD, "cleanup");
720  else if (auto *CLE = C.dyn_cast<CompoundLiteralExpr *>())
721  AddChild([=] {
722  OS << "cleanup ";
723  {
724  ColorScope Color(OS, ShowColors, StmtColor);
725  OS << CLE->getStmtClassName();
726  }
727  dumpPointer(CLE);
728  });
729  else
730  llvm_unreachable("unexpected cleanup type");
731 }
732 
733 void TextNodeDumper::dumpDeclRef(const Decl *D, StringRef Label) {
734  if (!D)
735  return;
736 
737  AddChild([=] {
738  if (!Label.empty())
739  OS << Label << ' ';
740  dumpBareDeclRef(D);
741  });
742 }
743 
744 const char *TextNodeDumper::getCommandName(unsigned CommandID) {
745  if (Traits)
746  return Traits->getCommandInfo(CommandID)->Name;
747  const comments::CommandInfo *Info =
749  if (Info)
750  return Info->Name;
751  return "<not a builtin command>";
752 }
753 
754 void TextNodeDumper::printFPOptions(FPOptionsOverride FPO) {
755 #define OPTION(NAME, TYPE, WIDTH, PREVIOUS) \
756  if (FPO.has##NAME##Override()) \
757  OS << " " #NAME "=" << FPO.get##NAME##Override();
758 #include "clang/Basic/FPOptions.def"
759 }
760 
762  const comments::FullComment *) {
763  OS << " Text=\"" << C->getText() << "\"";
764 }
765 
768  OS << " Name=\"" << getCommandName(C->getCommandID()) << "\"";
769  switch (C->getRenderKind()) {
771  OS << " RenderNormal";
772  break;
774  OS << " RenderBold";
775  break;
777  OS << " RenderMonospaced";
778  break;
780  OS << " RenderEmphasized";
781  break;
783  OS << " RenderAnchor";
784  break;
785  }
786 
787  for (unsigned i = 0, e = C->getNumArgs(); i != e; ++i)
788  OS << " Arg[" << i << "]=\"" << C->getArgText(i) << "\"";
789 }
790 
793  OS << " Name=\"" << C->getTagName() << "\"";
794  if (C->getNumAttrs() != 0) {
795  OS << " Attrs: ";
796  for (unsigned i = 0, e = C->getNumAttrs(); i != e; ++i) {
797  const comments::HTMLStartTagComment::Attribute &Attr = C->getAttr(i);
798  OS << " \"" << Attr.Name << "=\"" << Attr.Value << "\"";
799  }
800  }
801  if (C->isSelfClosing())
802  OS << " SelfClosing";
803 }
804 
807  OS << " Name=\"" << C->getTagName() << "\"";
808 }
809 
812  OS << " Name=\"" << getCommandName(C->getCommandID()) << "\"";
813  for (unsigned i = 0, e = C->getNumArgs(); i != e; ++i)
814  OS << " Arg[" << i << "]=\"" << C->getArgText(i) << "\"";
815 }
816 
819  OS << " "
821 
822  if (C->isDirectionExplicit())
823  OS << " explicitly";
824  else
825  OS << " implicitly";
826 
827  if (C->hasParamName()) {
828  if (C->isParamIndexValid())
829  OS << " Param=\"" << C->getParamName(FC) << "\"";
830  else
831  OS << " Param=\"" << C->getParamNameAsWritten() << "\"";
832  }
833 
834  if (C->isParamIndexValid() && !C->isVarArgParam())
835  OS << " ParamIndex=" << C->getParamIndex();
836 }
837 
840  if (C->hasParamName()) {
841  if (C->isPositionValid())
842  OS << " Param=\"" << C->getParamName(FC) << "\"";
843  else
844  OS << " Param=\"" << C->getParamNameAsWritten() << "\"";
845  }
846 
847  if (C->isPositionValid()) {
848  OS << " Position=<";
849  for (unsigned i = 0, e = C->getDepth(); i != e; ++i) {
850  OS << C->getIndex(i);
851  if (i != e - 1)
852  OS << ", ";
853  }
854  OS << ">";
855  }
856 }
857 
860  OS << " Name=\"" << getCommandName(C->getCommandID())
861  << "\""
862  " CloseName=\""
863  << C->getCloseName() << "\"";
864 }
865 
868  const comments::FullComment *) {
869  OS << " Text=\"" << C->getText() << "\"";
870 }
871 
874  OS << " Text=\"" << C->getText() << "\"";
875 }
876 
878  OS << " null";
879 }
880 
882  OS << " type";
883  dumpType(TA.getAsType());
884 }
885 
887  const TemplateArgument &TA) {
888  OS << " decl";
889  dumpDeclRef(TA.getAsDecl());
890 }
891 
893  OS << " nullptr";
894 }
895 
897  OS << " integral " << TA.getAsIntegral();
898 }
899 
901  OS << " template ";
902  TA.getAsTemplate().dump(OS);
903 }
904 
906  const TemplateArgument &TA) {
907  OS << " template expansion ";
909 }
910 
912  OS << " expr";
913 }
914 
916  OS << " pack";
917 }
918 
919 static void dumpBasePath(raw_ostream &OS, const CastExpr *Node) {
920  if (Node->path_empty())
921  return;
922 
923  OS << " (";
924  bool First = true;
925  for (CastExpr::path_const_iterator I = Node->path_begin(),
926  E = Node->path_end();
927  I != E; ++I) {
928  const CXXBaseSpecifier *Base = *I;
929  if (!First)
930  OS << " -> ";
931 
932  const auto *RD =
933  cast<CXXRecordDecl>(Base->getType()->castAs<RecordType>()->getDecl());
934 
935  if (Base->isVirtual())
936  OS << "virtual ";
937  OS << RD->getName();
938  First = false;
939  }
940 
941  OS << ')';
942 }
943 
945  if (Node->hasInitStorage())
946  OS << " has_init";
947  if (Node->hasVarStorage())
948  OS << " has_var";
949  if (Node->hasElseStorage())
950  OS << " has_else";
951  if (Node->isConstexpr())
952  OS << " constexpr";
953  if (Node->isConsteval()) {
954  OS << " ";
955  if (Node->isNegatedConsteval())
956  OS << "!";
957  OS << "consteval";
958  }
959 }
960 
962  if (Node->hasInitStorage())
963  OS << " has_init";
964  if (Node->hasVarStorage())
965  OS << " has_var";
966 }
967 
969  if (Node->hasVarStorage())
970  OS << " has_var";
971 }
972 
974  OS << " '" << Node->getName() << "'";
975  if (Node->isSideEntry())
976  OS << " side_entry";
977 }
978 
980  OS << " '" << Node->getLabel()->getName() << "'";
981  dumpPointer(Node->getLabel());
982 }
983 
985  if (Node->caseStmtIsGNURange())
986  OS << " gnu_range";
987 }
988 
990  if (Node->hasAPValueResult())
991  AddChild("value",
992  [=] { Visit(Node->getAPValueResult(), Node->getType()); });
993 }
994 
996  if (Node->usesADL())
997  OS << " adl";
998  if (Node->hasStoredFPFeatures())
999  printFPOptions(Node->getFPFeatures());
1000 }
1001 
1003  const char *OperatorSpelling = clang::getOperatorSpelling(Node->getOperator());
1004  if (OperatorSpelling)
1005  OS << " '" << OperatorSpelling << "'";
1006 
1008 }
1009 
1011  OS << " <";
1012  {
1013  ColorScope Color(OS, ShowColors, CastColor);
1014  OS << Node->getCastKindName();
1015  }
1016  dumpBasePath(OS, Node);
1017  OS << ">";
1018  if (Node->hasStoredFPFeatures())
1019  printFPOptions(Node->getFPFeatures());
1020 }
1021 
1024  if (Node->isPartOfExplicitCast())
1025  OS << " part_of_explicit_cast";
1026 }
1027 
1029  OS << " ";
1030  dumpBareDeclRef(Node->getDecl());
1031  if (Node->getDecl() != Node->getFoundDecl()) {
1032  OS << " (";
1033  dumpBareDeclRef(Node->getFoundDecl());
1034  OS << ")";
1035  }
1036  switch (Node->isNonOdrUse()) {
1037  case NOUR_None: break;
1038  case NOUR_Unevaluated: OS << " non_odr_use_unevaluated"; break;
1039  case NOUR_Constant: OS << " non_odr_use_constant"; break;
1040  case NOUR_Discarded: OS << " non_odr_use_discarded"; break;
1041  }
1042 }
1043 
1045  const UnresolvedLookupExpr *Node) {
1046  OS << " (";
1047  if (!Node->requiresADL())
1048  OS << "no ";
1049  OS << "ADL) = '" << Node->getName() << '\'';
1050 
1051  UnresolvedLookupExpr::decls_iterator I = Node->decls_begin(),
1052  E = Node->decls_end();
1053  if (I == E)
1054  OS << " empty";
1055  for (; I != E; ++I)
1056  dumpPointer(*I);
1057 }
1058 
1060  {
1061  ColorScope Color(OS, ShowColors, DeclKindNameColor);
1062  OS << " " << Node->getDecl()->getDeclKindName() << "Decl";
1063  }
1064  OS << "='" << *Node->getDecl() << "'";
1065  dumpPointer(Node->getDecl());
1066  if (Node->isFreeIvar())
1067  OS << " isFreeIvar";
1068 }
1069 
1071  const SYCLUniqueStableNameExpr *Node) {
1072  dumpType(Node->getTypeSourceInfo()->getType());
1073 }
1074 
1076  OS << " " << PredefinedExpr::getIdentKindName(Node->getIdentKind());
1077 }
1078 
1080  ColorScope Color(OS, ShowColors, ValueColor);
1081  OS << " " << Node->getValue();
1082 }
1083 
1085  bool isSigned = Node->getType()->isSignedIntegerType();
1086  ColorScope Color(OS, ShowColors, ValueColor);
1087  OS << " " << toString(Node->getValue(), 10, isSigned);
1088 }
1089 
1091  ColorScope Color(OS, ShowColors, ValueColor);
1092  OS << " " << Node->getValueAsString(/*Radix=*/10);
1093 }
1094 
1096  ColorScope Color(OS, ShowColors, ValueColor);
1097  OS << " " << Node->getValueAsApproximateDouble();
1098 }
1099 
1101  ColorScope Color(OS, ShowColors, ValueColor);
1102  OS << " ";
1103  Str->outputString(OS);
1104 }
1105 
1107  if (auto *Field = ILE->getInitializedFieldInUnion()) {
1108  OS << " field ";
1109  dumpBareDeclRef(Field);
1110  }
1111 }
1112 
1114  if (E->isResultDependent())
1115  OS << " result_dependent";
1116 }
1117 
1119  OS << " " << (Node->isPostfix() ? "postfix" : "prefix") << " '"
1120  << UnaryOperator::getOpcodeStr(Node->getOpcode()) << "'";
1121  if (!Node->canOverflow())
1122  OS << " cannot overflow";
1123  if (Node->hasStoredFPFeatures())
1124  printFPOptions(Node->getStoredFPFeatures());
1125 }
1126 
1128  const UnaryExprOrTypeTraitExpr *Node) {
1129  OS << " " << getTraitSpelling(Node->getKind());
1130 
1131  if (Node->isArgumentType())
1132  dumpType(Node->getArgumentType());
1133 }
1134 
1136  OS << " " << (Node->isArrow() ? "->" : ".") << *Node->getMemberDecl();
1137  dumpPointer(Node->getMemberDecl());
1138  switch (Node->isNonOdrUse()) {
1139  case NOUR_None: break;
1140  case NOUR_Unevaluated: OS << " non_odr_use_unevaluated"; break;
1141  case NOUR_Constant: OS << " non_odr_use_constant"; break;
1142  case NOUR_Discarded: OS << " non_odr_use_discarded"; break;
1143  }
1144 }
1145 
1147  const ExtVectorElementExpr *Node) {
1148  OS << " " << Node->getAccessor().getNameStart();
1149 }
1150 
1152  OS << " '" << BinaryOperator::getOpcodeStr(Node->getOpcode()) << "'";
1153  if (Node->hasStoredFPFeatures())
1154  printFPOptions(Node->getStoredFPFeatures());
1155 }
1156 
1158  const CompoundAssignOperator *Node) {
1159  OS << " '" << BinaryOperator::getOpcodeStr(Node->getOpcode())
1160  << "' ComputeLHSTy=";
1161  dumpBareType(Node->getComputationLHSType());
1162  OS << " ComputeResultTy=";
1163  dumpBareType(Node->getComputationResultType());
1164  if (Node->hasStoredFPFeatures())
1165  printFPOptions(Node->getStoredFPFeatures());
1166 }
1167 
1169  OS << " " << Node->getLabel()->getName();
1170  dumpPointer(Node->getLabel());
1171 }
1172 
1174  OS << " " << Node->getCastName() << "<"
1175  << Node->getTypeAsWritten().getAsString() << ">"
1176  << " <" << Node->getCastKindName();
1177  dumpBasePath(OS, Node);
1178  OS << ">";
1179 }
1180 
1182  OS << " " << (Node->getValue() ? "true" : "false");
1183 }
1184 
1186  if (Node->isImplicit())
1187  OS << " implicit";
1188  OS << " this";
1189 }
1190 
1192  const CXXFunctionalCastExpr *Node) {
1193  OS << " functional cast to " << Node->getTypeAsWritten().getAsString() << " <"
1194  << Node->getCastKindName() << ">";
1195  if (Node->hasStoredFPFeatures())
1196  printFPOptions(Node->getFPFeatures());
1197 }
1198 
1201  if (Node->hasStoredFPFeatures())
1202  printFPOptions(Node->getFPFeatures());
1203 }
1204 
1207  dumpType(Node->getTypeAsWritten());
1208  if (Node->isListInitialization())
1209  OS << " list";
1210 }
1211 
1213  CXXConstructorDecl *Ctor = Node->getConstructor();
1214  dumpType(Ctor->getType());
1215  if (Node->isElidable())
1216  OS << " elidable";
1217  if (Node->isListInitialization())
1218  OS << " list";
1219  if (Node->isStdInitListInitialization())
1220  OS << " std::initializer_list";
1221  if (Node->requiresZeroInitialization())
1222  OS << " zeroing";
1223 }
1224 
1226  const CXXBindTemporaryExpr *Node) {
1227  OS << " (CXXTemporary";
1228  dumpPointer(Node);
1229  OS << ")";
1230 }
1231 
1233  if (Node->isGlobalNew())
1234  OS << " global";
1235  if (Node->isArray())
1236  OS << " array";
1237  if (Node->getOperatorNew()) {
1238  OS << ' ';
1239  dumpBareDeclRef(Node->getOperatorNew());
1240  }
1241  // We could dump the deallocation function used in case of error, but it's
1242  // usually not that interesting.
1243 }
1244 
1246  if (Node->isGlobalDelete())
1247  OS << " global";
1248  if (Node->isArrayForm())
1249  OS << " array";
1250  if (Node->getOperatorDelete()) {
1251  OS << ' ';
1252  dumpBareDeclRef(Node->getOperatorDelete());
1253  }
1254 }
1255 
1257  OS << " " << getTraitSpelling(Node->getTrait());
1258 }
1259 
1261  OS << " " << getTraitSpelling(Node->getTrait());
1262 }
1263 
1265  OS << " " << getTraitSpelling(Node->getTrait());
1266 }
1267 
1269  const MaterializeTemporaryExpr *Node) {
1270  if (const ValueDecl *VD = Node->getExtendingDecl()) {
1271  OS << " extended by ";
1272  dumpBareDeclRef(VD);
1273  }
1274 }
1275 
1277  for (unsigned i = 0, e = Node->getNumObjects(); i != e; ++i)
1278  dumpCleanupObject(Node->getObject(i));
1279 }
1280 
1282  dumpPointer(Node->getPack());
1283  dumpName(Node->getPack());
1284 }
1285 
1288  OS << " " << (Node->isArrow() ? "->" : ".") << Node->getMember();
1289 }
1290 
1292  OS << " selector=";
1293  Node->getSelector().print(OS);
1294  switch (Node->getReceiverKind()) {
1296  break;
1297 
1299  OS << " class=";
1300  dumpBareType(Node->getClassReceiver());
1301  break;
1302 
1304  OS << " super (instance)";
1305  break;
1306 
1308  OS << " super (class)";
1309  break;
1310  }
1311 }
1312 
1314  if (auto *BoxingMethod = Node->getBoxingMethod()) {
1315  OS << " selector=";
1316  BoxingMethod->getSelector().print(OS);
1317  }
1318 }
1319 
1321  if (!Node->getCatchParamDecl())
1322  OS << " catch all";
1323 }
1324 
1326  dumpType(Node->getEncodedType());
1327 }
1328 
1330  OS << " ";
1331  Node->getSelector().print(OS);
1332 }
1333 
1335  OS << ' ' << *Node->getProtocol();
1336 }
1337 
1339  if (Node->isImplicitProperty()) {
1340  OS << " Kind=MethodRef Getter=\"";
1341  if (Node->getImplicitPropertyGetter())
1342  Node->getImplicitPropertyGetter()->getSelector().print(OS);
1343  else
1344  OS << "(null)";
1345 
1346  OS << "\" Setter=\"";
1347  if (ObjCMethodDecl *Setter = Node->getImplicitPropertySetter())
1348  Setter->getSelector().print(OS);
1349  else
1350  OS << "(null)";
1351  OS << "\"";
1352  } else {
1353  OS << " Kind=PropertyRef Property=\"" << *Node->getExplicitProperty()
1354  << '"';
1355  }
1356 
1357  if (Node->isSuperReceiver())
1358  OS << " super";
1359 
1360  OS << " Messaging=";
1361  if (Node->isMessagingGetter() && Node->isMessagingSetter())
1362  OS << "Getter&Setter";
1363  else if (Node->isMessagingGetter())
1364  OS << "Getter";
1365  else if (Node->isMessagingSetter())
1366  OS << "Setter";
1367 }
1368 
1370  const ObjCSubscriptRefExpr *Node) {
1371  if (Node->isArraySubscriptRefExpr())
1372  OS << " Kind=ArraySubscript GetterForArray=\"";
1373  else
1374  OS << " Kind=DictionarySubscript GetterForDictionary=\"";
1375  if (Node->getAtIndexMethodDecl())
1376  Node->getAtIndexMethodDecl()->getSelector().print(OS);
1377  else
1378  OS << "(null)";
1379 
1380  if (Node->isArraySubscriptRefExpr())
1381  OS << "\" SetterForArray=\"";
1382  else
1383  OS << "\" SetterForDictionary=\"";
1384  if (Node->setAtIndexMethodDecl())
1385  Node->setAtIndexMethodDecl()->getSelector().print(OS);
1386  else
1387  OS << "(null)";
1388 }
1389 
1391  OS << " " << (Node->getValue() ? "__objc_yes" : "__objc_no");
1392 }
1393 
1395  OS << " ";
1396  for (unsigned I = 0, E = Node->numOfIterators(); I < E; ++I) {
1397  Visit(Node->getIteratorDecl(I));
1398  OS << " = ";
1399  const OMPIteratorExpr::IteratorRange Range = Node->getIteratorRange(I);
1400  OS << " begin ";
1401  Visit(Range.Begin);
1402  OS << " end ";
1403  Visit(Range.End);
1404  if (Range.Step) {
1405  OS << " step ";
1406  Visit(Range.Step);
1407  }
1408  }
1409 }
1410 
1413  OS << " ";
1414  dumpBareDeclRef(Node->getFoundDecl());
1415 }
1416 
1418  const RequiresExpr *Node) {
1419  if (!Node->isValueDependent())
1420  OS << (Node->isSatisfied() ? " satisfied" : " unsatisfied");
1421 }
1422 
1424  if (T->isSpelledAsLValue())
1425  OS << " written as lvalue reference";
1426 }
1427 
1429  switch (T->getSizeModifier()) {
1430  case ArrayType::Normal:
1431  break;
1432  case ArrayType::Static:
1433  OS << " static";
1434  break;
1435  case ArrayType::Star:
1436  OS << " *";
1437  break;
1438  }
1439  OS << " " << T->getIndexTypeQualifiers().getAsString();
1440 }
1441 
1443  OS << " " << T->getSize();
1444  VisitArrayType(T);
1445 }
1446 
1448  OS << " ";
1450  VisitArrayType(T);
1451 }
1452 
1454  const DependentSizedArrayType *T) {
1455  VisitArrayType(T);
1456  OS << " ";
1458 }
1459 
1461  const DependentSizedExtVectorType *T) {
1462  OS << " ";
1464 }
1465 
1467  switch (T->getVectorKind()) {
1469  break;
1471  OS << " altivec";
1472  break;
1474  OS << " altivec pixel";
1475  break;
1477  OS << " altivec bool";
1478  break;
1480  OS << " neon";
1481  break;
1483  OS << " neon poly";
1484  break;
1486  OS << " fixed-length sve data vector";
1487  break;
1489  OS << " fixed-length sve predicate vector";
1490  break;
1491  }
1492  OS << " " << T->getNumElements();
1493 }
1494 
1496  auto EI = T->getExtInfo();
1497  if (EI.getNoReturn())
1498  OS << " noreturn";
1499  if (EI.getProducesResult())
1500  OS << " produces_result";
1501  if (EI.getHasRegParm())
1502  OS << " regparm " << EI.getRegParm();
1503  OS << " " << FunctionType::getNameForCallConv(EI.getCC());
1504 }
1505 
1507  auto EPI = T->getExtProtoInfo();
1508  if (EPI.HasTrailingReturn)
1509  OS << " trailing_return";
1510  if (T->isConst())
1511  OS << " const";
1512  if (T->isVolatile())
1513  OS << " volatile";
1514  if (T->isRestrict())
1515  OS << " restrict";
1516  if (T->getExtProtoInfo().Variadic)
1517  OS << " variadic";
1518  switch (EPI.RefQualifier) {
1519  case RQ_None:
1520  break;
1521  case RQ_LValue:
1522  OS << " &";
1523  break;
1524  case RQ_RValue:
1525  OS << " &&";
1526  break;
1527  }
1528  // FIXME: Exception specification.
1529  // FIXME: Consumed parameters.
1530  VisitFunctionType(T);
1531 }
1532 
1534  dumpDeclRef(T->getDecl());
1535 }
1536 
1538  dumpDeclRef(T->getDecl());
1539 }
1540 
1542  switch (T->getUTTKind()) {
1544  OS << " underlying_type";
1545  break;
1546  }
1547 }
1548 
1550  dumpDeclRef(T->getDecl());
1551 }
1552 
1554  OS << " depth " << T->getDepth() << " index " << T->getIndex();
1555  if (T->isParameterPack())
1556  OS << " pack";
1557  dumpDeclRef(T->getDecl());
1558 }
1559 
1561  if (T->isDecltypeAuto())
1562  OS << " decltype(auto)";
1563  if (!T->isDeduced())
1564  OS << " undeduced";
1565  if (T->isConstrained()) {
1567  for (const auto &Arg : T->getTypeConstraintArguments())
1568  VisitTemplateArgument(Arg);
1569  }
1570 }
1571 
1573  const TemplateSpecializationType *T) {
1574  if (T->isTypeAlias())
1575  OS << " alias";
1576  OS << " ";
1577  T->getTemplateName().dump(OS);
1578 }
1579 
1581  const InjectedClassNameType *T) {
1582  dumpDeclRef(T->getDecl());
1583 }
1584 
1586  dumpDeclRef(T->getDecl());
1587 }
1588 
1590  if (auto N = T->getNumExpansions())
1591  OS << " expansions " << *N;
1592 }
1593 
1595 
1597  dumpName(D);
1599  if (D->isModulePrivate())
1600  OS << " __module_private__";
1601 }
1602 
1604  if (D->isScoped()) {
1605  if (D->isScopedUsingClassTag())
1606  OS << " class";
1607  else
1608  OS << " struct";
1609  }
1610  dumpName(D);
1611  if (D->isModulePrivate())
1612  OS << " __module_private__";
1613  if (D->isFixed())
1614  dumpType(D->getIntegerType());
1615 }
1616 
1618  OS << ' ' << D->getKindName();
1619  dumpName(D);
1620  if (D->isModulePrivate())
1621  OS << " __module_private__";
1622  if (D->isCompleteDefinition())
1623  OS << " definition";
1624 }
1625 
1627  dumpName(D);
1628  dumpType(D->getType());
1629 }
1630 
1632  dumpName(D);
1633  dumpType(D->getType());
1634 
1635  for (const auto *Child : D->chain())
1636  dumpDeclRef(Child);
1637 }
1638 
1640  dumpName(D);
1641  dumpType(D->getType());
1642 
1643  StorageClass SC = D->getStorageClass();
1644  if (SC != SC_None)
1645  OS << ' ' << VarDecl::getStorageClassSpecifierString(SC);
1646  if (D->isInlineSpecified())
1647  OS << " inline";
1648  if (D->isVirtualAsWritten())
1649  OS << " virtual";
1650  if (D->isModulePrivate())
1651  OS << " __module_private__";
1652 
1653  if (D->isPure())
1654  OS << " pure";
1655  if (D->isDefaulted()) {
1656  OS << " default";
1657  if (D->isDeleted())
1658  OS << "_delete";
1659  }
1660  if (D->isDeletedAsWritten())
1661  OS << " delete";
1662  if (D->isTrivial())
1663  OS << " trivial";
1664 
1665  if (const auto *FPT = D->getType()->getAs<FunctionProtoType>()) {
1666  FunctionProtoType::ExtProtoInfo EPI = FPT->getExtProtoInfo();
1667  switch (EPI.ExceptionSpec.Type) {
1668  default:
1669  break;
1670  case EST_Unevaluated:
1671  OS << " noexcept-unevaluated " << EPI.ExceptionSpec.SourceDecl;
1672  break;
1673  case EST_Uninstantiated:
1674  OS << " noexcept-uninstantiated " << EPI.ExceptionSpec.SourceTemplate;
1675  break;
1676  }
1677  }
1678 
1679  if (const auto *MD = dyn_cast<CXXMethodDecl>(D)) {
1680  if (MD->size_overridden_methods() != 0) {
1681  auto dumpOverride = [=](const CXXMethodDecl *D) {
1682  SplitQualType T_split = D->getType().split();
1683  OS << D << " " << D->getParent()->getName() << "::" << D->getDeclName()
1684  << " '" << QualType::getAsString(T_split, PrintPolicy) << "'";
1685  };
1686 
1687  AddChild([=] {
1688  auto Overrides = MD->overridden_methods();
1689  OS << "Overrides: [ ";
1690  dumpOverride(*Overrides.begin());
1691  for (const auto *Override :
1692  llvm::make_range(Overrides.begin() + 1, Overrides.end())) {
1693  OS << ", ";
1694  dumpOverride(Override);
1695  }
1696  OS << " ]";
1697  });
1698  }
1699  }
1700 
1701  // Since NumParams comes from the FunctionProtoType of the FunctionDecl and
1702  // the Params are set later, it is possible for a dump during debugging to
1703  // encounter a FunctionDecl that has been created but hasn't been assigned
1704  // ParmVarDecls yet.
1705  if (!D->param_empty() && !D->param_begin())
1706  OS << " <<<NULL params x " << D->getNumParams() << ">>>";
1707 }
1708 
1710  const LifetimeExtendedTemporaryDecl *D) {
1711  OS << " extended by ";
1713  OS << " mangling ";
1714  {
1715  ColorScope Color(OS, ShowColors, ValueColor);
1716  OS << D->getManglingNumber();
1717  }
1718 }
1719 
1721  dumpName(D);
1722  dumpType(D->getType());
1723  if (D->isMutable())
1724  OS << " mutable";
1725  if (D->isModulePrivate())
1726  OS << " __module_private__";
1727 }
1728 
1730  dumpName(D);
1731  dumpType(D->getType());
1732  StorageClass SC = D->getStorageClass();
1733  if (SC != SC_None)
1734  OS << ' ' << VarDecl::getStorageClassSpecifierString(SC);
1735  switch (D->getTLSKind()) {
1736  case VarDecl::TLS_None:
1737  break;
1738  case VarDecl::TLS_Static:
1739  OS << " tls";
1740  break;
1741  case VarDecl::TLS_Dynamic:
1742  OS << " tls_dynamic";
1743  break;
1744  }
1745  if (D->isModulePrivate())
1746  OS << " __module_private__";
1747  if (D->isNRVOVariable())
1748  OS << " nrvo";
1749  if (D->isInline())
1750  OS << " inline";
1751  if (D->isConstexpr())
1752  OS << " constexpr";
1753  if (D->hasInit()) {
1754  switch (D->getInitStyle()) {
1755  case VarDecl::CInit:
1756  OS << " cinit";
1757  break;
1758  case VarDecl::CallInit:
1759  OS << " callinit";
1760  break;
1761  case VarDecl::ListInit:
1762  OS << " listinit";
1763  break;
1764  }
1765  }
1766  if (D->needsDestruction(D->getASTContext()))
1767  OS << " destroyed";
1768  if (D->isParameterPack())
1769  OS << " pack";
1770 
1771  if (D->hasInit()) {
1772  const Expr *E = D->getInit();
1773  // Only dump the value of constexpr VarDecls for now.
1774  if (E && !E->isValueDependent() && D->isConstexpr()) {
1775  const APValue *Value = D->evaluateValue();
1776  if (Value)
1777  AddChild("value", [=] { Visit(*Value, E->getType()); });
1778  }
1779  }
1780 }
1781 
1783  dumpName(D);
1784  dumpType(D->getType());
1785 }
1786 
1788  if (D->isNothrow())
1789  OS << " nothrow";
1790 }
1791 
1793  OS << ' ' << D->getImportedModule()->getFullModuleName();
1794 
1795  for (Decl *InitD :
1797  dumpDeclRef(InitD, "initializer");
1798 }
1799 
1801  OS << ' ';
1802  switch (D->getCommentKind()) {
1803  case PCK_Unknown:
1804  llvm_unreachable("unexpected pragma comment kind");
1805  case PCK_Compiler:
1806  OS << "compiler";
1807  break;
1808  case PCK_ExeStr:
1809  OS << "exestr";
1810  break;
1811  case PCK_Lib:
1812  OS << "lib";
1813  break;
1814  case PCK_Linker:
1815  OS << "linker";
1816  break;
1817  case PCK_User:
1818  OS << "user";
1819  break;
1820  }
1821  StringRef Arg = D->getArg();
1822  if (!Arg.empty())
1823  OS << " \"" << Arg << "\"";
1824 }
1825 
1827  const PragmaDetectMismatchDecl *D) {
1828  OS << " \"" << D->getName() << "\" \"" << D->getValue() << "\"";
1829 }
1830 
1832  const OMPExecutableDirective *D) {
1833  if (D->isStandaloneDirective())
1834  OS << " openmp_standalone_directive";
1835 }
1836 
1838  const OMPDeclareReductionDecl *D) {
1839  dumpName(D);
1840  dumpType(D->getType());
1841  OS << " combiner";
1842  dumpPointer(D->getCombiner());
1843  if (const auto *Initializer = D->getInitializer()) {
1844  OS << " initializer";
1846  switch (D->getInitializerKind()) {
1848  OS << " omp_priv = ";
1849  break;
1851  OS << " omp_priv ()";
1852  break;
1854  break;
1855  }
1856  }
1857 }
1858 
1860  for (const auto *C : D->clauselists()) {
1861  AddChild([=] {
1862  if (!C) {
1863  ColorScope Color(OS, ShowColors, NullColor);
1864  OS << "<<<NULL>>> OMPClause";
1865  return;
1866  }
1867  {
1868  ColorScope Color(OS, ShowColors, AttrColor);
1869  StringRef ClauseName(
1870  llvm::omp::getOpenMPClauseName(C->getClauseKind()));
1871  OS << "OMP" << ClauseName.substr(/*Start=*/0, /*N=*/1).upper()
1872  << ClauseName.drop_front() << "Clause";
1873  }
1874  dumpPointer(C);
1875  dumpSourceRange(SourceRange(C->getBeginLoc(), C->getEndLoc()));
1876  });
1877  }
1878 }
1879 
1881  dumpName(D);
1882  dumpType(D->getType());
1883 }
1884 
1886  dumpName(D);
1887  if (D->isInline())
1888  OS << " inline";
1889  if (!D->isOriginalNamespace())
1890  dumpDeclRef(D->getOriginalNamespace(), "original");
1891 }
1892 
1894  OS << ' ';
1896 }
1897 
1899  dumpName(D);
1901 }
1902 
1904  dumpName(D);
1906 }
1907 
1909  const TypeAliasTemplateDecl *D) {
1910  dumpName(D);
1911 }
1912 
1914  VisitRecordDecl(D);
1915  if (!D->isCompleteDefinition())
1916  return;
1917 
1918  AddChild([=] {
1919  {
1920  ColorScope Color(OS, ShowColors, DeclKindNameColor);
1921  OS << "DefinitionData";
1922  }
1923 #define FLAG(fn, name) \
1924  if (D->fn()) \
1925  OS << " " #name;
1926  FLAG(isParsingBaseSpecifiers, parsing_base_specifiers);
1927 
1928  FLAG(isGenericLambda, generic);
1929  FLAG(isLambda, lambda);
1930 
1931  FLAG(isAnonymousStructOrUnion, is_anonymous);
1932  FLAG(canPassInRegisters, pass_in_registers);
1933  FLAG(isEmpty, empty);
1934  FLAG(isAggregate, aggregate);
1935  FLAG(isStandardLayout, standard_layout);
1936  FLAG(isTriviallyCopyable, trivially_copyable);
1937  FLAG(isPOD, pod);
1938  FLAG(isTrivial, trivial);
1939  FLAG(isPolymorphic, polymorphic);
1940  FLAG(isAbstract, abstract);
1941  FLAG(isLiteral, literal);
1942 
1943  FLAG(hasUserDeclaredConstructor, has_user_declared_ctor);
1944  FLAG(hasConstexprNonCopyMoveConstructor, has_constexpr_non_copy_move_ctor);
1945  FLAG(hasMutableFields, has_mutable_fields);
1946  FLAG(hasVariantMembers, has_variant_members);
1947  FLAG(allowConstDefaultInit, can_const_default_init);
1948 
1949  AddChild([=] {
1950  {
1951  ColorScope Color(OS, ShowColors, DeclKindNameColor);
1952  OS << "DefaultConstructor";
1953  }
1954  FLAG(hasDefaultConstructor, exists);
1955  FLAG(hasTrivialDefaultConstructor, trivial);
1956  FLAG(hasNonTrivialDefaultConstructor, non_trivial);
1957  FLAG(hasUserProvidedDefaultConstructor, user_provided);
1958  FLAG(hasConstexprDefaultConstructor, constexpr);
1959  FLAG(needsImplicitDefaultConstructor, needs_implicit);
1960  FLAG(defaultedDefaultConstructorIsConstexpr, defaulted_is_constexpr);
1961  });
1962 
1963  AddChild([=] {
1964  {
1965  ColorScope Color(OS, ShowColors, DeclKindNameColor);
1966  OS << "CopyConstructor";
1967  }
1968  FLAG(hasSimpleCopyConstructor, simple);
1969  FLAG(hasTrivialCopyConstructor, trivial);
1970  FLAG(hasNonTrivialCopyConstructor, non_trivial);
1971  FLAG(hasUserDeclaredCopyConstructor, user_declared);
1972  FLAG(hasCopyConstructorWithConstParam, has_const_param);
1973  FLAG(needsImplicitCopyConstructor, needs_implicit);
1974  FLAG(needsOverloadResolutionForCopyConstructor,
1975  needs_overload_resolution);
1977  FLAG(defaultedCopyConstructorIsDeleted, defaulted_is_deleted);
1978  FLAG(implicitCopyConstructorHasConstParam, implicit_has_const_param);
1979  });
1980 
1981  AddChild([=] {
1982  {
1983  ColorScope Color(OS, ShowColors, DeclKindNameColor);
1984  OS << "MoveConstructor";
1985  }
1986  FLAG(hasMoveConstructor, exists);
1987  FLAG(hasSimpleMoveConstructor, simple);
1988  FLAG(hasTrivialMoveConstructor, trivial);
1989  FLAG(hasNonTrivialMoveConstructor, non_trivial);
1990  FLAG(hasUserDeclaredMoveConstructor, user_declared);
1991  FLAG(needsImplicitMoveConstructor, needs_implicit);
1992  FLAG(needsOverloadResolutionForMoveConstructor,
1993  needs_overload_resolution);
1995  FLAG(defaultedMoveConstructorIsDeleted, defaulted_is_deleted);
1996  });
1997 
1998  AddChild([=] {
1999  {
2000  ColorScope Color(OS, ShowColors, DeclKindNameColor);
2001  OS << "CopyAssignment";
2002  }
2003  FLAG(hasSimpleCopyAssignment, simple);
2004  FLAG(hasTrivialCopyAssignment, trivial);
2005  FLAG(hasNonTrivialCopyAssignment, non_trivial);
2006  FLAG(hasCopyAssignmentWithConstParam, has_const_param);
2007  FLAG(hasUserDeclaredCopyAssignment, user_declared);
2008  FLAG(needsImplicitCopyAssignment, needs_implicit);
2009  FLAG(needsOverloadResolutionForCopyAssignment, needs_overload_resolution);
2010  FLAG(implicitCopyAssignmentHasConstParam, implicit_has_const_param);
2011  });
2012 
2013  AddChild([=] {
2014  {
2015  ColorScope Color(OS, ShowColors, DeclKindNameColor);
2016  OS << "MoveAssignment";
2017  }
2018  FLAG(hasMoveAssignment, exists);
2019  FLAG(hasSimpleMoveAssignment, simple);
2020  FLAG(hasTrivialMoveAssignment, trivial);
2021  FLAG(hasNonTrivialMoveAssignment, non_trivial);
2022  FLAG(hasUserDeclaredMoveAssignment, user_declared);
2023  FLAG(needsImplicitMoveAssignment, needs_implicit);
2024  FLAG(needsOverloadResolutionForMoveAssignment, needs_overload_resolution);
2025  });
2026 
2027  AddChild([=] {
2028  {
2029  ColorScope Color(OS, ShowColors, DeclKindNameColor);
2030  OS << "Destructor";
2031  }
2032  FLAG(hasSimpleDestructor, simple);
2033  FLAG(hasIrrelevantDestructor, irrelevant);
2034  FLAG(hasTrivialDestructor, trivial);
2035  FLAG(hasNonTrivialDestructor, non_trivial);
2036  FLAG(hasUserDeclaredDestructor, user_declared);
2037  FLAG(hasConstexprDestructor, constexpr);
2038  FLAG(needsImplicitDestructor, needs_implicit);
2039  FLAG(needsOverloadResolutionForDestructor, needs_overload_resolution);
2041  FLAG(defaultedDestructorIsDeleted, defaulted_is_deleted);
2042  });
2043  });
2044 
2045  for (const auto &I : D->bases()) {
2046  AddChild([=] {
2047  if (I.isVirtual())
2048  OS << "virtual ";
2049  dumpAccessSpecifier(I.getAccessSpecifier());
2050  dumpType(I.getType());
2051  if (I.isPackExpansion())
2052  OS << "...";
2053  });
2054  }
2055 }
2056 
2058  dumpName(D);
2059 }
2060 
2062  dumpName(D);
2063 }
2064 
2066  dumpName(D);
2067 }
2068 
2070  dumpName(D);
2071 }
2072 
2074  if (const auto *TC = D->getTypeConstraint()) {
2075  OS << " ";
2076  dumpBareDeclRef(TC->getNamedConcept());
2077  if (TC->getNamedConcept() != TC->getFoundDecl()) {
2078  OS << " (";
2079  dumpBareDeclRef(TC->getFoundDecl());
2080  OS << ")";
2081  }
2082  } else if (D->wasDeclaredWithTypename())
2083  OS << " typename";
2084  else
2085  OS << " class";
2086  OS << " depth " << D->getDepth() << " index " << D->getIndex();
2087  if (D->isParameterPack())
2088  OS << " ...";
2089  dumpName(D);
2090 }
2091 
2093  const NonTypeTemplateParmDecl *D) {
2094  dumpType(D->getType());
2095  OS << " depth " << D->getDepth() << " index " << D->getIndex();
2096  if (D->isParameterPack())
2097  OS << " ...";
2098  dumpName(D);
2099 }
2100 
2102  const TemplateTemplateParmDecl *D) {
2103  OS << " depth " << D->getDepth() << " index " << D->getIndex();
2104  if (D->isParameterPack())
2105  OS << " ...";
2106  dumpName(D);
2107 }
2108 
2110  OS << ' ';
2111  if (D->getQualifier())
2113  OS << D->getDeclName();
2114 }
2115 
2117  OS << ' ';
2119 }
2120 
2122  const UnresolvedUsingTypenameDecl *D) {
2123  OS << ' ';
2124  if (D->getQualifier())
2126  OS << D->getDeclName();
2127 }
2128 
2130  const UnresolvedUsingValueDecl *D) {
2131  OS << ' ';
2132  if (D->getQualifier())
2134  OS << D->getDeclName();
2135  dumpType(D->getType());
2136 }
2137 
2139  OS << ' ';
2141 }
2142 
2144  const ConstructorUsingShadowDecl *D) {
2145  if (D->constructsVirtualBase())
2146  OS << " virtual";
2147 
2148  AddChild([=] {
2149  OS << "target ";
2151  });
2152 
2153  AddChild([=] {
2154  OS << "nominated ";
2156  OS << ' ';
2158  });
2159 
2160  AddChild([=] {
2161  OS << "constructed ";
2163  OS << ' ';
2165  });
2166 }
2167 
2169  switch (D->getLanguage()) {
2171  OS << " C";
2172  break;
2174  OS << " C++";
2175  break;
2176  }
2177 }
2178 
2180  OS << ' ';
2182 }
2183 
2185  if (TypeSourceInfo *T = D->getFriendType())
2186  dumpType(T->getType());
2187 }
2188 
2190  dumpName(D);
2191  dumpType(D->getType());
2192  if (D->getSynthesize())
2193  OS << " synthesize";
2194 
2195  switch (D->getAccessControl()) {
2196  case ObjCIvarDecl::None:
2197  OS << " none";
2198  break;
2199  case ObjCIvarDecl::Private:
2200  OS << " private";
2201  break;
2203  OS << " protected";
2204  break;
2205  case ObjCIvarDecl::Public:
2206  OS << " public";
2207  break;
2208  case ObjCIvarDecl::Package:
2209  OS << " package";
2210  break;
2211  }
2212 }
2213 
2215  if (D->isInstanceMethod())
2216  OS << " -";
2217  else
2218  OS << " +";
2219  dumpName(D);
2220  dumpType(D->getReturnType());
2221 
2222  if (D->isVariadic())
2223  OS << " variadic";
2224 }
2225 
2227  dumpName(D);
2228  switch (D->getVariance()) {
2230  break;
2231 
2233  OS << " covariant";
2234  break;
2235 
2237  OS << " contravariant";
2238  break;
2239  }
2240 
2241  if (D->hasExplicitBound())
2242  OS << " bounded";
2244 }
2245 
2247  dumpName(D);
2250  for (const auto *P : D->protocols())
2251  dumpDeclRef(P);
2252 }
2253 
2255  dumpName(D);
2258 }
2259 
2261  dumpName(D);
2262 
2263  for (const auto *Child : D->protocols())
2264  dumpDeclRef(Child);
2265 }
2266 
2268  dumpName(D);
2269  dumpDeclRef(D->getSuperClass(), "super");
2270 
2272  for (const auto *Child : D->protocols())
2273  dumpDeclRef(Child);
2274 }
2275 
2277  const ObjCImplementationDecl *D) {
2278  dumpName(D);
2279  dumpDeclRef(D->getSuperClass(), "super");
2281 }
2282 
2284  const ObjCCompatibleAliasDecl *D) {
2285  dumpName(D);
2287 }
2288 
2290  dumpName(D);
2291  dumpType(D->getType());
2292 
2294  OS << " required";
2296  OS << " optional";
2297 
2299  if (Attrs != ObjCPropertyAttribute::kind_noattr) {
2301  OS << " readonly";
2303  OS << " assign";
2305  OS << " readwrite";
2307  OS << " retain";
2309  OS << " copy";
2311  OS << " nonatomic";
2313  OS << " atomic";
2315  OS << " weak";
2317  OS << " strong";
2319  OS << " unsafe_unretained";
2321  OS << " class";
2323  OS << " direct";
2325  dumpDeclRef(D->getGetterMethodDecl(), "getter");
2327  dumpDeclRef(D->getSetterMethodDecl(), "setter");
2328  }
2329 }
2330 
2332  dumpName(D->getPropertyDecl());
2334  OS << " synthesize";
2335  else
2336  OS << " dynamic";
2339 }
2340 
2342  if (D->isVariadic())
2343  OS << " variadic";
2344 
2345  if (D->capturesCXXThis())
2346  OS << " captures_this";
2347 }
2348 
2350  dumpName(D);
2351 }
clang::TextNodeDumper::VisitConceptDecl
void VisitConceptDecl(const ConceptDecl *D)
Definition: TextNodeDumper.cpp:2349
clang::comments::ParamCommandComment::getDirectionAsString
static const char * getDirectionAsString(PassDirection D)
Definition: Comment.cpp:192
clang::LabelStmt
LabelStmt - Represents a label, which has a substatement.
Definition: Stmt.h:1799
clang::ExpressionTraitExpr
An expression trait intrinsic.
Definition: ExprCXX.h:2823
clang::ObjCMessageExpr::SuperInstance
@ SuperInstance
The receiver is the instance of the superclass object.
Definition: ExprObjC.h:1097
clang::TagDecl::getKindName
StringRef getKindName() const
Definition: Decl.h:3503
clang::ObjCInterfaceDecl
Represents an ObjC class declaration.
Definition: DeclObjC.h:1151
clang::OMPIteratorExpr
OpenMP 5.0 [2.1.6 Iterators] Iterators are identifiers that expand to multiple values in the clause o...
Definition: ExprOpenMP.h:272
clang::ObjCTypeParamDecl::hasExplicitBound
bool hasExplicitBound() const
Whether this type parameter has an explicitly-written type bound, e.g., "T : NSView".
Definition: DeclObjC.h:642
clang::comments::CommentVisitorBase< llvm::make_const_ptr, TextNodeDumper, void, ParamTys... >::visit
void visit(PTR(Comment) C, ParamTys... P)
Definition: CommentVisitor.h:27
clang::OMPDeclareReductionDecl::getInitializer
Expr * getInitializer()
Get initializer expression (if specified) of the declare reduction construct.
Definition: DeclOpenMP.h:239
clang::AttrColor
static const TerminalColor AttrColor
Definition: ASTDumperUtils.h:47
clang::ObjCPropertyImplDecl::getPropertyIvarDecl
ObjCIvarDecl * getPropertyIvarDecl() const
Definition: DeclObjC.h:2824
clang::CaseStmt
CaseStmt - Represent a case statement.
Definition: Stmt.h:1567
clang::FunctionDecl::param_empty
bool param_empty() const
Definition: Decl.h:2494
clang::ObjCCompatibleAliasDecl
ObjCCompatibleAliasDecl - Represents alias of a class.
Definition: DeclObjC.h:2721
max
__DEVICE__ int max(int __a, int __b)
Definition: __clang_cuda_math.h:196
clang::Decl::getASTContext
ASTContext & getASTContext() const LLVM_READONLY
Definition: DeclBase.cpp:414
clang::AccessSpecDecl
Represents an access specifier followed by colon ':'.
Definition: DeclCXX.h:87
clang::TextNodeDumper::VisitClassTemplateDecl
void VisitClassTemplateDecl(const ClassTemplateDecl *D)
Definition: TextNodeDumper.cpp:2061
clang::comments::VerbatimLineComment
A verbatim line command.
Definition: Comment.h:943
clang::FunctionDecl::isDefaulted
bool isDefaulted() const
Whether this function is defaulted.
Definition: Decl.h:2215
clang::TextNodeDumper::VisitObjCMessageExpr
void VisitObjCMessageExpr(const ObjCMessageExpr *Node)
Definition: TextNodeDumper.cpp:1291
clang::TextNodeDumper::VisitObjCCompatibleAliasDecl
void VisitObjCCompatibleAliasDecl(const ObjCCompatibleAliasDecl *D)
Definition: TextNodeDumper.cpp:2283
clang::CXXConstructorDecl
Represents a C++ constructor within a class.
Definition: DeclCXX.h:2401
clang::ArrayTypeTraitExpr
An Embarcadero array type trait, as used in the implementation of __array_rank and __array_extent.
Definition: ExprCXX.h:2753
clang::TextNodeDumper::VisitTypeTemplateArgument
void VisitTypeTemplateArgument(const TemplateArgument &TA)
Definition: TextNodeDumper.cpp:881
clang::ObjCBoxedExpr
ObjCBoxedExpr - used for generalized expression boxing.
Definition: ExprObjC.h:128
clang::TextNodeDumper::VisitCXXBindTemporaryExpr
void VisitCXXBindTemporaryExpr(const CXXBindTemporaryExpr *Node)
Definition: TextNodeDumper.cpp:1225
clang::TextNodeDumper::VisitRecordDecl
void VisitRecordDecl(const RecordDecl *D)
Definition: TextNodeDumper.cpp:1617
clang::BlockDecl::isVariadic
bool isVariadic() const
Definition: Decl.h:4228
clang::CXXBoolLiteralExpr
A boolean literal, per ([C++ lex.bool] Boolean literals).
Definition: ExprCXX.h:721
clang::ObjCProtocolDecl::protocols
protocol_range protocols() const
Definition: DeclObjC.h:2115
clang::FunctionDecl::getNumParams
unsigned getNumParams() const
Return the number of parameters this function must have based on its FunctionType.
Definition: Decl.cpp:3380
clang::NullColor
static const TerminalColor NullColor
Definition: ASTDumperUtils.h:69
Desugar
static QualType Desugar(ASTContext &Context, QualType QT, bool &ShouldAKA)
Definition: ASTDiagnostic.cpp:29
Specifiers.h
clang::VarDecl::getTLSKind
TLSKind getTLSKind() const
Definition: Decl.cpp:2051
clang::TextNodeDumper::VisitLinkageSpecDecl
void VisitLinkageSpecDecl(const LinkageSpecDecl *D)
Definition: TextNodeDumper.cpp:2168
clang::OK_Ordinary
@ OK_Ordinary
An ordinary object is located at an address in memory.
Definition: Specifiers.h:136
clang::Attr::isImplicit
bool isImplicit() const
Returns true if the attribute has been implicitly created instead of explicitly written by the user.
Definition: Attr.h:99
clang::comments::InlineCommandComment::RenderEmphasized
@ RenderEmphasized
Definition: Comment.h:312
clang::TypeSourceInfo::getType
QualType getType() const
Return the type wrapped by this type source info.
Definition: Type.h:6406
clang::ObjCIvarDecl::None
@ None
Definition: DeclObjC.h:1929
clang::TemplateTypeParmDecl::getIndex
unsigned getIndex() const
Retrieve the index of the template parameter.
Definition: DeclTemplate.cpp:680
clang::TextNodeDumper::VisitMaterializeTemporaryExpr
void VisitMaterializeTemporaryExpr(const MaterializeTemporaryExpr *Node)
Definition: TextNodeDumper.cpp:1268
clang::TemplateTypeParmType::getDecl
TemplateTypeParmDecl * getDecl() const
Definition: Type.h:4810
clang::VectorType::SveFixedLengthPredicateVector
@ SveFixedLengthPredicateVector
is AArch64 SVE fixed-length predicate vector
Definition: Type.h:3254
clang::Type::getTypeClassName
const char * getTypeClassName() const
Definition: Type.cpp:2933
clang::SwitchStmt
SwitchStmt - This represents a 'switch' stmt.
Definition: Stmt.h:2150
clang::OMPDeclareReductionDecl::CallInit
@ CallInit
Definition: DeclOpenMP.h:176
clang::GenericSelectionExpr::ConstAssociation
AssociationTy< true > ConstAssociation
Definition: Expr.h:5781
clang::FunctionType::isVolatile
bool isVolatile() const
Definition: Type.h:3828
clang::APValue::getStructNumFields
unsigned getStructNumFields() const
Definition: APValue.h:534
clang::AutoType::isConstrained
bool isConstrained() const
Definition: Type.h:5018
clang::LinkageSpecDecl
Represents a linkage specification.
Definition: DeclCXX.h:2797
clang::SourceRange
A trivial tuple used to represent a source range.
Definition: SourceLocation.h:212
clang::WhileStmt
WhileStmt - This represents a 'while' stmt.
Definition: Stmt.h:2341
clang::PresumedLoc::getLine
unsigned getLine() const
Return the presumed line number of this location.
Definition: SourceLocation.h:339
clang::AutoType::getTypeConstraintConcept
ConceptDecl * getTypeConstraintConcept() const
Definition: Type.h:5014
clang::TextNodeDumper::VisitTemplateExpansionTemplateArgument
void VisitTemplateExpansionTemplateArgument(const TemplateArgument &TA)
Definition: TextNodeDumper.cpp:905
clang::Redeclarable
Provides common interface for the Decls that can be redeclared.
Definition: Redeclarable.h:84
clang::TemplateArgument::getAsTemplateOrTemplatePattern
TemplateName getAsTemplateOrTemplatePattern() const
Retrieve the template argument as a template name; if the argument is a pack expansion,...
Definition: TemplateBase.h:300
clang::TextNodeDumper::VisitObjCAtCatchStmt
void VisitObjCAtCatchStmt(const ObjCAtCatchStmt *Node)
Definition: TextNodeDumper.cpp:1320
clang::ObjCPropertyDecl::getGetterMethodDecl
ObjCMethodDecl * getGetterMethodDecl() const
Definition: DeclObjC.h:901
clang::NonTypeTemplateParmDecl::getIndex
unsigned getIndex() const
Get the index of the template parameter within its parameter list.
Definition: DeclTemplate.h:1169
clang::TextNodeDumper::VisitCXXOperatorCallExpr
void VisitCXXOperatorCallExpr(const CXXOperatorCallExpr *Node)
Definition: TextNodeDumper.cpp:1002
clang::NamespaceAliasDecl
Represents a C++ namespace alias.
Definition: DeclCXX.h:2986
clang::ColorScope
Definition: ASTDumperUtils.h:86
clang::ObjCPropertyAttribute::kind_direct
@ kind_direct
Definition: DeclObjCCommon.h:41
clang::ObjCImplementationDecl
ObjCImplementationDecl - Represents a class definition - this is where method definitions are specifi...
Definition: DeclObjC.h:2546
clang::ConstantArrayType
Represents the canonical version of C arrays with a specified constant size.
Definition: Type.h:2929
clang::APValue::FixedPoint
@ FixedPoint
Definition: APValue.h:134
clang::ObjCTypeParamVariance::Invariant
@ Invariant
The parameter is invariant: must match exactly.
clang::FunctionDecl::isDeleted
bool isDeleted() const
Whether this function has been deleted.
Definition: Decl.h:2338
clang::UsingDecl::getQualifier
NestedNameSpecifier * getQualifier() const
Retrieve the nested-name-specifier that qualifies the name.
Definition: DeclCXX.h:3416
clang::ObjCIvarDecl::Protected
@ Protected
Definition: DeclObjC.h:1929
clang::TemplateSpecializationType::isTypeAlias
bool isTypeAlias() const
Determine if this template specialization type is for a type alias template that has been substituted...
Definition: Type.h:5164
clang::UsingDirectiveDecl
Represents C++ using-directive.
Definition: DeclCXX.h:2882
clang::OK_ObjCSubscript
@ OK_ObjCSubscript
An Objective-C array/dictionary subscripting which reads an object or writes at the subscripted array...
Definition: Specifiers.h:151
clang::TextNodeDumper::VisitAutoType
void VisitAutoType(const AutoType *T)
Definition: TextNodeDumper.cpp:1560
clang::ObjCPropertyAttribute::kind_class
@ kind_class
Definition: DeclObjCCommon.h:40
clang::ConstantArrayType::getSize
const llvm::APInt & getSize() const
Definition: Type.h:2952
clang::BindingDecl
A binding in a decomposition declaration.
Definition: DeclCXX.h:3959
clang::TextNodeDumper::VisitFunctionProtoType
void VisitFunctionProtoType(const FunctionProtoType *T)
Definition: TextNodeDumper.cpp:1506
clang::if
if(T->getSizeExpr()) TRY_TO(TraverseStmt(T -> getSizeExpr()))
Definition: RecursiveASTVisitor.h:1002
clang::SourceLocation
Encodes a location in the source.
Definition: SourceLocation.h:88
clang::LocationColor
static const TerminalColor LocationColor
Definition: ASTDumperUtils.h:59
clang::UnaryTransformType::EnumUnderlyingType
@ EnumUnderlyingType
Definition: Type.h:4534
clang::Module::getFullModuleName
std::string getFullModuleName(bool AllowStringLiterals=false) const
Retrieve the full name of this module, including the path from its top-level module.
Definition: Module.cpp:219
clang::TextNodeDumper::VisitUnaryTransformType
void VisitUnaryTransformType(const UnaryTransformType *T)
Definition: TextNodeDumper.cpp:1541
clang::TemplateTemplateParmDecl::getIndex
unsigned getIndex() const
Get the index of the template parameter within its parameter list.
Definition: DeclTemplate.h:1169
clang::NamedDecl
This represents a decl that may have a name.
Definition: Decl.h:249
clang::DynTypedNode::getSourceRange
SourceRange getSourceRange() const
For nodes which represent textual entities in the source code, return their SourceRange.
Definition: ASTTypeTraits.cpp:211
clang::SourceRange::getBegin
SourceLocation getBegin() const
Definition: SourceLocation.h:221
clang::NOUR_Discarded
@ NOUR_Discarded
This name appears as a potential result of a discarded value expression.
Definition: Specifiers.h:168
clang::ConstructorUsingShadowDecl::constructsVirtualBase
bool constructsVirtualBase() const
Returns true if the constructed base class is a virtual base class subobject of this declaration's cl...
Definition: DeclCXX.h:3564
clang::TextNodeDumper::VisitObjCCategoryImplDecl
void VisitObjCCategoryImplDecl(const ObjCCategoryImplDecl *D)
Definition: TextNodeDumper.cpp:2254
clang::APValue::Struct
@ Struct
Definition: APValue.h:140
clang::PCK_Lib
@ PCK_Lib
Definition: PragmaKinds.h:17
clang::VarDecl::TLS_Static
@ TLS_Static
TLS with a known-constant initializer.
Definition: Decl.h:896
clang::QualType
A (possibly-)qualified type.
Definition: Type.h:673
clang::EnumDecl::isFixed
bool isFixed() const
Returns true if this is an Objective-C, C++11, or Microsoft-style enumeration with a fixed underlying...
Definition: Decl.h:3795
clang::NonTypeTemplateParmDecl
NonTypeTemplateParmDecl - Declares a non-type template parameter, e.g., "Size" in.
Definition: DeclTemplate.h:1384
clang::TextNodeDumper::VisitObjCBoxedExpr
void VisitObjCBoxedExpr(const ObjCBoxedExpr *Node)
Definition: TextNodeDumper.cpp:1313
clang::Qualifiers::getAsString
std::string getAsString() const
Definition: TypePrinter.cpp:2096
AttributeLangSupport::C
@ C
Definition: SemaDeclAttr.cpp:54
clang::TextNodeDumper::VisitUnresolvedLookupExpr
void VisitUnresolvedLookupExpr(const UnresolvedLookupExpr *Node)
Definition: TextNodeDumper.cpp:1044
clang::DynamicInitKind::Initializer
@ Initializer
clang::ObjCIvarDecl::getAccessControl
AccessControl getAccessControl() const
Definition: DeclObjC.h:1970
clang::TypeTraitExpr
A type trait used in the implementation of various C++11 and Library TR1 trait templates.
Definition: ExprCXX.h:2665
clang::UnresolvedSetIterator
The iterator over UnresolvedSets.
Definition: UnresolvedSet.h:32
clang::templateargumentvisitor::Base< llvm::make_const_ref, TextNodeDumper, void, ParamTys... >::VisitTemplateArgument
void VisitTemplateArgument(REF(TemplateArgument), ParamTys...)
Definition: TemplateArgumentVisitor.h:67
clang::FieldDecl
Represents a member of a struct/union/class.
Definition: Decl.h:2835
clang::VectorType::NeonVector
@ NeonVector
is ARM Neon vector
Definition: Type.h:3245
clang::FunctionProtoType::ExceptionSpecInfo::SourceTemplate
FunctionDecl * SourceTemplate
The function template whose exception specification this is instantiated from, for EST_Uninstantiated...
Definition: Type.h:3958
clang::ObjCTypeParamDecl::getVariance
ObjCTypeParamVariance getVariance() const
Determine the variance of this type parameter.
Definition: DeclObjC.h:625
clang::RequiresExpr
C++2a [expr.prim.req]: A requires-expression provides a concise way to express requirements on templa...
Definition: ExprConcepts.h:475
clang::AddressColor
static const TerminalColor AddressColor
Definition: ASTDumperUtils.h:57
clang::ObjCCategoryDecl::getClassInterface
ObjCInterfaceDecl * getClassInterface()
Definition: DeclObjC.h:2319
clang::VK_XValue
@ VK_XValue
An x-value expression is a reference to an object with independent storage but which can be "moved",...
Definition: Specifiers.h:129
clang::Decl::isUsed
bool isUsed(bool CheckUsedAttr=true) const
Whether any (re-)declaration of the entity was used, meaning that a definition is required.
Definition: DeclBase.cpp:443
Module.h
clang::BinaryOperator::getOpcodeStr
StringRef getOpcodeStr() const
Definition: Expr.h:3868
clang::FunctionProtoType::ExtProtoInfo::Variadic
bool Variadic
Definition: Type.h:3970
clang::UsingShadowDecl
Represents a shadow declaration implicitly introduced into a scope by a (resolved) using-declaration ...
Definition: DeclCXX.h:3187
clang::CXXNewExpr
Represents a new-expression for memory allocation and constructor calls, e.g: "new CXXNewExpr(foo)".
Definition: ExprCXX.h:2139
clang::TemplateSpecializationType
Represents a type template specialization; the template must be a class template, a type alias templa...
Definition: Type.h:5103
clang::Type::containsUnexpandedParameterPack
bool containsUnexpandedParameterPack() const
Whether this type is or contains an unexpanded parameter pack, used to support C++0x variadic templat...
Definition: Type.h:1878
clang::IfStmt
IfStmt - This represents an if/then/else.
Definition: Stmt.h:1904
clang::SourceRange::isValid
bool isValid() const
Definition: SourceLocation.h:227
DeclOpenMP.h
clang::ObjCTypeParamVariance::Covariant
@ Covariant
The parameter is covariant, e.g., X<T> is a subtype of X when the type parameter is covariant and T i...
clang::FunctionType::getExtInfo
ExtInfo getExtInfo() const
Definition: Type.h:3821
clang::GotoStmt
GotoStmt - This represents a direct goto.
Definition: Stmt.h:2605
clang::APValue::ComplexFloat
@ ComplexFloat
Definition: APValue.h:136
clang::InitListExpr
Describes an C or C++ initializer list.
Definition: Expr.h:4786
clang::ObjCPropertyImplDecl
ObjCPropertyImplDecl - Represents implementation declaration of a property in a class or category imp...
Definition: DeclObjC.h:2751
clang::TextNodeDumper::VisitNullPtrTemplateArgument
void VisitNullPtrTemplateArgument(const TemplateArgument &TA)
Definition: TextNodeDumper.cpp:892
clang::TextNodeDumper::VisitNamespaceDecl
void VisitNamespaceDecl(const NamespaceDecl *D)
Definition: TextNodeDumper.cpp:1885
clang::ComparisonCategoryType::First
@ First
clang::TextNodeDumper::visitParamCommandComment
void visitParamCommandComment(const comments::ParamCommandComment *C, const comments::FullComment *FC)
Definition: TextNodeDumper.cpp:817
clang::RQ_RValue
@ RQ_RValue
An rvalue ref-qualifier was provided (&&).
Definition: Type.h:1449
clang::UnaryOperator
UnaryOperator - This represents the unary-expression's (except sizeof and alignof),...
Definition: Expr.h:2157
clang::TagType
Definition: Type.h:4589
SourceManager.h
clang::OMPDeclareReductionDecl::CopyInit
@ CopyInit
Definition: DeclOpenMP.h:178
clang::TextNodeDumper::VisitObjCSelectorExpr
void VisitObjCSelectorExpr(const ObjCSelectorExpr *Node)
Definition: TextNodeDumper.cpp:1329
clang::APValue::None
@ None
There is no such object (it's outside its lifetime).
Definition: APValue.h:129
clang::tooling::X
static ToolExecutorPluginRegistry::Add< AllTUsToolExecutorPlugin > X("all-TUs", "Runs FrontendActions on all TUs in the compilation database. " "Tool results are stored in memory.")
clang::TextNodeDumper::VisitUnaryExprOrTypeTraitExpr
void VisitUnaryExprOrTypeTraitExpr(const UnaryExprOrTypeTraitExpr *Node)
Definition: TextNodeDumper.cpp:1127
clang::CXXStaticCastExpr
A C++ static_cast expression (C++ [expr.static.cast]).
Definition: ExprCXX.h:431
clang::VectorType::NeonPolyVector
@ NeonPolyVector
is ARM Neon polynomial vector
Definition: Type.h:3248
clang::AutoType::getTypeConstraintArguments
ArrayRef< TemplateArgument > getTypeConstraintArguments() const
Definition: Type.h:5010
LocInfoType.h
clang::ObjCPropertyDecl::getPropertyImplementation
PropertyControl getPropertyImplementation() const
Definition: DeclObjC.h:912
clang::ObjCInterfaceType::getDecl
ObjCInterfaceDecl * getDecl() const
Get the declaration of this interface.
Definition: Type.cpp:824
clang::FunctionDecl::isInlineSpecified
bool isInlineSpecified() const
Determine whether the "inline" keyword was specified for this function.
Definition: Decl.h:2591
clang::TextNodeDumper::VisitCXXFunctionalCastExpr
void VisitCXXFunctionalCastExpr(const CXXFunctionalCastExpr *Node)
Definition: TextNodeDumper.cpp:1191
clang::concepts::Requirement::isSatisfied
bool isSatisfied() const
Definition: ExprConcepts.h:178
clang::comments::HTMLEndTagComment
A closing HTML tag.
Definition: Comment.h:507
clang::TextNodeDumper::VisitOMPRequiresDecl
void VisitOMPRequiresDecl(const OMPRequiresDecl *D)
Definition: TextNodeDumper.cpp:1859
clang::LifetimeExtendedTemporaryDecl::getManglingNumber
unsigned getManglingNumber() const
Definition: DeclCXX.h:3145
clang::ObjCIvarDecl::Public
@ Public
Definition: DeclObjC.h:1929
clang::NamespaceAliasDecl::getAliasedNamespace
NamedDecl * getAliasedNamespace() const
Retrieve the namespace that this alias refers to, which may either be a NamespaceDecl or a NamespaceA...
Definition: DeclCXX.h:3082
clang::FunctionType
FunctionType - C99 6.7.5.3 - Function Declarators.
Definition: Type.h:3546
clang::CapturedDecl
Represents the body of a CapturedStmt, and serves as its DeclContext.
Definition: Decl.h:4342
clang::comments::CommandInfo
Information about a single command.
Definition: CommentCommandTraits.h:32
clang::ObjCPropertyDecl::Optional
@ Optional
Definition: DeclObjC.h:737
clang::TextNodeDumper::TextNodeDumper
TextNodeDumper(raw_ostream &OS, const ASTContext &Context, bool ShowColors)
Definition: TextNodeDumper.cpp:60
clang::ObjCMessageExpr::SuperClass
@ SuperClass
The receiver is a superclass.
Definition: ExprObjC.h:1094
clang::TextNodeDumper::VisitFunctionDecl
void VisitFunctionDecl(const FunctionDecl *D)
Definition: TextNodeDumper.cpp:1639
clang::ConstructorUsingShadowDecl::getConstructedBaseClass
CXXRecordDecl * getConstructedBaseClass() const
Get the base class whose constructor or constructor shadow declaration is passed the constructor argu...
Definition: DeclCXX.h:3555
TextNodeDumper.h
clang::concepts::Requirement::containsUnexpandedParameterPack
bool containsUnexpandedParameterPack() const
Definition: ExprConcepts.h:196
clang::comments::InlineCommandComment::RenderMonospaced
@ RenderMonospaced
Definition: Comment.h:311
clang::ArrayType::Normal
@ Normal
Definition: Type.h:2890
clang::TextNodeDumper::VisitTemplateTemplateArgument
void VisitTemplateTemplateArgument(const TemplateArgument &TA)
Definition: TextNodeDumper.cpp:900
clang::TextNodeDumper::VisitUsingEnumDecl
void VisitUsingEnumDecl(const UsingEnumDecl *D)
Definition: TextNodeDumper.cpp:2116
clang::ObjCPropertyAttribute::kind_strong
@ kind_strong
Definition: DeclObjCCommon.h:34
clang::TextNodeDumper::VisitRValueReferenceType
void VisitRValueReferenceType(const ReferenceType *T)
Definition: TextNodeDumper.cpp:1423
clang::ObjCImplDecl::getClassInterface
const ObjCInterfaceDecl * getClassInterface() const
Definition: DeclObjC.h:2434
clang::ErrorsColor
static const TerminalColor ErrorsColor
Definition: ASTDumperUtils.h:66
clang::TemplateArgument::getAsIntegral
llvm::APSInt getAsIntegral() const
Retrieve the template argument as an integral value.
Definition: TemplateBase.h:313
clang::ArrayType::Star
@ Star
Definition: Type.h:2890
clang::getTraitSpelling
const char * getTraitSpelling(ExpressionTrait T) LLVM_READONLY
Return the spelling of the type trait TT. Never null.
Definition: ExpressionTraits.cpp:33
clang::EnumDecl
Represents an enum.
Definition: Decl.h:3590
clang::TextNodeDumper::VisitCXXRecordDecl
void VisitCXXRecordDecl(const CXXRecordDecl *D)
Definition: TextNodeDumper.cpp:1913
clang::FunctionProtoType::ExceptionSpecInfo::SourceDecl
FunctionDecl * SourceDecl
The function whose exception specification this is, for EST_Unevaluated and EST_Uninstantiated.
Definition: Type.h:3954
clang::Type
The base class of the type hierarchy.
Definition: Type.h:1490
clang::UsingShadowDecl::getTargetDecl
NamedDecl * getTargetDecl() const
Gets the underlying declaration which has been brought into the local scope.
Definition: DeclCXX.h:3251
clang::TextNodeDumper::VisitVarTemplateDecl
void VisitVarTemplateDecl(const VarTemplateDecl *D)
Definition: TextNodeDumper.cpp:2065
clang::comments::CommandTraits::getCommandInfo
const CommandInfo * getCommandInfo(StringRef Name) const
Definition: CommentCommandTraits.h:145
clang::ObjCSubscriptRefExpr
ObjCSubscriptRefExpr - used for array and dictionary subscripting.
Definition: ExprObjC.h:841
clang::ObjCBoolLiteralExpr
ObjCBoolLiteralExpr - Objective-C Boolean Literal.
Definition: ExprObjC.h:88
clang::comments::InlineCommandComment
A command with word-like arguments that is considered inline content.
Definition: Comment.h:297
clang::TypedefType
Definition: Type.h:4371
clang::Type::containsErrors
bool containsErrors() const
Whether this type is an error type.
Definition: Type.h:2168
clang::TextNodeDumper::VisitTypedefType
void VisitTypedefType(const TypedefType *T)
Definition: TextNodeDumper.cpp:1537
clang::FunctionDecl::isVirtualAsWritten
bool isVirtualAsWritten() const
Whether this function is marked as virtual explicitly.
Definition: Decl.h:2181
clang::PragmaCommentDecl::getCommentKind
PragmaMSCommentKind getCommentKind() const
Definition: Decl.h:163
clang::LinkageSpecDecl::lang_c
@ lang_c
Definition: DeclCXX.h:2806
clang::NamespaceDecl::getOriginalNamespace
NamespaceDecl * getOriginalNamespace()
Get the original (first) namespace declaration.
Definition: DeclCXX.cpp:2869
clang::TextNodeDumper::visitBlockCommandComment
void visitBlockCommandComment(const comments::BlockCommandComment *C, const comments::FullComment *)
Definition: TextNodeDumper.cpp:810
clang::ObjCPropertyRefExpr
ObjCPropertyRefExpr - A dot-syntax expression to access an ObjC property.
Definition: ExprObjC.h:614
isSimpleAPValue
static bool isSimpleAPValue(const APValue &Value)
True if the APValue Value can be folded onto the current line.
Definition: TextNodeDumper.cpp:408
clang::TextNodeDumper::VisitFunctionTemplateDecl
void VisitFunctionTemplateDecl(const FunctionTemplateDecl *D)
Definition: TextNodeDumper.cpp:2057
clang::TextNodeDumper::VisitPragmaCommentDecl
void VisitPragmaCommentDecl(const PragmaCommentDecl *D)
Definition: TextNodeDumper.cpp:1800
clang::TextNodeDumper::VisitOMPIteratorExpr
void VisitOMPIteratorExpr(const OMPIteratorExpr *Node)
Definition: TextNodeDumper.cpp:1394
clang::EST_Unevaluated
@ EST_Unevaluated
not evaluated yet, for special member function
Definition: ExceptionSpecificationType.h:30
clang::TextNodeDumper::VisitSizeOfPackExpr
void VisitSizeOfPackExpr(const SizeOfPackExpr *Node)
Definition: TextNodeDumper.cpp:1281
clang::FixedPointLiteral
Definition: Expr.h:1531
clang::TextNodeDumper::VisitIfStmt
void VisitIfStmt(const IfStmt *Node)
Definition: TextNodeDumper.cpp:944
clang::comments::InlineCommandComment::RenderBold
@ RenderBold
Definition: Comment.h:310
clang::Decl::isThisDeclarationReferenced
bool isThisDeclarationReferenced() const
Whether this declaration was referenced.
Definition: DeclBase.h:591
clang::TextNodeDumper::VisitFloatingLiteral
void VisitFloatingLiteral(const FloatingLiteral *Node)
Definition: TextNodeDumper.cpp:1095
clang::comments::VerbatimBlockLineComment
A line of text contained in a verbatim block.
Definition: Comment.h:863
clang::UnresolvedUsingTypenameDecl
Represents a dependent using declaration which was marked with typename.
Definition: DeclCXX.h:3809
clang::TextNodeDumper::VisitNamespaceAliasDecl
void VisitNamespaceAliasDecl(const NamespaceAliasDecl *D)
Definition: TextNodeDumper.cpp:1898
clang::Decl::getLexicalDeclContext
DeclContext * getLexicalDeclContext()
getLexicalDeclContext - The declaration context where this Decl was lexically declared (LexicalDC).
Definition: DeclBase.h:843
clang::TextNodeDumper::visitInlineCommandComment
void visitInlineCommandComment(const comments::InlineCommandComment *C, const comments::FullComment *)
Definition: TextNodeDumper.cpp:766
clang::ObjCPropertyAttribute::kind_atomic
@ kind_atomic
Definition: DeclObjCCommon.h:32
clang::VarDecl::isInline
bool isInline() const
Whether this variable is (C++1z) inline.
Definition: Decl.h:1461
clang::VarDecl::isParameterPack
bool isParameterPack() const
Determine whether this variable is actually a function parameter pack or init-capture pack.
Definition: Decl.cpp:2537
clang::comments::ParamCommandComment
Doxygen \param command.
Definition: Comment.h:711
clang::FunctionTemplateDecl
Declaration of a template function.
Definition: DeclTemplate.h:978
clang::TextNodeDumper::VisitExtVectorElementExpr
void VisitExtVectorElementExpr(const ExtVectorElementExpr *Node)
Definition: TextNodeDumper.cpp:1146
clang::ObjCPropertyAttribute::kind_copy
@ kind_copy
Definition: DeclObjCCommon.h:29
clang::comments::Comment
Any part of the comment.
Definition: Comment.h:52
V
#define V(N, I)
Definition: ASTContext.h:3121
clang::VarDecl::hasInit
bool hasInit() const
Definition: Decl.cpp:2282
clang::IntegerLiteral
Definition: Expr.h:1488
FLAG
#define FLAG(fn, name)
clang::TextNodeDumper::VisitObjCInterfaceDecl
void VisitObjCInterfaceDecl(const ObjCInterfaceDecl *D)
Definition: TextNodeDumper.cpp:2267
clang::PCK_Linker
@ PCK_Linker
Definition: PragmaKinds.h:16
clang::ObjCAtCatchStmt
Represents Objective-C's @catch statement.
Definition: StmtObjC.h:77
clang::UnaryExprOrTypeTraitExpr
UnaryExprOrTypeTraitExpr - expression with either a type or (unevaluated) expression operand.
Definition: Expr.h:2543
clang::FloatingLiteral
Definition: Expr.h:1633
clang::RecordType
A helper class that allows the use of isa/cast/dyncast to detect TagType objects of structs/unions/cl...
Definition: Type.h:4613
clang::TextNodeDumper::VisitVectorType
void VisitVectorType(const VectorType *T)
Definition: TextNodeDumper.cpp:1466
clang::Module
Describes a module or submodule.
Definition: Module.h:96
clang::ObjCSelectorExpr
ObjCSelectorExpr used for @selector in Objective-C.
Definition: ExprObjC.h:454
DeclTemplate.h
clang::ObjCTypeParamVariance::Contravariant
@ Contravariant
The parameter is contravariant, e.g., X<T> is a subtype of X when the type parameter is covariant and...
clang::PackExpansionType
Represents a pack expansion of types.
Definition: Type.h:5632
clang::VectorType::SveFixedLengthDataVector
@ SveFixedLengthDataVector
is AArch64 SVE fixed-length data vector
Definition: Type.h:3251
clang::UnresolvedLookupExpr
A reference to a name which we were able to look up during parsing but could not resolve to a specifi...
Definition: ExprCXX.h:3073
clang::OMPDeclareReductionDecl
This represents '#pragma omp declare reduction ...' directive.
Definition: DeclOpenMP.h:171
clang::VarDecl::getStorageClassSpecifierString
static const char * getStorageClassSpecifierString(StorageClass SC)
Return the string used to specify the storage class SC.
Definition: Decl.cpp:2003
clang::ImportDecl
Describes a module import declaration, which makes the contents of the named module visible in the cu...
Definition: Decl.h:4447
clang::Decl::getAccess
AccessSpecifier getAccess() const
Definition: DeclBase.h:478
clang::FunctionDecl::isTrivial
bool isTrivial() const
Whether this function is "trivial" in some specialized C++ senses.
Definition: Decl.h:2207
clang::SizeOfPackExpr
Represents an expression that computes the length of a parameter pack.
Definition: ExprCXX.h:4127
Node
DynTypedNode Node
Definition: ASTMatchFinder.cpp:67
clang::comments::CommandTraits::getBuiltinCommandInfo
static const CommandInfo * getBuiltinCommandInfo(StringRef Name)
DeclFriend.h
clang::TextNodeDumper::VisitFriendDecl
void VisitFriendDecl(const FriendDecl *D)
Definition: TextNodeDumper.cpp:2184
clang::CXXBindTemporaryExpr
Represents binding an expression to a temporary.
Definition: ExprCXX.h:1412
clang::BlockDecl
Represents a block literal declaration, which is like an unnamed FunctionDecl.
Definition: Decl.h:4153
clang::TextNodeDumper::VisitUnresolvedUsingTypenameDecl
void VisitUnresolvedUsingTypenameDecl(const UnresolvedUsingTypenameDecl *D)
Definition: TextNodeDumper.cpp:2121
clang::Decl::getKind
Kind getKind() const
Definition: DeclBase.h:433
clang::ObjCInterfaceDecl::getImplementation
ObjCImplementationDecl * getImplementation() const
Definition: DeclObjC.cpp:1588
clang::TextNodeDumper::VisitObjCProtocolExpr
void VisitObjCProtocolExpr(const ObjCProtocolExpr *Node)
Definition: TextNodeDumper.cpp:1334
clang::BinaryOperator
A builtin binary operation expression such as "x + y" or "x <= y".
Definition: Expr.h:3803
clang::OMPClause
This is a basic class for representing single OpenMP clause.
Definition: OpenMPClause.h:54
clang::TextNodeDumper::visitTParamCommandComment
void visitTParamCommandComment(const comments::TParamCommandComment *C, const comments::FullComment *FC)
Definition: TextNodeDumper.cpp:838
clang::TemplateTypeParmType::getIndex
unsigned getIndex() const
Definition: Type.h:4807
clang::TextNodeDumper::VisitRequiresExpr
void VisitRequiresExpr(const RequiresExpr *Node)
Definition: TextNodeDumper.cpp:1417
clang::APValue::Union
@ Union
Definition: APValue.h:141
clang::ObjCInterfaceDecl::protocols
protocol_range protocols() const
Definition: DeclObjC.h:1345
clang::TextNodeDumper::VisitCastExpr
void VisitCastExpr(const CastExpr *Node)
Definition: TextNodeDumper.cpp:1010
clang::Type::isFromAST
bool isFromAST() const
Whether this type comes from an AST file.
Definition: Type.h:1861
clang::ConceptDecl
Declaration of a C++2a concept.
Definition: DeclTemplate.h:3235
clang::TextNodeDumper::VisitImportDecl
void VisitImportDecl(const ImportDecl *D)
Definition: TextNodeDumper.cpp:1792
clang::TemplateName::dump
void dump(raw_ostream &OS) const
Debugging aid that dumps the template name.
Definition: TemplateName.cpp:280
clang::PresumedLoc::getFilename
const char * getFilename() const
Return the presumed filename of this location.
Definition: SourceLocation.h:326
clang::SourceRange::getEnd
SourceLocation getEnd() const
Definition: SourceLocation.h:222
dumpPreviousDeclImpl
static void dumpPreviousDeclImpl(raw_ostream &OS,...)
Definition: TextNodeDumper.cpp:31
clang::TextNodeDumper::VisitCallExpr
void VisitCallExpr(const CallExpr *Node)
Definition: TextNodeDumper.cpp:995
clang::threadSafety::sx::toString
std::string toString(const til::SExpr *E)
Definition: ThreadSafetyCommon.h:89
clang::VectorType
Represents a GCC generic vector type.
Definition: Type.h:3229
clang::OMPRequiresDecl::clauselists
clauselist_range clauselists()
Definition: DeclOpenMP.h:441
clang::ObjCPropertyImplDecl::Synthesize
@ Synthesize
Definition: DeclObjC.h:2754
clang::ObjCPropertyAttribute::kind_weak
@ kind_weak
Definition: DeclObjCCommon.h:33
clang::ConceptSpecializationExpr
Represents the specialization of a concept - evaluates to a prvalue of type bool.
Definition: ExprConcepts.h:40
clang::FPOptionsOverride
Represents difference between two FPOptions values.
Definition: LangOptions.h:600
clang::MaterializeTemporaryExpr
Represents a prvalue temporary that is written into memory so that a reference can bind to it.
Definition: ExprCXX.h:4462
clang::UndeserializedColor
static const TerminalColor UndeserializedColor
Definition: ASTDumperUtils.h:72
clang::ASTContext
Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...
Definition: ASTContext.h:212
clang::TextNodeDumper::VisitPackTemplateArgument
void VisitPackTemplateArgument(const TemplateArgument &TA)
Definition: TextNodeDumper.cpp:915
clang::TextNodeDumper::VisitEnumConstantDecl
void VisitEnumConstantDecl(const EnumConstantDecl *D)
Definition: TextNodeDumper.cpp:1626
clang::APValue::Array
@ Array
Definition: APValue.h:139
clang::ReferenceType::isSpelledAsLValue
bool isSpelledAsLValue() const
Definition: Type.h:2764
clang::ObjCPropertyAttribute::kind_unsafe_unretained
@ kind_unsafe_unretained
Definition: DeclObjCCommon.h:35
clang::ArrayType
Represents an array type, per C99 6.7.5.2 - Array Declarators.
Definition: Type.h:2883
clang::ObjCPropertyDecl::getSetterMethodDecl
ObjCMethodDecl * getSetterMethodDecl() const
Definition: DeclObjC.h:904
clang::UnaryOperator::getOpcodeStr
static StringRef getOpcodeStr(Opcode Op)
getOpcodeStr - Turn an Opcode enum value into the punctuation char it corresponds to,...
Definition: Expr.cpp:1325
clang::TextNodeDumper::VisitBlockDecl
void VisitBlockDecl(const BlockDecl *D)
Definition: TextNodeDumper.cpp:2341
clang::TextNodeDumper::VisitTypedefDecl
void VisitTypedefDecl(const TypedefDecl *D)
Definition: TextNodeDumper.cpp:1596
clang::OMPExecutableDirective::isStandaloneDirective
bool isStandaloneDirective() const
Returns whether or not this is a Standalone directive.
Definition: StmtOpenMP.cpp:58
clang::Type::getAs
const T * getAs() const
Member-template getAs<specific type>'.
Definition: Type.h:7161
clang::ValueColor
static const TerminalColor ValueColor
Definition: ASTDumperUtils.h:79
TypeTraits.h
clang::TextNodeDumper::VisitConstructorUsingShadowDecl
void VisitConstructorUsingShadowDecl(const ConstructorUsingShadowDecl *D)
Definition: TextNodeDumper.cpp:2143
clang::OK_BitField
@ OK_BitField
A bitfield object is a bitfield on a C or C++ record.
Definition: Specifiers.h:139
clang::Decl::isInvalidDecl
bool isInvalidDecl() const
Definition: DeclBase.h:558
clang::APValue::getStructNumBases
unsigned getStructNumBases() const
Definition: APValue.h:530
clang::ExprWithCleanups::CleanupObject
llvm::PointerUnion< BlockDecl *, CompoundLiteralExpr * > CleanupObject
The type of objects that are kept in the cleanup.
Definition: ExprCXX.h:3352
clang::TextNodeDumper::VisitObjCPropertyImplDecl
void VisitObjCPropertyImplDecl(const ObjCPropertyImplDecl *D)
Definition: TextNodeDumper.cpp:2331
clang::TemplateArgument
Represents a template argument.
Definition: TemplateBase.h:62
clang::APValue::getStructBase
APValue & getStructBase(unsigned i)
Definition: APValue.h:538
clang::ObjCCategoryDecl::getImplementation
ObjCCategoryImplDecl * getImplementation() const
Definition: DeclObjC.cpp:2080
clang::TextNodeDumper::VisitUsingDecl
void VisitUsingDecl(const UsingDecl *D)
Definition: TextNodeDumper.cpp:2109
clang::concepts::Requirement
A static requirement that can be used in a requires-expression to check properties of types and expre...
Definition: ExprConcepts.h:149
clang::TextNodeDumper::VisitPackExpansionType
void VisitPackExpansionType(const PackExpansionType *T)
Definition: TextNodeDumper.cpp:1589
APValue.h
clang::TextNodeDumper::VisitCXXStaticCastExpr
void VisitCXXStaticCastExpr(const CXXStaticCastExpr *Node)
Definition: TextNodeDumper.cpp:1199
clang::VarDecl::isNRVOVariable
bool isNRVOVariable() const
Determine whether this local variable can be used with the named return value optimization (NRVO).
Definition: Decl.h:1422
clang::StmtVisitorBase< llvm::make_const_ptr, ImplClass, void, ParamTys... >::Visit
void Visit(PTR(Stmt) S, ParamTys... P)
Definition: StmtVisitor.h:43
clang::Attr::getKind
attr::Kind getKind() const
Definition: Attr.h:86
clang::LabelDecl
Represents the declaration of a label.
Definition: Decl.h:496
clang::TextNodeDumper::VisitTemplateTemplateParmDecl
void VisitTemplateTemplateParmDecl(const TemplateTemplateParmDecl *D)
Definition: TextNodeDumper.cpp:2101
clang::CXXRecordDecl::needsOverloadResolutionForMoveConstructor
bool needsOverloadResolutionForMoveConstructor() const
Determine whether we need to eagerly declare a defaulted move constructor for this class.
Definition: DeclCXX.h:876
clang::QualType::getSplitDesugaredType
SplitQualType getSplitDesugaredType() const
Definition: Type.h:983
clang::comments::CommandInfo::Name
const char * Name
Definition: CommentCommandTraits.h:37
clang::TextNodeDumper::VisitSwitchStmt
void VisitSwitchStmt(const SwitchStmt *Node)
Definition: TextNodeDumper.cpp:961
clang::comments::FullComment
A full comment attached to a declaration, contains block content.
Definition: Comment.h:1091
clang::TypedefNameDecl::getUnderlyingType
QualType getUnderlyingType() const
Definition: Decl.h:3235
clang::Mergeable::getFirstDecl
decl_type * getFirstDecl()
Return the first declaration of this declaration or itself if this is the only declaration.
Definition: Redeclarable.h:319
clang::ObjCIvarDecl::getSynthesize
bool getSynthesize() const
Definition: DeclObjC.h:1977
clang::AutoType
Represents a C++11 auto or C++14 decltype(auto) type, possibly constrained by a type-constraint.
Definition: Type.h:4980
Type.h
clang::TextNodeDumper::VisitBindingDecl
void VisitBindingDecl(const BindingDecl *D)
Definition: TextNodeDumper.cpp:1782
clang::ObjCMessageExpr::Class
@ Class
The receiver is a class.
Definition: ExprObjC.h:1088
clang::TextNodeDumper::VisitUsingDirectiveDecl
void VisitUsingDirectiveDecl(const UsingDirectiveDecl *D)
Definition: TextNodeDumper.cpp:1893
clang::FriendDecl
FriendDecl - Represents the declaration of a friend entity, which can be a function,...
Definition: DeclFriend.h:53
clang::TemplateTemplateParmDecl
TemplateTemplateParmDecl - Declares a template template parameter, e.g., "T" in.
Definition: DeclTemplate.h:1601
clang::TextNodeDumper::VisitIntegerLiteral
void VisitIntegerLiteral(const IntegerLiteral *Node)
Definition: TextNodeDumper.cpp:1084
clang::TextNodeDumper::VisitPragmaDetectMismatchDecl
void VisitPragmaDetectMismatchDecl(const PragmaDetectMismatchDecl *D)
Definition: TextNodeDumper.cpp:1826
clang::VarDecl
Represents a variable declaration or definition.
Definition: Decl.h:876
clang::ObjCMethodDecl::getReturnType
QualType getReturnType() const
Definition: DeclObjC.h:332
clang::APValue::getVectorElt
APValue & getVectorElt(unsigned I)
Definition: APValue.h:489
clang::UnresolvedUsingType
Represents the dependent type named by a dependently-scoped typename using declaration,...
Definition: Type.h:4341
clang::QualType::getAsString
std::string getAsString() const
Definition: TypePrinter.cpp:2231
clang::comments::BlockCommandComment
A command that has zero or more word-like arguments (number of word-like arguments depends on command...
Definition: Comment.h:596
clang::ConstructorUsingShadowDecl::getConstructedBaseClassShadowDecl
ConstructorUsingShadowDecl * getConstructedBaseClassShadowDecl() const
Get the inheriting constructor declaration for the base class for which we don't have an explicit ini...
Definition: DeclCXX.h:3545
clang::TextNodeDumper::VisitObjCSubscriptRefExpr
void VisitObjCSubscriptRefExpr(const ObjCSubscriptRefExpr *Node)
Definition: TextNodeDumper.cpp:1369
clang::PragmaCommentDecl::getArg
StringRef getArg() const
Definition: Decl.h:165
clang::ObjCIvarDecl::Private
@ Private
Definition: DeclObjC.h:1929
clang::StringLiteral
StringLiteral - This represents a string literal expression, e.g.
Definition: Expr.h:1761
clang::ExprWithCleanups
Represents an expression – generally a full-expression – that introduces cleanups to be run at the en...
Definition: ExprCXX.h:3342
clang::ObjCCategoryImplDecl
ObjCCategoryImplDecl - An object of this class encapsulates a category @implementation declaration.
Definition: DeclObjC.h:2493
clang::PresumedLoc::getColumn
unsigned getColumn() const
Return the presumed column number of this location.
Definition: SourceLocation.h:347
clang::TextNodeDumper::VisitMemberExpr
void VisitMemberExpr(const MemberExpr *Node)
Definition: TextNodeDumper.cpp:1135
clang::NamedDecl::isModulePrivate
bool isModulePrivate() const
Whether this declaration was marked as being private to the module in which it was defined.
Definition: DeclBase.h:612
clang::RQ_None
@ RQ_None
No ref-qualifier was provided.
Definition: Type.h:1443
clang::getOperatorSpelling
const char * getOperatorSpelling(OverloadedOperatorKind Operator)
Retrieve the spelling of the given overloaded operator, without the preceding "operator" keyword.
Definition: IdentifierTable.cpp:735
clang::Type::isVariablyModifiedType
bool isVariablyModifiedType() const
Whether this type is a variably-modified type (C99 6.7.5).
Definition: Type.h:2192
clang::CXXRecordDecl::bases
base_class_range bases()
Definition: DeclCXX.h:589
clang::APValue::LValue
@ LValue
Definition: APValue.h:137
clang::ObjCPropertyAttribute::kind_readonly
@ kind_readonly
Definition: DeclObjCCommon.h:24
clang::TextTreeStructure::AddChild
void AddChild(Fn DoAddChild)
Add a child of the current node. Calls DoAddChild without arguments.
Definition: TextNodeDumper.h:51
clang::EnumConstantDecl
An instance of this object exists for each enum constant that is defined.
Definition: Decl.h:3050
clang::DependentSizedExtVectorType::getAttributeLoc
SourceLocation getAttributeLoc() const
Definition: Type.h:3206
clang::TextNodeDumper::VisitUnresolvedUsingType
void VisitUnresolvedUsingType(const UnresolvedUsingType *T)
Definition: TextNodeDumper.cpp:1533
clang::Type::getLocallyUnqualifiedSingleStepDesugaredType
QualType getLocallyUnqualifiedSingleStepDesugaredType() const
Pull a single level of sugar off of this locally-unqualified type.
Definition: Type.cpp:422
clang::Redeclarable::getPreviousDecl
decl_type * getPreviousDecl()
Return the previous declaration of this declaration or NULL if this is the first declaration.
Definition: Redeclarable.h:204
dumpPreviousDecl
static void dumpPreviousDecl(raw_ostream &OS, const Decl *D)
Dump the previous declaration in the redeclaration chain for a declaration, if any.
Definition: TextNodeDumper.cpp:49
Base
clang::EnumDecl::isScopedUsingClassTag
bool isScopedUsingClassTag() const
Returns true if this is a C++11 scoped enumeration.
Definition: Decl.h:3789
Label
std::string Label
Definition: UsingDeclarationsSorter.cpp:69
clang::ObjCEncodeExpr
ObjCEncodeExpr, used for @encode in Objective-C.
Definition: ExprObjC.h:409
clang::UnresolvedUsingValueDecl
Represents a dependent using declaration which was not marked with typename.
Definition: DeclCXX.h:3713
clang::ObjCPropertyDecl::getType
QualType getType() const
Definition: DeclObjC.h:804
clang::TagDecl::isCompleteDefinition
bool isCompleteDefinition() const
Return true if this decl has its body fully specified.
Definition: Decl.h:3433
clang::APValue::getArrayInitializedElt
APValue & getArrayInitializedElt(unsigned I)
Definition: APValue.h:502
clang::VectorType::GenericVector
@ GenericVector
not a target-specific vector type
Definition: Type.h:3233
clang::TextNodeDumper::VisitVariableArrayType
void VisitVariableArrayType(const VariableArrayType *T)
Definition: TextNodeDumper.cpp:1447
clang::VarDecl::TLS_None
@ TLS_None
Not a TLS variable.
Definition: Decl.h:893
clang::VectorType::AltiVecPixel
@ AltiVecPixel
is AltiVec 'vector Pixel'
Definition: Type.h:3239
clang::NamespaceDecl::isOriginalNamespace
bool isOriginalNamespace() const
Return true if this declaration is an original (first) declaration of the namespace.
Definition: DeclCXX.cpp:2883
clang::OK_MatrixComponent
@ OK_MatrixComponent
A matrix component is a single element of a matrix.
Definition: Specifiers.h:154
clang::PCK_ExeStr
@ PCK_ExeStr
Definition: PragmaKinds.h:19
clang::concepts::Requirement::RK_Compound
@ RK_Compound
Definition: ExprConcepts.h:153
clang::OMPDeclareReductionDecl::DirectInit
@ DirectInit
Definition: DeclOpenMP.h:177
clang::ConstantExpr
ConstantExpr - An expression that occurs in a constant context and optionally the result of evaluatin...
Definition: Expr.h:1026
clang::TemplateTypeParmDecl
Declaration of a template type parameter.
Definition: DeclTemplate.h:1178
clang::concepts::Requirement::RK_Simple
@ RK_Simple
Definition: ExprConcepts.h:153
clang::ObjCMessageExpr
An expression that sends a message to the given Objective-C object or class.
Definition: ExprObjC.h:940
clang::TypeColor
static const TerminalColor TypeColor
Definition: ASTDumperUtils.h:54
clang::TextNodeDumper::VisitObjCImplementationDecl
void VisitObjCImplementationDecl(const ObjCImplementationDecl *D)
Definition: TextNodeDumper.cpp:2276
clang::Decl::isImplicit
bool isImplicit() const
isImplicit - Indicates whether the declaration was implicitly generated by the implementation.
Definition: DeclBase.h:563
clang::TextNodeDumper::visitHTMLStartTagComment
void visitHTMLStartTagComment(const comments::HTMLStartTagComment *C, const comments::FullComment *)
Definition: TextNodeDumper.cpp:791
clang::ObjCImplementationDecl::getSuperClass
const ObjCInterfaceDecl * getSuperClass() const
Definition: DeclObjC.h:2681
clang::Decl::getOwningModule
Module * getOwningModule() const
Get the module that owns this declaration (for visibility purposes).
Definition: DeclBase.h:773
clang::FieldDecl::isMutable
bool isMutable() const
Determines whether this field is mutable (C++ only).
Definition: Decl.h:2910
clang::QualType::split
SplitQualType split() const
Divides a QualType into its unqualified type and a set of local qualifiers.
Definition: Type.h:6432
clang::TagType::getDecl
TagDecl * getDecl() const
Definition: Type.cpp:3495
clang::VectorType::getVectorKind
VectorKind getVectorKind() const
Definition: Type.h:3276
clang::TextNodeDumper::VisitAddrLabelExpr
void VisitAddrLabelExpr(const AddrLabelExpr *Node)
Definition: TextNodeDumper.cpp:1168
clang::UsingDecl
Represents a C++ using-declaration.
Definition: DeclCXX.h:3379
clang::FunctionType::isRestrict
bool isRestrict() const
Definition: Type.h:3829
clang::TextNodeDumper::visitVerbatimBlockComment
void visitVerbatimBlockComment(const comments::VerbatimBlockComment *C, const comments::FullComment *)
Definition: TextNodeDumper.cpp:858
canPassInRegisters
static bool canPassInRegisters(Sema &S, CXXRecordDecl *D, TargetInfo::CallingConvKind CCK)
Determine whether a type is permitted to be passed or returned in registers, per C++ [class....
Definition: SemaDeclCXX.cpp:6547
clang::APValue::Indeterminate
@ Indeterminate
This object has an indeterminate value (C++ [basic.indet]).
Definition: APValue.h:131
clang::GenericSelectionExpr::isResultDependent
bool isResultDependent() const
Whether this generic selection is result-dependent.
Definition: Expr.h:5801
clang::ObjCCategoryDecl
ObjCCategoryDecl - Represents a category declaration.
Definition: DeclObjC.h:2274
clang::UnaryTransformType
A unary type transform, which is a type constructed from another.
Definition: Type.h:4531
clang::APValue::AddrLabelDiff
@ AddrLabelDiff
Definition: APValue.h:143
clang::DeducedType::isDeduced
bool isDeduced() const
Definition: Type.h:4968
clang::TemplateTypeParmType
Definition: Type.h:4765
clang::PredefinedExpr::getIdentKindName
StringRef getIdentKindName() const
Definition: Expr.h:2021
clang::comments::HTMLStartTagComment
An opening HTML tag with attributes.
Definition: Comment.h:413
clang::CharacterLiteral
Definition: Expr.h:1578
clang::ArrayType::getIndexTypeQualifiers
Qualifiers getIndexTypeQualifiers() const
Definition: Type.h:2910
clang::TemplateTypeParmDecl::wasDeclaredWithTypename
bool wasDeclaredWithTypename() const
Whether this template type parameter was declared with the 'typename' keyword.
Definition: DeclTemplate.h:1241
clang::TextNodeDumper::VisitOMPDeclareReductionDecl
void VisitOMPDeclareReductionDecl(const OMPDeclareReductionDecl *D)
Definition: TextNodeDumper.cpp:1837
clang::VK_LValue
@ VK_LValue
An l-value expression is a reference to an object with independent storage.
Definition: Specifiers.h:124
clang::TextNodeDumper::VisitDependentSizedExtVectorType
void VisitDependentSizedExtVectorType(const DependentSizedExtVectorType *T)
Definition: TextNodeDumper.cpp:1460
GetApproxValue
static double GetApproxValue(const llvm::APFloat &F)
Definition: TextNodeDumper.cpp:399
clang::ArrayType::getSizeModifier
ArraySizeModifier getSizeModifier() const
Definition: Type.h:2906
clang::CompoundLiteralExpr
CompoundLiteralExpr - [C99 6.5.2.5].
Definition: Expr.h:3403
clang::AccessSpecifier
AccessSpecifier
A C++ access specifier (public, private, protected), plus the special value "none" which means differ...
Definition: Specifiers.h:108
clang::Decl::getSourceRange
virtual SourceRange getSourceRange() const LLVM_READONLY
Source range that this declaration covers.
Definition: DeclBase.h:418
clang::PresumedLoc::isInvalid
bool isInvalid() const
Return true if this object is invalid or uninitialized.
Definition: SourceLocation.h:320
clang::UsingEnumDecl
Represents a C++ using-enum-declaration.
Definition: DeclCXX.h:3579
clang::VarDecl::ListInit
@ ListInit
Direct list-initialization (C++11)
Definition: Decl.h:887
clang::CXXRecordDecl
Represents a C++ struct/union/class.
Definition: DeclCXX.h:255
clang::TextNodeDumper::VisitCXXUnresolvedConstructExpr
void VisitCXXUnresolvedConstructExpr(const CXXUnresolvedConstructExpr *Node)
Definition: TextNodeDumper.cpp:1205
clang::Mergeable
Provides common interface for the Decls that cannot be redeclared, but can be merged if the same decl...
Definition: Redeclarable.h:313
clang::LinkageSpecDecl::getLanguage
LanguageIDs getLanguage() const
Return the language specified by this linkage specification.
Definition: DeclCXX.h:2826
clang::declvisitor::Base< llvm::make_const_ptr, ImplClass, void >::Visit
void Visit(PTR(Decl) D)
Definition: DeclVisitor.h:37
clang::EST_Uninstantiated
@ EST_Uninstantiated
not instantiated yet
Definition: ExceptionSpecificationType.h:31
clang::Attr::isInherited
bool isInherited() const
Definition: Attr.h:95
clang::TextNodeDumper::VisitSYCLUniqueStableNameExpr
void VisitSYCLUniqueStableNameExpr(const SYCLUniqueStableNameExpr *Node)
Definition: TextNodeDumper.cpp:1070
clang::Type::isDependentType
bool isDependentType() const
Whether this type is a dependent type, meaning that its definition somehow depends on a template para...
Definition: Type.h:2174
clang::Type::isInstantiationDependentType
bool isInstantiationDependentType() const
Determine whether this type is an instantiation-dependent type, meaning that the type involves a temp...
Definition: Type.h:2182
clang::VK_PRValue
@ VK_PRValue
A pr-value expression (in the C++11 taxonomy) produces a temporary value.
Definition: Specifiers.h:120
clang::FunctionType::getNameForCallConv
static StringRef getNameForCallConv(CallingConv CC)
Definition: Type.cpp:3138
clang::UnresolvedUsingValueDecl::getQualifier
NestedNameSpecifier * getQualifier() const
Retrieve the nested-name-specifier that qualifies the name.
Definition: DeclCXX.h:3758
clang::VectorType::AltiVecVector
@ AltiVecVector
is AltiVec vector
Definition: Type.h:3236
clang::CastExpr::path_const_iterator
const typedef CXXBaseSpecifier *const * path_const_iterator
Definition: Expr.h:3541
clang::TextNodeDumper::VisitExpressionTemplateArgument
void VisitExpressionTemplateArgument(const TemplateArgument &TA)
Definition: TextNodeDumper.cpp:911
clang::CXXRecordDecl::needsOverloadResolutionForCopyConstructor
bool needsOverloadResolutionForCopyConstructor() const
Determine whether we need to eagerly declare a defaulted copy constructor for this class.
Definition: DeclCXX.h:786
clang::DependentSizedArrayType
Represents an array type in C++ whose size is a value-dependent expression.
Definition: Type.h:3087
clang::AttributeCommonInfo::getRange
SourceRange getRange() const
Definition: AttributeCommonInfo.h:130
clang::NestedNameSpecifier::print
void print(raw_ostream &OS, const PrintingPolicy &Policy, bool ResolveTemplateArguments=false) const
Print this nested name specifier to the given output stream.
Definition: NestedNameSpecifier.cpp:252
clang::VariableArrayType
Represents a C array with a specified size that is not an integer-constant-expression.
Definition: Type.h:3033
clang::CastColor
static const TerminalColor CastColor
Definition: ASTDumperUtils.h:76
clang::TextNodeDumper::VisitTemplateTypeParmType
void VisitTemplateTypeParmType(const TemplateTypeParmType *T)
Definition: TextNodeDumper.cpp:1553
clang::EnumDecl::isScoped
bool isScoped() const
Returns true if this is a C++11 scoped enumeration.
Definition: Decl.h:3786
clang::ConstructorUsingShadowDecl::getNominatedBaseClassShadowDecl
ConstructorUsingShadowDecl * getNominatedBaseClassShadowDecl() const
Get the inheriting constructor declaration for the direct base class from which this using shadow dec...
Definition: DeclCXX.h:3539
clang::OMPIteratorExpr::IteratorRange
Iterator range representation begin:end[:step].
Definition: ExprOpenMP.h:278
clang::Decl::isFromASTFile
bool isFromASTFile() const
Determine whether this declaration came from an AST file (such as a precompiled header or module) rat...
Definition: DeclBase.h:716
clang::TemplateTypeParmDecl::getTypeConstraint
const TypeConstraint * getTypeConstraint() const
Returns the type constraint associated with this template parameter (if any).
Definition: DeclTemplate.h:1346
clang::TextNodeDumper::dumpLocation
void dumpLocation(SourceLocation Loc)
Definition: TextNodeDumper.cpp:616
clang::TypedefType::getDecl
TypedefNameDecl * getDecl() const
Definition: Type.h:4381
clang::ObjCPropertyAttribute::kind_noattr
@ kind_noattr
Definition: DeclObjCCommon.h:23
clang::ObjectKindColor
static const TerminalColor ObjectKindColor
Definition: ASTDumperUtils.h:64
clang::TextNodeDumper::dumpBareDeclRef
void dumpBareDeclRef(const Decl *D)
Definition: TextNodeDumper.cpp:680
clang::TextNodeDumper::VisitLabelStmt
void VisitLabelStmt(const LabelStmt *Node)
Definition: TextNodeDumper.cpp:973
clang::ClassTemplateDecl
Declaration of a class template.
Definition: DeclTemplate.h:2247
clang::ValueDecl
Represent the declaration of a variable (in which case it is an lvalue) a function (in which case it ...
Definition: Decl.h:676
clang::VariableArrayType::getBracketsRange
SourceRange getBracketsRange() const
Definition: Type.h:3058
clang::CXXRecordDecl::needsOverloadResolutionForDestructor
bool needsOverloadResolutionForDestructor() const
Determine whether we need to eagerly declare a destructor for this class.
Definition: DeclCXX.h:987
clang::VarDecl::getStorageClass
StorageClass getStorageClass() const
Returns the storage class as written in the source.
Definition: Decl.h:1085
clang::TextNodeDumper::visitVerbatimBlockLineComment
void visitVerbatimBlockLineComment(const comments::VerbatimBlockLineComment *C, const comments::FullComment *)
Definition: TextNodeDumper.cpp:866
clang::TextNodeDumper::VisitObjCInterfaceType
void VisitObjCInterfaceType(const ObjCInterfaceType *T)
Definition: TextNodeDumper.cpp:1585
clang::FunctionProtoType
Represents a prototype with parameter type info, e.g.
Definition: Type.h:3885
clang::OMPCapturedExprDecl
Pseudo declaration for capturing expressions.
Definition: DeclOpenMP.h:383
clang::ObjCProtocolExpr
ObjCProtocolExpr used for protocol expression in Objective-C.
Definition: ExprObjC.h:504
clang::DeclContext::getParent
DeclContext * getParent()
getParent - Returns the containing DeclContext.
Definition: DeclBase.h:1860
clang::TextNodeDumper::VisitTypeTraitExpr
void VisitTypeTraitExpr(const TypeTraitExpr *Node)
Definition: TextNodeDumper.cpp:1256
clang::ObjCCategoryDecl::protocols
protocol_range protocols() const
Definition: DeclObjC.h:2350
clang::ObjCCompatibleAliasDecl::getClassInterface
const ObjCInterfaceDecl * getClassInterface() const
Definition: DeclObjC.h:2739
clang::ASTContext::getPrintingPolicy
const clang::PrintingPolicy & getPrintingPolicy() const
Definition: ASTContext.h:687
clang::NOUR_None
@ NOUR_None
This is an odr-use.
Definition: Specifiers.h:160
clang::TextNodeDumper::VisitEnumDecl
void VisitEnumDecl(const EnumDecl *D)
Definition: TextNodeDumper.cpp:1603
clang::TextNodeDumper::VisitInjectedClassNameType
void VisitInjectedClassNameType(const InjectedClassNameType *T)
Definition: TextNodeDumper.cpp:1580
clang::DynTypedNode::print
void print(llvm::raw_ostream &OS, const PrintingPolicy &PP) const
Prints the node to the given output stream.
Definition: ASTTypeTraits.cpp:168
clang::CXXDeleteExpr
Represents a delete expression for memory deallocation and destructor calls, e.g.
Definition: ExprCXX.h:2398
clang::QualType::isNull
bool isNull() const
Return true if this QualType doesn't point to a type yet.
Definition: Type.h:738
clang::comments::TParamCommandComment
Doxygen \tparam command, describes a template parameter.
Definition: Comment.h:799
clang::APValue::ComplexInt
@ ComplexInt
Definition: APValue.h:135
Value
Value
Definition: UninitializedValues.cpp:102
clang::Decl
Decl - This represents one declaration (or definition), e.g.
Definition: DeclBase.h:89
clang::FunctionDecl::isPure
bool isPure() const
Whether this virtual function is pure, i.e.
Definition: Decl.h:2190
clang::ObjCPropertyDecl
Represents one property declaration in an Objective-C interface.
Definition: DeclObjC.h:732
clang::AddrLabelExpr
AddrLabelExpr - The GNU address of label extension, representing &&label.
Definition: Expr.h:4300
clang::LinkageSpecDecl::lang_cxx
@ lang_cxx
Definition: DeclCXX.h:2806
clang::CXXFunctionalCastExpr
Represents an explicit C++ type conversion that uses "functional" notation (C++ [expr....
Definition: ExprCXX.h:1726
clang::ObjCMethodDecl::isInstanceMethod
bool isInstanceMethod() const
Definition: DeclObjC.h:431
clang::TextNodeDumper::VisitAccessSpecDecl
void VisitAccessSpecDecl(const AccessSpecDecl *D)
Definition: TextNodeDumper.cpp:2179
clang::ObjCCategoryImplDecl::getCategoryDecl
ObjCCategoryDecl * getCategoryDecl() const
Definition: DeclObjC.cpp:2124
clang::StmtColor
static const TerminalColor StmtColor
Definition: ASTDumperUtils.h:49
clang::TextNodeDumper::VisitImplicitCastExpr
void VisitImplicitCastExpr(const ImplicitCastExpr *Node)
Definition: TextNodeDumper.cpp:1022
clang::CapturedDecl::isNothrow
bool isNothrow() const
Definition: Decl.cpp:4933
clang::ObjCPropertyAttribute::kind_assign
@ kind_assign
Definition: DeclObjCCommon.h:26
clang::StmtVisitorBase< llvm::make_const_ptr, TextNodeDumper, void, ParamTys... >::P
ParamTys P
Definition: StmtVisitor.h:171
clang::NonTypeTemplateParmDecl::getDepth
unsigned getDepth() const
Get the nesting depth of the template parameter.
Definition: DeclTemplate.h:1161
clang::TextNodeDumper::VisitObjCPropertyRefExpr
void VisitObjCPropertyRefExpr(const ObjCPropertyRefExpr *Node)
Definition: TextNodeDumper.cpp:1338
clang::APValue::getStructField
APValue & getStructField(unsigned i)
Definition: APValue.h:543
clang::PragmaCommentDecl
Represents a #pragma comment line.
Definition: Decl.h:140
clang::APValue::getUnionValue
APValue & getUnionValue()
Definition: APValue.h:559
clang::ObjCInterfaceDecl::getSuperClass
ObjCInterfaceDecl * getSuperClass() const
Definition: DeclObjC.cpp:339
clang::TextNodeDumper::VisitCharacterLiteral
void VisitCharacterLiteral(const CharacterLiteral *Node)
Definition: TextNodeDumper.cpp:1079
clang::TextNodeDumper::VisitLifetimeExtendedTemporaryDecl
void VisitLifetimeExtendedTemporaryDecl(const LifetimeExtendedTemporaryDecl *D)
Definition: TextNodeDumper.cpp:1709
clang::APValue::Vector
@ Vector
Definition: APValue.h:138
clang::InjectedClassNameType
The injected class name of a C++ class template or class template partial specialization.
Definition: Type.h:5256
clang::TextNodeDumper::VisitBinaryOperator
void VisitBinaryOperator(const BinaryOperator *Node)
Definition: TextNodeDumper.cpp:1151
clang::CXXDependentScopeMemberExpr
Represents a C++ member access expression where the actual member referenced could not be resolved be...
Definition: ExprCXX.h:3550
clang::templateargumentvisitor::Base< llvm::make_const_ref, ImplClass, void, ParamTys... >::Visit
void Visit(REF(TemplateArgument) TA, ParamTys... P)
Definition: TemplateArgumentVisitor.h:33
clang::ObjCPropertyImplDecl::getPropertyImplementation
Kind getPropertyImplementation() const
Definition: DeclObjC.h:2820
clang::OK_VectorComponent
@ OK_VectorComponent
A vector component is an element or range of elements on a vector.
Definition: Specifiers.h:142
clang::TextNodeDumper::VisitTemplateTypeParmDecl
void VisitTemplateTypeParmDecl(const TemplateTypeParmDecl *D)
Definition: TextNodeDumper.cpp:2073
clang::CompoundAssignOperator
CompoundAssignOperator - For compound assignments (e.g.
Definition: Expr.h:4050
clang::TextNodeDumper::VisitCapturedDecl
void VisitCapturedDecl(const CapturedDecl *D)
Definition: TextNodeDumper.cpp:1787
clang::TextNodeDumper::VisitCXXThisExpr
void VisitCXXThisExpr(const CXXThisExpr *Node)
Definition: TextNodeDumper.cpp:1185
clang::NOUR_Unevaluated
@ NOUR_Unevaluated
This name appears in an unevaluated operand.
Definition: Specifiers.h:162
clang::VarDecl::getInit
const Expr * getInit() const
Definition: Decl.h:1285
clang::TextNodeDumper::dumpName
void dumpName(const NamedDecl *ND)
Definition: TextNodeDumper.cpp:702
clang::SplitQualType
A std::pair-like structure for storing a qualified type split into its local qualifiers and its local...
Definition: Type.h:612
clang::ArrayType::Static
@ Static
Definition: Type.h:2890
clang::Expr::isValueDependent
bool isValueDependent() const
Determines whether the value of this expression depends on.
Definition: Expr.h:168
clang::CXXUnresolvedConstructExpr
Describes an explicit type conversion that uses functional notion but could not be resolved because o...
Definition: ExprCXX.h:3428
clang::ValueKindColor
static const TerminalColor ValueKindColor
Definition: ASTDumperUtils.h:62
clang::TypedefDecl
Represents the declaration of a typedef-name via the 'typedef' type specifier.
Definition: Decl.h:3282
clang::VectorType::AltiVecBool
@ AltiVecBool
is AltiVec 'vector bool ...'
Definition: Type.h:3242
clang::TextNodeDumper::VisitTypeAliasTemplateDecl
void VisitTypeAliasTemplateDecl(const TypeAliasTemplateDecl *D)
Definition: TextNodeDumper.cpp:1908
clang::TextNodeDumper::VisitOMPExecutableDirective
void VisitOMPExecutableDirective(const OMPExecutableDirective *D)
Definition: TextNodeDumper.cpp:1831
clang::PCK_Compiler
@ PCK_Compiler
Definition: PragmaKinds.h:18
clang::OMPDeclareReductionDecl::getCombiner
Expr * getCombiner()
Get combiner expression of the declare reduction construct.
Definition: DeclOpenMP.h:221
clang::OMPExecutableDirective
This is a basic class for representing single OpenMP executable directive.
Definition: StmtOpenMP.h:266
clang::ObjCPropertyImplDecl::getPropertyDecl
ObjCPropertyDecl * getPropertyDecl() const
Definition: DeclObjC.h:2815
clang::TemplateTypeParmDecl::isParameterPack
bool isParameterPack() const
Returns whether this is a parameter pack.
Definition: DeclTemplate.cpp:684
clang::TextNodeDumper::VisitWhileStmt
void VisitWhileStmt(const WhileStmt *Node)
Definition: TextNodeDumper.cpp:968
clang::ObjCPropertyAttribute::Kind
Kind
Definition: DeclObjCCommon.h:22
clang::ObjCTypeParamDecl
Represents the declaration of an Objective-C type parameter.
Definition: DeclObjC.h:582
clang::FunctionProtoType::ExceptionSpecInfo::Type
ExceptionSpecificationType Type
The kind of exception specification this is.
Definition: Type.h:3944
clang::FunctionProtoType::ExtProtoInfo::ExceptionSpec
ExceptionSpecInfo ExceptionSpec
Definition: Type.h:3974
clang::CXXThisExpr
Represents the this expression in C++.
Definition: ExprCXX.h:1142
clang::TemplateArgument::getAsDecl
ValueDecl * getAsDecl() const
Retrieve the declaration for a declaration non-type template argument.
Definition: TemplateBase.h:276
clang::ASTContext::getModulesWithMergedDefinition
ArrayRef< Module * > getModulesWithMergedDefinition(const NamedDecl *Def)
Get the additional modules in which the definition Def has been merged.
Definition: ASTContext.cpp:1132
clang::ExtVectorElementExpr
ExtVectorElementExpr - This represents access to specific elements of a vector, and may occur on the ...
Definition: Expr.h:5905
clang::TextNodeDumper::VisitIntegralTemplateArgument
void VisitIntegralTemplateArgument(const TemplateArgument &TA)
Definition: TextNodeDumper.cpp:896
clang::UnresolvedUsingType::getDecl
UnresolvedUsingTypenameDecl * getDecl() const
Definition: Type.h:4352
clang::ObjCMethodDecl
ObjCMethodDecl - Represents an instance or class method declaration.
Definition: DeclObjC.h:139
clang::OK_ObjCProperty
@ OK_ObjCProperty
An Objective-C property is a logical field of an Objective-C object which is read and written via Obj...
Definition: Specifiers.h:146
clang::PredefinedExpr
[C99 6.4.2.2] - A predefined identifier such as func.
Definition: Expr.h:1953
clang::TextNodeDumper::dumpType
void dumpType(QualType T)
Definition: TextNodeDumper.cpp:675
clang::UnresolvedUsingTypenameDecl::getQualifier
NestedNameSpecifier * getQualifier() const
Retrieve the nested-name-specifier that qualifies the name.
Definition: DeclCXX.h:3848
clang::TextNodeDumper::dumpPointer
void dumpPointer(const void *Ptr)
Definition: TextNodeDumper.cpp:611
clang::comments::TextComment
Plain text.
Definition: Comment.h:261
clang::ObjCPropertyAttribute::kind_readwrite
@ kind_readwrite
Definition: DeclObjCCommon.h:27
clang::OMPDeclareReductionDecl::getInitializerKind
InitKind getInitializerKind() const
Get initializer kind.
Definition: DeclOpenMP.h:242
clang::ObjCMessageExpr::Instance
@ Instance
The receiver is an object instance.
Definition: ExprObjC.h:1091
clang::VarDecl::CInit
@ CInit
C-style initialization with assignment.
Definition: Decl.h:881
clang::VarDecl::TLS_Dynamic
@ TLS_Dynamic
TLS with a dynamic initializer.
Definition: Decl.h:899
clang::TextNodeDumper::VisitFixedPointLiteral
void VisitFixedPointLiteral(const FixedPointLiteral *Node)
Definition: TextNodeDumper.cpp:1090
clang::TextNodeDumper::VisitObjCTypeParamDecl
void VisitObjCTypeParamDecl(const ObjCTypeParamDecl *D)
Definition: TextNodeDumper.cpp:2226
clang::FunctionProtoType::ExtProtoInfo
Extra information about a function prototype.
Definition: Type.h:3968
clang::DeclKindNameColor
static const TerminalColor DeclKindNameColor
Definition: ASTDumperUtils.h:45
clang::TextNodeDumper::VisitExpressionTraitExpr
void VisitExpressionTraitExpr(const ExpressionTraitExpr *Node)
Definition: TextNodeDumper.cpp:1264
clang::TemplateTypeParmType::getDepth
unsigned getDepth() const
Definition: Type.h:4806
clang
Definition: CalledOnceCheck.h:17
clang::ObjCPropertyDecl::Required
@ Required
Definition: DeclObjC.h:737
clang::IndirectFieldDecl
Represents a field injected from an anonymous union/struct into the parent scope.
Definition: Decl.h:3089
clang::TextNodeDumper::VisitGotoStmt
void VisitGotoStmt(const GotoStmt *Node)
Definition: TextNodeDumper.cpp:979
clang::TextNodeDumper::dumpBareType
void dumpBareType(QualType T, bool Desugar=true)
Definition: TextNodeDumper.cpp:661
clang::InitListExpr::getInitializedFieldInUnion
FieldDecl * getInitializedFieldInUnion()
If this initializes a union, specifies which field in the union to initialize.
Definition: Expr.h:4900
clang::CommentColor
static const TerminalColor CommentColor
Definition: ASTDumperUtils.h:51
clang::TextNodeDumper::VisitCXXBoolLiteralExpr
void VisitCXXBoolLiteralExpr(const CXXBoolLiteralExpr *Node)
Definition: TextNodeDumper.cpp:1181
clang::TextNodeDumper::VisitObjCPropertyDecl
void VisitObjCPropertyDecl(const ObjCPropertyDecl *D)
Definition: TextNodeDumper.cpp:2289
clang::TextNodeDumper::VisitConstantExpr
void VisitConstantExpr(const ConstantExpr *Node)
Definition: TextNodeDumper.cpp:989
clang::NonTypeTemplateParmDecl::isParameterPack
bool isParameterPack() const
Whether this parameter is a non-type template parameter pack.
Definition: DeclTemplate.h:1498
clang::Stmt
Stmt - This represents one statement.
Definition: Stmt.h:69
clang::TemplateArgument::getAsTemplate
TemplateName getAsTemplate() const
Retrieve the template name for a template name argument.
Definition: TemplateBase.h:293
clang::ObjCIvarDecl
ObjCIvarDecl - Represents an ObjC instance variable.
Definition: DeclObjC.h:1924
clang::TextNodeDumper::visitHTMLEndTagComment
void visitHTMLEndTagComment(const comments::HTMLEndTagComment *C, const comments::FullComment *)
Definition: TextNodeDumper.cpp:805
clang::VarDecl::isConstexpr
bool isConstexpr() const
Whether this variable is (C++11) constexpr.
Definition: Decl.h:1479
clang::TextNodeDumper::VisitExprWithCleanups
void VisitExprWithCleanups(const ExprWithCleanups *Node)
Definition: TextNodeDumper.cpp:1276
clang::ObjCPropertyAttribute::kind_nonatomic
@ kind_nonatomic
Definition: DeclObjCCommon.h:30
clang::comments::VerbatimBlockComment
A verbatim block command (e.
Definition: Comment.h:891
clang::APValue::Int
@ Int
Definition: APValue.h:132
clang::ConstructorUsingShadowDecl::getNominatedBaseClass
CXXRecordDecl * getNominatedBaseClass() const
Get the base class that was named in the using declaration.
Definition: DeclCXX.cpp:3007
clang::GenericSelectionExpr
Represents a C11 generic selection.
Definition: Expr.h:5623
clang::DeclNameColor
static const TerminalColor DeclNameColor
Definition: ASTDumperUtils.h:81
clang::TextNodeDumper::VisitVarDecl
void VisitVarDecl(const VarDecl *D)
Definition: TextNodeDumper.cpp:1729
clang::TextNodeDumper::VisitObjCMethodDecl
void VisitObjCMethodDecl(const ObjCMethodDecl *D)
Definition: TextNodeDumper.cpp:2214
clang::TextNodeDumper::visitVerbatimLineComment
void visitVerbatimLineComment(const comments::VerbatimLineComment *C, const comments::FullComment *)
Definition: TextNodeDumper.cpp:872
clang::EnumDecl::getIntegerType
QualType getIntegerType() const
Return the integer type this enum decl corresponds to.
Definition: Decl.h:3746
clang::TextNodeDumper::dumpDeclRef
void dumpDeclRef(const Decl *D, StringRef Label={})
Definition: TextNodeDumper.cpp:733
clang::TextNodeDumper::VisitLabelDecl
void VisitLabelDecl(const LabelDecl *D)
Definition: TextNodeDumper.cpp:1594
clang::ObjCProtocolDecl
Represents an Objective-C protocol declaration.
Definition: DeclObjC.h:2050
clang::TextNodeDumper::VisitUnaryOperator
void VisitUnaryOperator(const UnaryOperator *Node)
Definition: TextNodeDumper.cpp:1118
clang::Expr::getType
QualType getType() const
Definition: Expr.h:141
clang::tok::isLiteral
bool isLiteral(TokenKind K)
Return true if this is a "literal" kind, like a numeric constant, string, etc.
Definition: TokenKinds.h:86
clang::CXXBaseSpecifier
Represents a base class of a C++ class.
Definition: DeclCXX.h:147
clang::Attr
Attr - This represents one attribute.
Definition: Attr.h:46
clang::TypeSourceInfo
A container of type source information.
Definition: Type.h:6395
clang::NamedDecl::getDeclName
DeclarationName getDeclName() const
Get the actual, stored name of the declaration, which may be a special name.
Definition: Decl.h:313
clang::OMPRequiresDecl
This represents '#pragma omp requires...' directive.
Definition: DeclOpenMP.h:416
clang::PragmaDetectMismatchDecl::getName
StringRef getName() const
Definition: Decl.h:197
clang::TextNodeDumper::VisitObjCCategoryDecl
void VisitObjCCategoryDecl(const ObjCCategoryDecl *D)
Definition: TextNodeDumper.cpp:2246
clang::RQ_LValue
@ RQ_LValue
An lvalue ref-qualifier was provided (&).
Definition: Type.h:1446
clang::CXXNamedCastExpr
Abstract class common to all of the C++ "named"/"keyword" casts.
Definition: ExprCXX.h:373
clang::TextNodeDumper::VisitInitListExpr
void VisitInitListExpr(const InitListExpr *ILE)
Definition: TextNodeDumper.cpp:1106
clang::TextNodeDumper::VisitNullTemplateArgument
void VisitNullTemplateArgument(const TemplateArgument &TA)
Definition: TextNodeDumper.cpp:877
clang::TextNodeDumper::VisitIndirectFieldDecl
void VisitIndirectFieldDecl(const IndirectFieldDecl *D)
Definition: TextNodeDumper.cpp:1631
clang::LifetimeExtendedTemporaryDecl::getExtendingDecl
ValueDecl * getExtendingDecl()
Definition: DeclCXX.h:3131
clang::TextNodeDumper::VisitObjCEncodeExpr
void VisitObjCEncodeExpr(const ObjCEncodeExpr *Node)
Definition: TextNodeDumper.cpp:1325
clang::TypeVisitor::Visit
RetTy Visit(const Type *T)
Performs the operation associated with this visitor object.
Definition: TypeVisitor.h:68
clang::BuiltinTemplateDecl
Represents the builtin template declaration which is used to implement __make_integer_seq and other b...
Definition: DeclTemplate.h:1764
clang::FunctionDecl::param_begin
param_iterator param_begin()
Definition: Decl.h:2495
clang::TextNodeDumper::VisitStringLiteral
void VisitStringLiteral(const StringLiteral *Str)
Definition: TextNodeDumper.cpp:1100
clang::TextNodeDumper::VisitConceptSpecializationExpr
void VisitConceptSpecializationExpr(const ConceptSpecializationExpr *Node)
Definition: TextNodeDumper.cpp:1411
clang::TypeAliasTemplateDecl
Declaration of an alias template.
Definition: DeclTemplate.h:2520
clang::TextNodeDumper::VisitObjCIvarRefExpr
void VisitObjCIvarRefExpr(const ObjCIvarRefExpr *Node)
Definition: TextNodeDumper.cpp:1059
clang::TextNodeDumper::VisitGenericSelectionExpr
void VisitGenericSelectionExpr(const GenericSelectionExpr *E)
Definition: TextNodeDumper.cpp:1113
clang::ImplicitCastExpr
ImplicitCastExpr - Allows us to explicitly represent implicit type conversions, which have no direct ...
Definition: Expr.h:3618
clang::TextNodeDumper::VisitDependentSizedArrayType
void VisitDependentSizedArrayType(const DependentSizedArrayType *T)
Definition: TextNodeDumper.cpp:1453
clang::TextNodeDumper::VisitCXXDeleteExpr
void VisitCXXDeleteExpr(const CXXDeleteExpr *Node)
Definition: TextNodeDumper.cpp:1245
clang::MemberExpr
MemberExpr - [C99 6.5.2.3] Structure and Union Members.
Definition: Expr.h:3162
clang::LifetimeExtendedTemporaryDecl
Implicit declaration of a temporary that was materialized by a MaterializeTemporaryExpr and lifetime-...
Definition: DeclCXX.h:3094
clang::UnaryTransformType::getUTTKind
UTTKind getUTTKind() const
Definition: Type.h:4559
clang::RecordType::getDecl
RecordDecl * getDecl() const
Definition: Type.h:4623
clang::TextNodeDumper::dumpAccessSpecifier
void dumpAccessSpecifier(AccessSpecifier AS)
Definition: TextNodeDumper.cpp:709
clang::VarDecl::needsDestruction
QualType::DestructionKind needsDestruction(const ASTContext &Ctx) const
Would the destruction of this variable have any effect, and if so, what kind?
Definition: Decl.cpp:2694
clang::QualType::getAsOpaquePtr
void * getAsOpaquePtr() const
Definition: Type.h:718
clang::APValue::MemberPointer
@ MemberPointer
Definition: APValue.h:142
clang::FunctionType::isConst
bool isConst() const
Definition: Type.h:3827
clang::TextNodeDumper::VisitObjCBoolLiteralExpr
void VisitObjCBoolLiteralExpr(const ObjCBoolLiteralExpr *Node)
Definition: TextNodeDumper.cpp:1390
clang::ReferenceType
Base for LValueReferenceType and RValueReferenceType.
Definition: Type.h:2751
clang::ObjCPropertyAttribute::kind_getter
@ kind_getter
Definition: DeclObjCCommon.h:25
clang::TextNodeDumper::VisitNonTypeTemplateParmDecl
void VisitNonTypeTemplateParmDecl(const NonTypeTemplateParmDecl *D)
Definition: TextNodeDumper.cpp:2092
clang::concepts::Requirement::getKind
RequirementKind getKind() const
Definition: ExprConcepts.h:176
clang::TextNodeDumper::VisitObjCProtocolDecl
void VisitObjCProtocolDecl(const ObjCProtocolDecl *D)
Definition: TextNodeDumper.cpp:2260
clang::AutoType::isDecltypeAuto
bool isDecltypeAuto() const
Definition: Type.h:5022
clang::comments::InlineCommandComment::RenderNormal
@ RenderNormal
Definition: Comment.h:309
clang::PragmaDetectMismatchDecl
Represents a #pragma detect_mismatch line.
Definition: Decl.h:174
clang::VectorType::getNumElements
unsigned getNumElements() const
Definition: Type.h:3271
clang::TextNodeDumper::dumpSourceRange
void dumpSourceRange(SourceRange R)
Definition: TextNodeDumper.cpp:645
clang::getAccessSpelling
llvm::StringRef getAccessSpelling(AccessSpecifier AS)
Definition: Specifiers.h:378
clang::APValue
APValue - This class implements a discriminated union of [uninitialized] [APSInt] [APFloat],...
Definition: APValue.h:122
clang::StringLiteral::outputString
void outputString(raw_ostream &OS) const
Definition: Expr.cpp:1137
isTrivial
static bool isTrivial(ASTContext &Ctx, const Expr *E)
Checks if the expression is constant or does not have non-trivial function calls.
Definition: CGOpenMPRuntime.cpp:6597
clang::PCK_User
@ PCK_User
Definition: PragmaKinds.h:20
clang::PresumedLoc
Represents an unpacked "presumed" location which can be presented to the user.
Definition: SourceLocation.h:304
clang::concepts::Requirement::RK_Nested
@ RK_Nested
Definition: ExprConcepts.h:153
clang::ASTContext::getModuleInitializers
ArrayRef< Decl * > getModuleInitializers(Module *M)
Get the initializations to perform when importing a module, if any.
Definition: ASTContext.cpp:1191
clang::VarDecl::getInitStyle
InitializationStyle getInitStyle() const
The style of initialization for this declaration.
Definition: Decl.h:1376
clang::TextNodeDumper::VisitCXXConstructExpr
void VisitCXXConstructExpr(const CXXConstructExpr *Node)
Definition: TextNodeDumper.cpp:1212
clang::TypeAliasDecl
Represents the declaration of a typedef-name via a C++11 alias-declaration.
Definition: Decl.h:3302
clang::SC_None
@ SC_None
Definition: Specifiers.h:235
clang::ValueDecl::getType
QualType getType() const
Definition: Decl.h:687
clang::InjectedClassNameType::getDecl
CXXRecordDecl * getDecl() const
Definition: Type.cpp:3587
clang::VarTemplateDecl
Declaration of a variable template.
Definition: DeclTemplate.h:3079
clang::ImportDecl::getImportedModule
Module * getImportedModule() const
Retrieve the module that was imported by the import declaration.
Definition: Decl.h:4506
clang::PackExpansionType::getNumExpansions
Optional< unsigned > getNumExpansions() const
Retrieve the number of expansions that this pack expansion will generate, if known.
Definition: Type.h:5657
clang::Expr
This represents one expression.
Definition: Expr.h:109
clang::TextNodeDumper::visitTextComment
void visitTextComment(const comments::TextComment *C, const comments::FullComment *)
Definition: TextNodeDumper.cpp:761
clang::IndirectFieldDecl::chain
ArrayRef< NamedDecl * > chain() const
Definition: Decl.h:3111
clang::PragmaDetectMismatchDecl::getValue
StringRef getValue() const
Definition: Decl.h:198
SM
#define SM(sm)
Definition: Cuda.cpp:78
clang::ConstructorUsingShadowDecl
Represents a shadow constructor declaration introduced into a class by a C++11 using-declaration that...
Definition: DeclCXX.h:3465
clang::TemplateTypeParmType::isParameterPack
bool isParameterPack() const
Definition: Type.h:4808
clang::comments::InlineCommandComment::RenderAnchor
@ RenderAnchor
Definition: Comment.h:313
clang::TextNodeDumper::VisitDeclRefExpr
void VisitDeclRefExpr(const DeclRefExpr *Node)
Definition: TextNodeDumper.cpp:1028
clang::TextNodeDumper::dumpCleanupObject
void dumpCleanupObject(const ExprWithCleanups::CleanupObject &C)
Definition: TextNodeDumper.cpp:716
clang::TextNodeDumper::VisitOMPCapturedExprDecl
void VisitOMPCapturedExprDecl(const OMPCapturedExprDecl *D)
Definition: TextNodeDumper.cpp:1880
clang::DependentSizedArrayType::getBracketsRange
SourceRange getBracketsRange() const
Definition: Type.h:3115
clang::CXXCtorInitializer
Represents a C++ base or member initializer.
Definition: DeclCXX.h:2172
clang::BlockDecl::Capture
A class which contains all the information about a particular captured value.
Definition: Decl.h:4159
clang::TextNodeDumper::VisitCXXNewExpr
void VisitCXXNewExpr(const CXXNewExpr *Node)
Definition: TextNodeDumper.cpp:1232
clang::concepts::Requirement::RK_Type
@ RK_Type
Definition: ExprConcepts.h:153
clang::FunctionDecl::isDeletedAsWritten
bool isDeletedAsWritten() const
Definition: Decl.h:2342
clang::TextNodeDumper::VisitPredefinedExpr
void VisitPredefinedExpr(const PredefinedExpr *Node)
Definition: TextNodeDumper.cpp:1075
clang::TextNodeDumper::VisitUsingShadowDecl
void VisitUsingShadowDecl(const UsingShadowDecl *D)
Definition: TextNodeDumper.cpp:2138
clang::FunctionProtoType::getExtProtoInfo
ExtProtoInfo getExtProtoInfo() const
Definition: Type.h:4106
clang::ObjCPropertyDecl::getPropertyAttributes
ObjCPropertyAttribute::Kind getPropertyAttributes() const
Definition: DeclObjC.h:815
clang::CastExpr
CastExpr - Base class for type casts, including both implicit casts (ImplicitCastExpr) and explicit c...
Definition: Expr.h:3473
clang::DependentSizedExtVectorType
Represents an extended vector type where either the type or size is dependent.
Definition: Type.h:3189
clang::TemplateTemplateParmDecl::getDepth
unsigned getDepth() const
Get the nesting depth of the template parameter.
Definition: DeclTemplate.h:1161
clang::TextNodeDumper::VisitTemplateSpecializationType
void VisitTemplateSpecializationType(const TemplateSpecializationType *T)
Definition: TextNodeDumper.cpp:1572
clang::Decl::getLocation
SourceLocation getLocation() const
Definition: DeclBase.h:430
clang::SplitQualType::Quals
Qualifiers Quals
The local qualifiers.
Definition: Type.h:617
clang::TextNodeDumper::VisitCompoundAssignOperator
void VisitCompoundAssignOperator(const CompoundAssignOperator *Node)
Definition: TextNodeDumper.cpp:1157
clang::attrvisitor::Base< llvm::make_const_ptr, ImplClass, void, ParamTys... >::Visit
void Visit(PTR(Attr) A)
Definition: AttrVisitor.h:31
clang::DeclRefExpr
A reference to a declared variable, function, enum, etc.
Definition: Expr.h:1217
clang::NamespaceDecl
Represent a C++ namespace.
Definition: Decl.h:542
clang::TextNodeDumper::VisitFieldDecl
void VisitFieldDecl(const FieldDecl *D)
Definition: TextNodeDumper.cpp:1720
clang::FunctionDecl
Represents a function declaration or definition.
Definition: Decl.h:1856
dumpBasePath
static void dumpBasePath(raw_ostream &OS, const CastExpr *Node)
Definition: TextNodeDumper.cpp:919
clang::TemplateTypeParmDecl::getDepth
unsigned getDepth() const
Retrieve the depth of the template parameter.
Definition: DeclTemplate.cpp:676
clang::BlockDecl::capturesCXXThis
bool capturesCXXThis() const
Definition: Decl.h:4285
clang::RecordDecl
Represents a struct/union/class.
Definition: Decl.h:3859
clang::TextNodeDumper::VisitDeclarationTemplateArgument
void VisitDeclarationTemplateArgument(const TemplateArgument &TA)
Definition: TextNodeDumper.cpp:886
clang::CallExpr
CallExpr - Represents a function call (C99 6.5.2.2, C++ [expr.call]).
Definition: Expr.h:2795
clang::TextNodeDumper::VisitCXXDependentScopeMemberExpr
void VisitCXXDependentScopeMemberExpr(const CXXDependentScopeMemberExpr *Node)
Definition: TextNodeDumper.cpp:1286
clang::TextNodeDumper::Visit
void Visit(const comments::Comment *C, const comments::FullComment *FC)
Definition: TextNodeDumper.cpp:70
clang::TextNodeDumper::VisitCXXNamedCastExpr
void VisitCXXNamedCastExpr(const CXXNamedCastExpr *Node)
Definition: TextNodeDumper.cpp:1173
clang::FunctionDecl::getStorageClass
StorageClass getStorageClass() const
Returns the storage class as written in the source.
Definition: Decl.h:2580
clang::CXXOperatorCallExpr
A call to an overloaded operator written using operator syntax.
Definition: ExprCXX.h:82
clang::ObjCInterfaceType
Interfaces are the core concept in Objective-C for object oriented design.
Definition: Type.h:6016
clang::TextNodeDumper::VisitCaseStmt
void VisitCaseStmt(const CaseStmt *Node)
Definition: TextNodeDumper.cpp:984
clang::TextNodeDumper::VisitObjCIvarDecl
void VisitObjCIvarDecl(const ObjCIvarDecl *D)
Definition: TextNodeDumper.cpp:2189
clang::NamespaceDecl::isInline
bool isInline() const
Returns true if this is an inline namespace declaration.
Definition: Decl.h:603
clang::TextTreeStructure
Definition: TextNodeDumper.h:33
clang::TextNodeDumper::VisitConstantArrayType
void VisitConstantArrayType(const ConstantArrayType *T)
Definition: TextNodeDumper.cpp:1442
clang::CXXConstructExpr
Represents a call to a C++ constructor.
Definition: ExprCXX.h:1460
clang::ObjCPropertyAttribute::kind_retain
@ kind_retain
Definition: DeclObjCCommon.h:28
clang::TextNodeDumper::VisitBuiltinTemplateDecl
void VisitBuiltinTemplateDecl(const BuiltinTemplateDecl *D)
Definition: TextNodeDumper.cpp:2069
clang::ObjCIvarRefExpr
ObjCIvarRefExpr - A reference to an ObjC instance variable.
Definition: ExprObjC.h:548
clang::NOUR_Constant
@ NOUR_Constant
This name appears as a potential result of an lvalue-to-rvalue conversion that is a constant expressi...
Definition: Specifiers.h:165
clang::PCK_Unknown
@ PCK_Unknown
Definition: PragmaKinds.h:15
clang::concepts::Requirement::isDependent
bool isDependent() const
Definition: ExprConcepts.h:191
clang::TextNodeDumper::VisitArrayType
void VisitArrayType(const ArrayType *T)
Definition: TextNodeDumper.cpp:1428
clang::TextNodeDumper::VisitFunctionType
void VisitFunctionType(const FunctionType *T)
Definition: TextNodeDumper.cpp:1495
clang::UsingDirectiveDecl::getNominatedNamespace
NamespaceDecl * getNominatedNamespace()
Returns the namespace nominated by this using-directive.
Definition: DeclCXX.cpp:2838
clang::ObjCMethodDecl::isVariadic
bool isVariadic() const
Definition: DeclObjC.h:436
clang::comments::HTMLStartTagComment::Attribute
Definition: Comment.h:415
clang::FriendDecl::getFriendType
TypeSourceInfo * getFriendType() const
If this friend declaration names an (untemplated but possibly dependent) type, return the type; other...
Definition: DeclFriend.h:123
clang::UsingEnumDecl::getEnumDecl
EnumDecl * getEnumDecl() const
Definition: DeclCXX.h:3609
clang::VarDecl::evaluateValue
APValue * evaluateValue() const
Attempt to evaluate the value of the initializer attached to this declaration, and produce notes expl...
Definition: Decl.cpp:2430
clang::TemplateArgument::getAsType
QualType getAsType() const
Retrieve the type for a type template argument.
Definition: TemplateBase.h:269
clang::VarDecl::CallInit
@ CallInit
Call-style initialization (C++98)
Definition: Decl.h:884
clang::Decl::getDeclKindName
const char * getDeclKindName() const
Definition: DeclBase.cpp:123
clang::TemplateTemplateParmDecl::isParameterPack
bool isParameterPack() const
Whether this template template parameter is a template parameter pack.
Definition: DeclTemplate.h:1670
clang::ObjCPropertyAttribute::kind_setter
@ kind_setter
Definition: DeclObjCCommon.h:31
clang::TextNodeDumper::VisitTypeAliasDecl
void VisitTypeAliasDecl(const TypeAliasDecl *D)
Definition: TextNodeDumper.cpp:1903
clang::APValue::Float
@ Float
Definition: APValue.h:133
clang::CXXMethodDecl
Represents a static or instance method of a struct/union/class.
Definition: DeclCXX.h:1948
clang::ObjCIvarDecl::Package
@ Package
Definition: DeclObjC.h:1929
clang::Decl::getDeclContext
DeclContext * getDeclContext()
Definition: DeclBase.h:439
clang::TemplateSpecializationType::getTemplateName
TemplateName getTemplateName() const
Retrieve the name of the template that we are specializing.
Definition: Type.h:5179
clang::SYCLUniqueStableNameExpr
Definition: Expr.h:2050
clang::TextNodeDumper::VisitArrayTypeTraitExpr
void VisitArrayTypeTraitExpr(const ArrayTypeTraitExpr *Node)
Definition: TextNodeDumper.cpp:1260
clang::TextNodeDumper::VisitTagType
void VisitTagType(const TagType *T)
Definition: TextNodeDumper.cpp:1549
clang::TextNodeDumper::VisitUnresolvedUsingValueDecl
void VisitUnresolvedUsingValueDecl(const UnresolvedUsingValueDecl *D)
Definition: TextNodeDumper.cpp:2129
clang::StorageClass
StorageClass
Storage classes.
Definition: Specifiers.h:233