clang  16.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  if (FD->isMultiVersion())
287  OS << " multiversion";
288  }
289 
290  if (!isa<FunctionDecl>(*D)) {
291  const auto *MD = dyn_cast<ObjCMethodDecl>(D);
292  if (!MD || !MD->isThisDeclarationADefinition()) {
293  const auto *DC = dyn_cast<DeclContext>(D);
294  if (DC && DC->hasExternalLexicalStorage()) {
295  ColorScope Color(OS, ShowColors, UndeserializedColor);
296  OS << " <undeserialized declarations>";
297  }
298  }
299  }
300 
302 }
303 
305  OS << "CXXCtorInitializer";
306  if (Init->isAnyMemberInitializer()) {
307  OS << ' ';
308  dumpBareDeclRef(Init->getAnyMember());
309  } else if (Init->isBaseInitializer()) {
310  dumpType(QualType(Init->getBaseClass(), 0));
311  } else if (Init->isDelegatingInitializer()) {
312  dumpType(Init->getTypeSourceInfo()->getType());
313  } else {
314  llvm_unreachable("Unknown initializer type");
315  }
316 }
317 
319  OS << "capture";
320  if (C.isByRef())
321  OS << " byref";
322  if (C.isNested())
323  OS << " nested";
324  if (C.getVariable()) {
325  OS << ' ';
326  dumpBareDeclRef(C.getVariable());
327  }
328 }
329 
331  if (!C) {
332  ColorScope Color(OS, ShowColors, NullColor);
333  OS << "<<<NULL>>> OMPClause";
334  return;
335  }
336  {
337  ColorScope Color(OS, ShowColors, AttrColor);
338  StringRef ClauseName(llvm::omp::getOpenMPClauseName(C->getClauseKind()));
339  OS << "OMP" << ClauseName.substr(/*Start=*/0, /*N=*/1).upper()
340  << ClauseName.drop_front() << "Clause";
341  }
342  dumpPointer(C);
343  dumpSourceRange(SourceRange(C->getBeginLoc(), C->getEndLoc()));
344  if (C->isImplicit())
345  OS << " <implicit>";
346 }
347 
349  const TypeSourceInfo *TSI = A.getTypeSourceInfo();
350  if (TSI) {
351  OS << "case ";
352  dumpType(TSI->getType());
353  } else {
354  OS << "default";
355  }
356 
357  if (A.isSelected())
358  OS << " selected";
359 }
360 
362  if (!R) {
363  ColorScope Color(OS, ShowColors, NullColor);
364  OS << "<<<NULL>>> Requirement";
365  return;
366  }
367 
368  {
369  ColorScope Color(OS, ShowColors, StmtColor);
370  switch (R->getKind()) {
372  OS << "TypeRequirement";
373  break;
375  OS << "SimpleRequirement";
376  break;
378  OS << "CompoundRequirement";
379  break;
381  OS << "NestedRequirement";
382  break;
383  }
384  }
385 
386  dumpPointer(R);
387 
388  if (auto *ER = dyn_cast<concepts::ExprRequirement>(R)) {
389  if (ER->hasNoexceptRequirement())
390  OS << " noexcept";
391  }
392 
393  if (R->isDependent())
394  OS << " dependent";
395  else
396  OS << (R->isSatisfied() ? " satisfied" : " unsatisfied");
398  OS << " contains_unexpanded_pack";
399 }
400 
401 static double GetApproxValue(const llvm::APFloat &F) {
402  llvm::APFloat V = F;
403  bool ignored;
404  V.convert(llvm::APFloat::IEEEdouble(), llvm::APFloat::rmNearestTiesToEven,
405  &ignored);
406  return V.convertToDouble();
407 }
408 
409 /// True if the \p APValue \p Value can be folded onto the current line.
410 static bool isSimpleAPValue(const APValue &Value) {
411  switch (Value.getKind()) {
412  case APValue::None:
414  case APValue::Int:
415  case APValue::Float:
416  case APValue::FixedPoint:
417  case APValue::ComplexInt:
419  case APValue::LValue:
422  return true;
423  case APValue::Vector:
424  case APValue::Array:
425  case APValue::Struct:
426  return false;
427  case APValue::Union:
428  return isSimpleAPValue(Value.getUnionValue());
429  }
430  llvm_unreachable("unexpected APValue kind!");
431 }
432 
433 /// Dump the children of the \p APValue \p Value.
434 ///
435 /// \param[in] Value The \p APValue to visit
436 /// \param[in] Ty The \p QualType passed to \p Visit
437 ///
438 /// \param[in] IdxToChildFun A function mapping an \p APValue and an index
439 /// to one of the child of the \p APValue
440 ///
441 /// \param[in] NumChildren \p IdxToChildFun will be called on \p Value with
442 /// the indices in the range \p [0,NumChildren(
443 ///
444 /// \param[in] LabelSingular The label to use on a line with a single child
445 /// \param[in] LabelPlurial The label to use on a line with multiple children
446 void TextNodeDumper::dumpAPValueChildren(
447  const APValue &Value, QualType Ty,
448  const APValue &(*IdxToChildFun)(const APValue &, unsigned),
449  unsigned NumChildren, StringRef LabelSingular, StringRef LabelPlurial) {
450  // To save some vertical space we print up to MaxChildrenPerLine APValues
451  // considered to be simple (by isSimpleAPValue) on a single line.
452  constexpr unsigned MaxChildrenPerLine = 4;
453  unsigned I = 0;
454  while (I < NumChildren) {
455  unsigned J = I;
456  while (J < NumChildren) {
457  if (isSimpleAPValue(IdxToChildFun(Value, J)) &&
458  (J - I < MaxChildrenPerLine)) {
459  ++J;
460  continue;
461  }
462  break;
463  }
464 
465  J = std::max(I + 1, J);
466 
467  // Print [I,J) on a single line.
468  AddChild(J - I > 1 ? LabelPlurial : LabelSingular, [=]() {
469  for (unsigned X = I; X < J; ++X) {
470  Visit(IdxToChildFun(Value, X), Ty);
471  if (X + 1 != J)
472  OS << ", ";
473  }
474  });
475  I = J;
476  }
477 }
478 
480  ColorScope Color(OS, ShowColors, ValueKindColor);
481  switch (Value.getKind()) {
482  case APValue::None:
483  OS << "None";
484  return;
486  OS << "Indeterminate";
487  return;
488  case APValue::Int:
489  OS << "Int ";
490  {
491  ColorScope Color(OS, ShowColors, ValueColor);
492  OS << Value.getInt();
493  }
494  return;
495  case APValue::Float:
496  OS << "Float ";
497  {
498  ColorScope Color(OS, ShowColors, ValueColor);
499  OS << GetApproxValue(Value.getFloat());
500  }
501  return;
502  case APValue::FixedPoint:
503  OS << "FixedPoint ";
504  {
505  ColorScope Color(OS, ShowColors, ValueColor);
506  OS << Value.getFixedPoint();
507  }
508  return;
509  case APValue::Vector: {
510  unsigned VectorLength = Value.getVectorLength();
511  OS << "Vector length=" << VectorLength;
512 
513  dumpAPValueChildren(
514  Value, Ty,
515  [](const APValue &Value, unsigned Index) -> const APValue & {
516  return Value.getVectorElt(Index);
517  },
518  VectorLength, "element", "elements");
519  return;
520  }
521  case APValue::ComplexInt:
522  OS << "ComplexInt ";
523  {
524  ColorScope Color(OS, ShowColors, ValueColor);
525  OS << Value.getComplexIntReal() << " + " << Value.getComplexIntImag()
526  << 'i';
527  }
528  return;
530  OS << "ComplexFloat ";
531  {
532  ColorScope Color(OS, ShowColors, ValueColor);
533  OS << GetApproxValue(Value.getComplexFloatReal()) << " + "
534  << GetApproxValue(Value.getComplexFloatImag()) << 'i';
535  }
536  return;
537  case APValue::LValue:
538  (void)Context;
539  OS << "LValue <todo>";
540  return;
541  case APValue::Array: {
542  unsigned ArraySize = Value.getArraySize();
543  unsigned NumInitializedElements = Value.getArrayInitializedElts();
544  OS << "Array size=" << ArraySize;
545 
546  dumpAPValueChildren(
547  Value, Ty,
548  [](const APValue &Value, unsigned Index) -> const APValue & {
549  return Value.getArrayInitializedElt(Index);
550  },
551  NumInitializedElements, "element", "elements");
552 
553  if (Value.hasArrayFiller()) {
554  AddChild("filler", [=] {
555  {
556  ColorScope Color(OS, ShowColors, ValueColor);
557  OS << ArraySize - NumInitializedElements << " x ";
558  }
559  Visit(Value.getArrayFiller(), Ty);
560  });
561  }
562 
563  return;
564  }
565  case APValue::Struct: {
566  OS << "Struct";
567 
568  dumpAPValueChildren(
569  Value, Ty,
570  [](const APValue &Value, unsigned Index) -> const APValue & {
571  return Value.getStructBase(Index);
572  },
573  Value.getStructNumBases(), "base", "bases");
574 
575  dumpAPValueChildren(
576  Value, Ty,
577  [](const APValue &Value, unsigned Index) -> const APValue & {
578  return Value.getStructField(Index);
579  },
580  Value.getStructNumFields(), "field", "fields");
581 
582  return;
583  }
584  case APValue::Union: {
585  OS << "Union";
586  {
587  ColorScope Color(OS, ShowColors, ValueColor);
588  if (const FieldDecl *FD = Value.getUnionField())
589  OS << " ." << *cast<NamedDecl>(FD);
590  }
591  // If the union value is considered to be simple, fold it into the
592  // current line to save some vertical space.
593  const APValue &UnionValue = Value.getUnionValue();
594  if (isSimpleAPValue(UnionValue)) {
595  OS << ' ';
596  Visit(UnionValue, Ty);
597  } else {
598  AddChild([=] { Visit(UnionValue, Ty); });
599  }
600 
601  return;
602  }
604  OS << "MemberPointer <todo>";
605  return;
607  OS << "AddrLabelDiff <todo>";
608  return;
609  }
610  llvm_unreachable("Unknown APValue kind!");
611 }
612 
613 void TextNodeDumper::dumpPointer(const void *Ptr) {
614  ColorScope Color(OS, ShowColors, AddressColor);
615  OS << ' ' << Ptr;
616 }
617 
619  if (!SM)
620  return;
621 
622  ColorScope Color(OS, ShowColors, LocationColor);
623  SourceLocation SpellingLoc = SM->getSpellingLoc(Loc);
624 
625  // The general format we print out is filename:line:col, but we drop pieces
626  // that haven't changed since the last loc printed.
627  PresumedLoc PLoc = SM->getPresumedLoc(SpellingLoc);
628 
629  if (PLoc.isInvalid()) {
630  OS << "<invalid sloc>";
631  return;
632  }
633 
634  if (strcmp(PLoc.getFilename(), LastLocFilename) != 0) {
635  OS << PLoc.getFilename() << ':' << PLoc.getLine() << ':'
636  << PLoc.getColumn();
637  LastLocFilename = PLoc.getFilename();
638  LastLocLine = PLoc.getLine();
639  } else if (PLoc.getLine() != LastLocLine) {
640  OS << "line" << ':' << PLoc.getLine() << ':' << PLoc.getColumn();
641  LastLocLine = PLoc.getLine();
642  } else {
643  OS << "col" << ':' << PLoc.getColumn();
644  }
645 }
646 
648  // Can't translate locations if a SourceManager isn't available.
649  if (!SM)
650  return;
651 
652  OS << " <";
653  dumpLocation(R.getBegin());
654  if (R.getBegin() != R.getEnd()) {
655  OS << ", ";
656  dumpLocation(R.getEnd());
657  }
658  OS << ">";
659 
660  // <t2.c:123:421[blah], t2.c:412:321>
661 }
662 
663 void TextNodeDumper::dumpBareType(QualType T, bool Desugar) {
664  ColorScope Color(OS, ShowColors, TypeColor);
665 
666  SplitQualType T_split = T.split();
667  OS << "'" << QualType::getAsString(T_split, PrintPolicy) << "'";
668 
669  if (Desugar && !T.isNull()) {
670  // If the type is sugared, also dump a (shallow) desugared type.
671  SplitQualType D_split = T.getSplitDesugaredType();
672  if (T_split != D_split)
673  OS << ":'" << QualType::getAsString(D_split, PrintPolicy) << "'";
674  }
675 }
676 
678  OS << ' ';
679  dumpBareType(T);
680 }
681 
683  if (!D) {
684  ColorScope Color(OS, ShowColors, NullColor);
685  OS << "<<<NULL>>>";
686  return;
687  }
688 
689  {
690  ColorScope Color(OS, ShowColors, DeclKindNameColor);
691  OS << D->getDeclKindName();
692  }
693  dumpPointer(D);
694 
695  if (const NamedDecl *ND = dyn_cast<NamedDecl>(D)) {
696  ColorScope Color(OS, ShowColors, DeclNameColor);
697  OS << " '" << ND->getDeclName() << '\'';
698  }
699 
700  if (const ValueDecl *VD = dyn_cast<ValueDecl>(D))
701  dumpType(VD->getType());
702 }
703 
705  if (ND->getDeclName()) {
706  ColorScope Color(OS, ShowColors, DeclNameColor);
707  OS << ' ' << ND->getDeclName();
708  }
709 }
710 
712  const auto AccessSpelling = getAccessSpelling(AS);
713  if (AccessSpelling.empty())
714  return;
715  OS << AccessSpelling;
716 }
717 
720  if (auto *BD = C.dyn_cast<BlockDecl *>())
721  dumpDeclRef(BD, "cleanup");
722  else if (auto *CLE = C.dyn_cast<CompoundLiteralExpr *>())
723  AddChild([=] {
724  OS << "cleanup ";
725  {
726  ColorScope Color(OS, ShowColors, StmtColor);
727  OS << CLE->getStmtClassName();
728  }
729  dumpPointer(CLE);
730  });
731  else
732  llvm_unreachable("unexpected cleanup type");
733 }
734 
735 void TextNodeDumper::dumpDeclRef(const Decl *D, StringRef Label) {
736  if (!D)
737  return;
738 
739  AddChild([=] {
740  if (!Label.empty())
741  OS << Label << ' ';
742  dumpBareDeclRef(D);
743  });
744 }
745 
746 const char *TextNodeDumper::getCommandName(unsigned CommandID) {
747  if (Traits)
748  return Traits->getCommandInfo(CommandID)->Name;
749  const comments::CommandInfo *Info =
751  if (Info)
752  return Info->Name;
753  return "<not a builtin command>";
754 }
755 
756 void TextNodeDumper::printFPOptions(FPOptionsOverride FPO) {
757 #define OPTION(NAME, TYPE, WIDTH, PREVIOUS) \
758  if (FPO.has##NAME##Override()) \
759  OS << " " #NAME "=" << FPO.get##NAME##Override();
760 #include "clang/Basic/FPOptions.def"
761 }
762 
764  const comments::FullComment *) {
765  OS << " Text=\"" << C->getText() << "\"";
766 }
767 
770  OS << " Name=\"" << getCommandName(C->getCommandID()) << "\"";
771  switch (C->getRenderKind()) {
773  OS << " RenderNormal";
774  break;
776  OS << " RenderBold";
777  break;
779  OS << " RenderMonospaced";
780  break;
782  OS << " RenderEmphasized";
783  break;
785  OS << " RenderAnchor";
786  break;
787  }
788 
789  for (unsigned i = 0, e = C->getNumArgs(); i != e; ++i)
790  OS << " Arg[" << i << "]=\"" << C->getArgText(i) << "\"";
791 }
792 
795  OS << " Name=\"" << C->getTagName() << "\"";
796  if (C->getNumAttrs() != 0) {
797  OS << " Attrs: ";
798  for (unsigned i = 0, e = C->getNumAttrs(); i != e; ++i) {
799  const comments::HTMLStartTagComment::Attribute &Attr = C->getAttr(i);
800  OS << " \"" << Attr.Name << "=\"" << Attr.Value << "\"";
801  }
802  }
803  if (C->isSelfClosing())
804  OS << " SelfClosing";
805 }
806 
809  OS << " Name=\"" << C->getTagName() << "\"";
810 }
811 
814  OS << " Name=\"" << getCommandName(C->getCommandID()) << "\"";
815  for (unsigned i = 0, e = C->getNumArgs(); i != e; ++i)
816  OS << " Arg[" << i << "]=\"" << C->getArgText(i) << "\"";
817 }
818 
821  OS << " "
823 
824  if (C->isDirectionExplicit())
825  OS << " explicitly";
826  else
827  OS << " implicitly";
828 
829  if (C->hasParamName()) {
830  if (C->isParamIndexValid())
831  OS << " Param=\"" << C->getParamName(FC) << "\"";
832  else
833  OS << " Param=\"" << C->getParamNameAsWritten() << "\"";
834  }
835 
836  if (C->isParamIndexValid() && !C->isVarArgParam())
837  OS << " ParamIndex=" << C->getParamIndex();
838 }
839 
842  if (C->hasParamName()) {
843  if (C->isPositionValid())
844  OS << " Param=\"" << C->getParamName(FC) << "\"";
845  else
846  OS << " Param=\"" << C->getParamNameAsWritten() << "\"";
847  }
848 
849  if (C->isPositionValid()) {
850  OS << " Position=<";
851  for (unsigned i = 0, e = C->getDepth(); i != e; ++i) {
852  OS << C->getIndex(i);
853  if (i != e - 1)
854  OS << ", ";
855  }
856  OS << ">";
857  }
858 }
859 
862  OS << " Name=\"" << getCommandName(C->getCommandID())
863  << "\""
864  " CloseName=\""
865  << C->getCloseName() << "\"";
866 }
867 
870  const comments::FullComment *) {
871  OS << " Text=\"" << C->getText() << "\"";
872 }
873 
876  OS << " Text=\"" << C->getText() << "\"";
877 }
878 
880  OS << " null";
881 }
882 
884  OS << " type";
885  dumpType(TA.getAsType());
886 }
887 
889  const TemplateArgument &TA) {
890  OS << " decl";
891  dumpDeclRef(TA.getAsDecl());
892 }
893 
895  OS << " nullptr";
896 }
897 
899  OS << " integral " << TA.getAsIntegral();
900 }
901 
903  if (TA.getAsTemplate().getKind() == TemplateName::UsingTemplate)
904  OS << " using";
905  OS << " template ";
906  TA.getAsTemplate().dump(OS);
907 }
908 
910  const TemplateArgument &TA) {
911  if (TA.getAsTemplateOrTemplatePattern().getKind() ==
913  OS << " using";
914  OS << " template expansion ";
915  TA.getAsTemplateOrTemplatePattern().dump(OS);
916 }
917 
919  OS << " expr";
920 }
921 
923  OS << " pack";
924 }
925 
926 static void dumpBasePath(raw_ostream &OS, const CastExpr *Node) {
927  if (Node->path_empty())
928  return;
929 
930  OS << " (";
931  bool First = true;
932  for (CastExpr::path_const_iterator I = Node->path_begin(),
933  E = Node->path_end();
934  I != E; ++I) {
935  const CXXBaseSpecifier *Base = *I;
936  if (!First)
937  OS << " -> ";
938 
939  const auto *RD =
940  cast<CXXRecordDecl>(Base->getType()->castAs<RecordType>()->getDecl());
941 
942  if (Base->isVirtual())
943  OS << "virtual ";
944  OS << RD->getName();
945  First = false;
946  }
947 
948  OS << ')';
949 }
950 
952  if (Node->hasInitStorage())
953  OS << " has_init";
954  if (Node->hasVarStorage())
955  OS << " has_var";
956  if (Node->hasElseStorage())
957  OS << " has_else";
958  if (Node->isConstexpr())
959  OS << " constexpr";
960  if (Node->isConsteval()) {
961  OS << " ";
962  if (Node->isNegatedConsteval())
963  OS << "!";
964  OS << "consteval";
965  }
966 }
967 
969  if (Node->hasInitStorage())
970  OS << " has_init";
971  if (Node->hasVarStorage())
972  OS << " has_var";
973 }
974 
976  if (Node->hasVarStorage())
977  OS << " has_var";
978 }
979 
981  OS << " '" << Node->getName() << "'";
982  if (Node->isSideEntry())
983  OS << " side_entry";
984 }
985 
987  OS << " '" << Node->getLabel()->getName() << "'";
988  dumpPointer(Node->getLabel());
989 }
990 
992  if (Node->caseStmtIsGNURange())
993  OS << " gnu_range";
994 }
995 
997  if (Node->hasAPValueResult())
998  AddChild("value",
999  [=] { Visit(Node->getAPValueResult(), Node->getType()); });
1000 }
1001 
1003  if (Node->usesADL())
1004  OS << " adl";
1005  if (Node->hasStoredFPFeatures())
1006  printFPOptions(Node->getFPFeatures());
1007 }
1008 
1010  const char *OperatorSpelling = clang::getOperatorSpelling(Node->getOperator());
1011  if (OperatorSpelling)
1012  OS << " '" << OperatorSpelling << "'";
1013 
1015 }
1016 
1018  OS << " <";
1019  {
1020  ColorScope Color(OS, ShowColors, CastColor);
1021  OS << Node->getCastKindName();
1022  }
1023  dumpBasePath(OS, Node);
1024  OS << ">";
1025  if (Node->hasStoredFPFeatures())
1026  printFPOptions(Node->getFPFeatures());
1027 }
1028 
1031  if (Node->isPartOfExplicitCast())
1032  OS << " part_of_explicit_cast";
1033 }
1034 
1036  OS << " ";
1037  dumpBareDeclRef(Node->getDecl());
1038  if (Node->getDecl() != Node->getFoundDecl()) {
1039  OS << " (";
1040  dumpBareDeclRef(Node->getFoundDecl());
1041  OS << ")";
1042  }
1043  switch (Node->isNonOdrUse()) {
1044  case NOUR_None: break;
1045  case NOUR_Unevaluated: OS << " non_odr_use_unevaluated"; break;
1046  case NOUR_Constant: OS << " non_odr_use_constant"; break;
1047  case NOUR_Discarded: OS << " non_odr_use_discarded"; break;
1048  }
1049 }
1050 
1052  const UnresolvedLookupExpr *Node) {
1053  OS << " (";
1054  if (!Node->requiresADL())
1055  OS << "no ";
1056  OS << "ADL) = '" << Node->getName() << '\'';
1057 
1058  UnresolvedLookupExpr::decls_iterator I = Node->decls_begin(),
1059  E = Node->decls_end();
1060  if (I == E)
1061  OS << " empty";
1062  for (; I != E; ++I)
1063  dumpPointer(*I);
1064 }
1065 
1067  {
1068  ColorScope Color(OS, ShowColors, DeclKindNameColor);
1069  OS << " " << Node->getDecl()->getDeclKindName() << "Decl";
1070  }
1071  OS << "='" << *Node->getDecl() << "'";
1072  dumpPointer(Node->getDecl());
1073  if (Node->isFreeIvar())
1074  OS << " isFreeIvar";
1075 }
1076 
1078  const SYCLUniqueStableNameExpr *Node) {
1079  dumpType(Node->getTypeSourceInfo()->getType());
1080 }
1081 
1083  OS << " " << PredefinedExpr::getIdentKindName(Node->getIdentKind());
1084 }
1085 
1087  ColorScope Color(OS, ShowColors, ValueColor);
1088  OS << " " << Node->getValue();
1089 }
1090 
1092  bool isSigned = Node->getType()->isSignedIntegerType();
1093  ColorScope Color(OS, ShowColors, ValueColor);
1094  OS << " " << toString(Node->getValue(), 10, isSigned);
1095 }
1096 
1098  ColorScope Color(OS, ShowColors, ValueColor);
1099  OS << " " << Node->getValueAsString(/*Radix=*/10);
1100 }
1101 
1103  ColorScope Color(OS, ShowColors, ValueColor);
1104  OS << " " << Node->getValueAsApproximateDouble();
1105 }
1106 
1108  ColorScope Color(OS, ShowColors, ValueColor);
1109  OS << " ";
1110  Str->outputString(OS);
1111 }
1112 
1114  if (auto *Field = ILE->getInitializedFieldInUnion()) {
1115  OS << " field ";
1116  dumpBareDeclRef(Field);
1117  }
1118 }
1119 
1121  if (E->isResultDependent())
1122  OS << " result_dependent";
1123 }
1124 
1126  OS << " " << (Node->isPostfix() ? "postfix" : "prefix") << " '"
1127  << UnaryOperator::getOpcodeStr(Node->getOpcode()) << "'";
1128  if (!Node->canOverflow())
1129  OS << " cannot overflow";
1130  if (Node->hasStoredFPFeatures())
1131  printFPOptions(Node->getStoredFPFeatures());
1132 }
1133 
1135  const UnaryExprOrTypeTraitExpr *Node) {
1136  OS << " " << getTraitSpelling(Node->getKind());
1137 
1138  if (Node->isArgumentType())
1139  dumpType(Node->getArgumentType());
1140 }
1141 
1143  OS << " " << (Node->isArrow() ? "->" : ".") << *Node->getMemberDecl();
1144  dumpPointer(Node->getMemberDecl());
1145  switch (Node->isNonOdrUse()) {
1146  case NOUR_None: break;
1147  case NOUR_Unevaluated: OS << " non_odr_use_unevaluated"; break;
1148  case NOUR_Constant: OS << " non_odr_use_constant"; break;
1149  case NOUR_Discarded: OS << " non_odr_use_discarded"; break;
1150  }
1151 }
1152 
1154  const ExtVectorElementExpr *Node) {
1155  OS << " " << Node->getAccessor().getNameStart();
1156 }
1157 
1159  OS << " '" << BinaryOperator::getOpcodeStr(Node->getOpcode()) << "'";
1160  if (Node->hasStoredFPFeatures())
1161  printFPOptions(Node->getStoredFPFeatures());
1162 }
1163 
1165  const CompoundAssignOperator *Node) {
1166  OS << " '" << BinaryOperator::getOpcodeStr(Node->getOpcode())
1167  << "' ComputeLHSTy=";
1168  dumpBareType(Node->getComputationLHSType());
1169  OS << " ComputeResultTy=";
1170  dumpBareType(Node->getComputationResultType());
1171  if (Node->hasStoredFPFeatures())
1172  printFPOptions(Node->getStoredFPFeatures());
1173 }
1174 
1176  OS << " " << Node->getLabel()->getName();
1177  dumpPointer(Node->getLabel());
1178 }
1179 
1181  OS << " " << Node->getCastName() << "<"
1182  << Node->getTypeAsWritten().getAsString() << ">"
1183  << " <" << Node->getCastKindName();
1184  dumpBasePath(OS, Node);
1185  OS << ">";
1186 }
1187 
1189  OS << " " << (Node->getValue() ? "true" : "false");
1190 }
1191 
1193  if (Node->isImplicit())
1194  OS << " implicit";
1195  OS << " this";
1196 }
1197 
1199  const CXXFunctionalCastExpr *Node) {
1200  OS << " functional cast to " << Node->getTypeAsWritten().getAsString() << " <"
1201  << Node->getCastKindName() << ">";
1202  if (Node->hasStoredFPFeatures())
1203  printFPOptions(Node->getFPFeatures());
1204 }
1205 
1208  if (Node->hasStoredFPFeatures())
1209  printFPOptions(Node->getFPFeatures());
1210 }
1211 
1214  dumpType(Node->getTypeAsWritten());
1215  if (Node->isListInitialization())
1216  OS << " list";
1217 }
1218 
1220  CXXConstructorDecl *Ctor = Node->getConstructor();
1221  dumpType(Ctor->getType());
1222  if (Node->isElidable())
1223  OS << " elidable";
1224  if (Node->isListInitialization())
1225  OS << " list";
1226  if (Node->isStdInitListInitialization())
1227  OS << " std::initializer_list";
1228  if (Node->requiresZeroInitialization())
1229  OS << " zeroing";
1230 }
1231 
1233  const CXXBindTemporaryExpr *Node) {
1234  OS << " (CXXTemporary";
1235  dumpPointer(Node);
1236  OS << ")";
1237 }
1238 
1240  if (Node->isGlobalNew())
1241  OS << " global";
1242  if (Node->isArray())
1243  OS << " array";
1244  if (Node->getOperatorNew()) {
1245  OS << ' ';
1246  dumpBareDeclRef(Node->getOperatorNew());
1247  }
1248  // We could dump the deallocation function used in case of error, but it's
1249  // usually not that interesting.
1250 }
1251 
1253  if (Node->isGlobalDelete())
1254  OS << " global";
1255  if (Node->isArrayForm())
1256  OS << " array";
1257  if (Node->getOperatorDelete()) {
1258  OS << ' ';
1259  dumpBareDeclRef(Node->getOperatorDelete());
1260  }
1261 }
1262 
1264  OS << " " << getTraitSpelling(Node->getTrait());
1265 }
1266 
1268  OS << " " << getTraitSpelling(Node->getTrait());
1269 }
1270 
1272  OS << " " << getTraitSpelling(Node->getTrait());
1273 }
1274 
1276  const MaterializeTemporaryExpr *Node) {
1277  if (const ValueDecl *VD = Node->getExtendingDecl()) {
1278  OS << " extended by ";
1279  dumpBareDeclRef(VD);
1280  }
1281 }
1282 
1284  for (unsigned i = 0, e = Node->getNumObjects(); i != e; ++i)
1285  dumpCleanupObject(Node->getObject(i));
1286 }
1287 
1289  dumpPointer(Node->getPack());
1290  dumpName(Node->getPack());
1291 }
1292 
1295  OS << " " << (Node->isArrow() ? "->" : ".") << Node->getMember();
1296 }
1297 
1299  OS << " selector=";
1300  Node->getSelector().print(OS);
1301  switch (Node->getReceiverKind()) {
1303  break;
1304 
1306  OS << " class=";
1307  dumpBareType(Node->getClassReceiver());
1308  break;
1309 
1311  OS << " super (instance)";
1312  break;
1313 
1315  OS << " super (class)";
1316  break;
1317  }
1318 }
1319 
1321  if (auto *BoxingMethod = Node->getBoxingMethod()) {
1322  OS << " selector=";
1323  BoxingMethod->getSelector().print(OS);
1324  }
1325 }
1326 
1328  if (!Node->getCatchParamDecl())
1329  OS << " catch all";
1330 }
1331 
1333  dumpType(Node->getEncodedType());
1334 }
1335 
1337  OS << " ";
1338  Node->getSelector().print(OS);
1339 }
1340 
1342  OS << ' ' << *Node->getProtocol();
1343 }
1344 
1346  if (Node->isImplicitProperty()) {
1347  OS << " Kind=MethodRef Getter=\"";
1348  if (Node->getImplicitPropertyGetter())
1349  Node->getImplicitPropertyGetter()->getSelector().print(OS);
1350  else
1351  OS << "(null)";
1352 
1353  OS << "\" Setter=\"";
1354  if (ObjCMethodDecl *Setter = Node->getImplicitPropertySetter())
1355  Setter->getSelector().print(OS);
1356  else
1357  OS << "(null)";
1358  OS << "\"";
1359  } else {
1360  OS << " Kind=PropertyRef Property=\"" << *Node->getExplicitProperty()
1361  << '"';
1362  }
1363 
1364  if (Node->isSuperReceiver())
1365  OS << " super";
1366 
1367  OS << " Messaging=";
1368  if (Node->isMessagingGetter() && Node->isMessagingSetter())
1369  OS << "Getter&Setter";
1370  else if (Node->isMessagingGetter())
1371  OS << "Getter";
1372  else if (Node->isMessagingSetter())
1373  OS << "Setter";
1374 }
1375 
1377  const ObjCSubscriptRefExpr *Node) {
1378  if (Node->isArraySubscriptRefExpr())
1379  OS << " Kind=ArraySubscript GetterForArray=\"";
1380  else
1381  OS << " Kind=DictionarySubscript GetterForDictionary=\"";
1382  if (Node->getAtIndexMethodDecl())
1383  Node->getAtIndexMethodDecl()->getSelector().print(OS);
1384  else
1385  OS << "(null)";
1386 
1387  if (Node->isArraySubscriptRefExpr())
1388  OS << "\" SetterForArray=\"";
1389  else
1390  OS << "\" SetterForDictionary=\"";
1391  if (Node->setAtIndexMethodDecl())
1392  Node->setAtIndexMethodDecl()->getSelector().print(OS);
1393  else
1394  OS << "(null)";
1395 }
1396 
1398  OS << " " << (Node->getValue() ? "__objc_yes" : "__objc_no");
1399 }
1400 
1402  OS << " ";
1403  for (unsigned I = 0, E = Node->numOfIterators(); I < E; ++I) {
1404  Visit(Node->getIteratorDecl(I));
1405  OS << " = ";
1406  const OMPIteratorExpr::IteratorRange Range = Node->getIteratorRange(I);
1407  OS << " begin ";
1408  Visit(Range.Begin);
1409  OS << " end ";
1410  Visit(Range.End);
1411  if (Range.Step) {
1412  OS << " step ";
1413  Visit(Range.Step);
1414  }
1415  }
1416 }
1417 
1420  OS << " ";
1421  dumpBareDeclRef(Node->getFoundDecl());
1422 }
1423 
1425  const RequiresExpr *Node) {
1426  if (!Node->isValueDependent())
1427  OS << (Node->isSatisfied() ? " satisfied" : " unsatisfied");
1428 }
1429 
1431  if (T->isSpelledAsLValue())
1432  OS << " written as lvalue reference";
1433 }
1434 
1436  switch (T->getSizeModifier()) {
1437  case ArrayType::Normal:
1438  break;
1439  case ArrayType::Static:
1440  OS << " static";
1441  break;
1442  case ArrayType::Star:
1443  OS << " *";
1444  break;
1445  }
1446  OS << " " << T->getIndexTypeQualifiers().getAsString();
1447 }
1448 
1450  OS << " " << T->getSize();
1451  VisitArrayType(T);
1452 }
1453 
1455  OS << " ";
1457  VisitArrayType(T);
1458 }
1459 
1461  const DependentSizedArrayType *T) {
1462  VisitArrayType(T);
1463  OS << " ";
1465 }
1466 
1468  const DependentSizedExtVectorType *T) {
1469  OS << " ";
1471 }
1472 
1474  switch (T->getVectorKind()) {
1476  break;
1478  OS << " altivec";
1479  break;
1481  OS << " altivec pixel";
1482  break;
1484  OS << " altivec bool";
1485  break;
1487  OS << " neon";
1488  break;
1490  OS << " neon poly";
1491  break;
1493  OS << " fixed-length sve data vector";
1494  break;
1496  OS << " fixed-length sve predicate vector";
1497  break;
1498  }
1499  OS << " " << T->getNumElements();
1500 }
1501 
1503  auto EI = T->getExtInfo();
1504  if (EI.getNoReturn())
1505  OS << " noreturn";
1506  if (EI.getProducesResult())
1507  OS << " produces_result";
1508  if (EI.getHasRegParm())
1509  OS << " regparm " << EI.getRegParm();
1510  OS << " " << FunctionType::getNameForCallConv(EI.getCC());
1511 }
1512 
1514  auto EPI = T->getExtProtoInfo();
1515  if (EPI.HasTrailingReturn)
1516  OS << " trailing_return";
1517  if (T->isConst())
1518  OS << " const";
1519  if (T->isVolatile())
1520  OS << " volatile";
1521  if (T->isRestrict())
1522  OS << " restrict";
1523  if (T->getExtProtoInfo().Variadic)
1524  OS << " variadic";
1525  switch (EPI.RefQualifier) {
1526  case RQ_None:
1527  break;
1528  case RQ_LValue:
1529  OS << " &";
1530  break;
1531  case RQ_RValue:
1532  OS << " &&";
1533  break;
1534  }
1535  // FIXME: Exception specification.
1536  // FIXME: Consumed parameters.
1537  VisitFunctionType(T);
1538 }
1539 
1541  dumpDeclRef(T->getDecl());
1542 }
1543 
1545  dumpDeclRef(T->getFoundDecl());
1546  if (!T->typeMatchesDecl())
1547  OS << " divergent";
1548 }
1549 
1551  dumpDeclRef(T->getDecl());
1552  if (!T->typeMatchesDecl())
1553  OS << " divergent";
1554 }
1555 
1557  switch (T->getUTTKind()) {
1558 #define TRANSFORM_TYPE_TRAIT_DEF(Enum, Trait) \
1559  case UnaryTransformType::Enum: \
1560  OS << " " #Trait; \
1561  break;
1562 #include "clang/Basic/TransformTypeTraits.def"
1563  }
1564 }
1565 
1567  dumpDeclRef(T->getDecl());
1568 }
1569 
1571  OS << " depth " << T->getDepth() << " index " << T->getIndex();
1572  if (T->isParameterPack())
1573  OS << " pack";
1574  dumpDeclRef(T->getDecl());
1575 }
1576 
1578  const SubstTemplateTypeParmType *T) {
1581  if (auto PackIndex = T->getPackIndex())
1582  OS << " pack_index " << *PackIndex;
1583 }
1584 
1586  const SubstTemplateTypeParmPackType *T) {
1589 }
1590 
1592  if (T->isDecltypeAuto())
1593  OS << " decltype(auto)";
1594  if (!T->isDeduced())
1595  OS << " undeduced";
1596  if (T->isConstrained()) {
1598  for (const auto &Arg : T->getTypeConstraintArguments())
1599  VisitTemplateArgument(Arg);
1600  }
1601 }
1602 
1606  OS << " using";
1607 }
1608 
1610  const TemplateSpecializationType *T) {
1611  if (T->isTypeAlias())
1612  OS << " alias";
1614  OS << " using";
1615  OS << " ";
1616  T->getTemplateName().dump(OS);
1617 }
1618 
1620  const InjectedClassNameType *T) {
1621  dumpDeclRef(T->getDecl());
1622 }
1623 
1625  dumpDeclRef(T->getDecl());
1626 }
1627 
1629  if (auto N = T->getNumExpansions())
1630  OS << " expansions " << *N;
1631 }
1632 
1634 
1636  dumpName(D);
1638  if (D->isModulePrivate())
1639  OS << " __module_private__";
1640 }
1641 
1643  if (D->isScoped()) {
1644  if (D->isScopedUsingClassTag())
1645  OS << " class";
1646  else
1647  OS << " struct";
1648  }
1649  dumpName(D);
1650  if (D->isModulePrivate())
1651  OS << " __module_private__";
1652  if (D->isFixed())
1653  dumpType(D->getIntegerType());
1654 }
1655 
1657  OS << ' ' << D->getKindName();
1658  dumpName(D);
1659  if (D->isModulePrivate())
1660  OS << " __module_private__";
1661  if (D->isCompleteDefinition())
1662  OS << " definition";
1663 }
1664 
1666  dumpName(D);
1667  dumpType(D->getType());
1668 }
1669 
1671  dumpName(D);
1672  dumpType(D->getType());
1673 
1674  for (const auto *Child : D->chain())
1675  dumpDeclRef(Child);
1676 }
1677 
1679  dumpName(D);
1680  dumpType(D->getType());
1681 
1682  StorageClass SC = D->getStorageClass();
1683  if (SC != SC_None)
1684  OS << ' ' << VarDecl::getStorageClassSpecifierString(SC);
1685  if (D->isInlineSpecified())
1686  OS << " inline";
1687  if (D->isVirtualAsWritten())
1688  OS << " virtual";
1689  if (D->isModulePrivate())
1690  OS << " __module_private__";
1691 
1692  if (D->isPure())
1693  OS << " pure";
1694  if (D->isDefaulted()) {
1695  OS << " default";
1696  if (D->isDeleted())
1697  OS << "_delete";
1698  }
1699  if (D->isDeletedAsWritten())
1700  OS << " delete";
1701  if (D->isTrivial())
1702  OS << " trivial";
1703 
1704  if (D->isIneligibleOrNotSelected())
1705  OS << (isa<CXXDestructorDecl>(D) ? " not_selected" : " ineligible");
1706 
1707  if (const auto *FPT = D->getType()->getAs<FunctionProtoType>()) {
1708  FunctionProtoType::ExtProtoInfo EPI = FPT->getExtProtoInfo();
1709  switch (EPI.ExceptionSpec.Type) {
1710  default:
1711  break;
1712  case EST_Unevaluated:
1713  OS << " noexcept-unevaluated " << EPI.ExceptionSpec.SourceDecl;
1714  break;
1715  case EST_Uninstantiated:
1716  OS << " noexcept-uninstantiated " << EPI.ExceptionSpec.SourceTemplate;
1717  break;
1718  }
1719  }
1720 
1721  if (const auto *MD = dyn_cast<CXXMethodDecl>(D)) {
1722  if (MD->size_overridden_methods() != 0) {
1723  auto dumpOverride = [=](const CXXMethodDecl *D) {
1724  SplitQualType T_split = D->getType().split();
1725  OS << D << " " << D->getParent()->getName() << "::" << D->getDeclName()
1726  << " '" << QualType::getAsString(T_split, PrintPolicy) << "'";
1727  };
1728 
1729  AddChild([=] {
1730  auto Overrides = MD->overridden_methods();
1731  OS << "Overrides: [ ";
1732  dumpOverride(*Overrides.begin());
1733  for (const auto *Override :
1734  llvm::make_range(Overrides.begin() + 1, Overrides.end())) {
1735  OS << ", ";
1736  dumpOverride(Override);
1737  }
1738  OS << " ]";
1739  });
1740  }
1741  }
1742 
1743  if (!D->isInlineSpecified() && D->isInlined()) {
1744  OS << " implicit-inline";
1745  }
1746  // Since NumParams comes from the FunctionProtoType of the FunctionDecl and
1747  // the Params are set later, it is possible for a dump during debugging to
1748  // encounter a FunctionDecl that has been created but hasn't been assigned
1749  // ParmVarDecls yet.
1750  if (!D->param_empty() && !D->param_begin())
1751  OS << " <<<NULL params x " << D->getNumParams() << ">>>";
1752 }
1753 
1755  const LifetimeExtendedTemporaryDecl *D) {
1756  OS << " extended by ";
1758  OS << " mangling ";
1759  {
1760  ColorScope Color(OS, ShowColors, ValueColor);
1761  OS << D->getManglingNumber();
1762  }
1763 }
1764 
1766  dumpName(D);
1767  dumpType(D->getType());
1768  if (D->isMutable())
1769  OS << " mutable";
1770  if (D->isModulePrivate())
1771  OS << " __module_private__";
1772 }
1773 
1775  dumpName(D);
1776  dumpType(D->getType());
1777  StorageClass SC = D->getStorageClass();
1778  if (SC != SC_None)
1779  OS << ' ' << VarDecl::getStorageClassSpecifierString(SC);
1780  switch (D->getTLSKind()) {
1781  case VarDecl::TLS_None:
1782  break;
1783  case VarDecl::TLS_Static:
1784  OS << " tls";
1785  break;
1786  case VarDecl::TLS_Dynamic:
1787  OS << " tls_dynamic";
1788  break;
1789  }
1790  if (D->isModulePrivate())
1791  OS << " __module_private__";
1792  if (D->isNRVOVariable())
1793  OS << " nrvo";
1794  if (D->isInline())
1795  OS << " inline";
1796  if (D->isConstexpr())
1797  OS << " constexpr";
1798  if (D->hasInit()) {
1799  switch (D->getInitStyle()) {
1800  case VarDecl::CInit:
1801  OS << " cinit";
1802  break;
1803  case VarDecl::CallInit:
1804  OS << " callinit";
1805  break;
1806  case VarDecl::ListInit:
1807  OS << " listinit";
1808  break;
1809  }
1810  }
1811  if (D->needsDestruction(D->getASTContext()))
1812  OS << " destroyed";
1813  if (D->isParameterPack())
1814  OS << " pack";
1815 
1816  if (D->hasInit()) {
1817  const Expr *E = D->getInit();
1818  // Only dump the value of constexpr VarDecls for now.
1819  if (E && !E->isValueDependent() && D->isConstexpr()) {
1820  const APValue *Value = D->evaluateValue();
1821  if (Value)
1822  AddChild("value", [=] { Visit(*Value, E->getType()); });
1823  }
1824  }
1825 }
1826 
1828  dumpName(D);
1829  dumpType(D->getType());
1830 }
1831 
1833  if (D->isNothrow())
1834  OS << " nothrow";
1835 }
1836 
1838  OS << ' ' << D->getImportedModule()->getFullModuleName();
1839 
1840  for (Decl *InitD :
1842  dumpDeclRef(InitD, "initializer");
1843 }
1844 
1846  OS << ' ';
1847  switch (D->getCommentKind()) {
1848  case PCK_Unknown:
1849  llvm_unreachable("unexpected pragma comment kind");
1850  case PCK_Compiler:
1851  OS << "compiler";
1852  break;
1853  case PCK_ExeStr:
1854  OS << "exestr";
1855  break;
1856  case PCK_Lib:
1857  OS << "lib";
1858  break;
1859  case PCK_Linker:
1860  OS << "linker";
1861  break;
1862  case PCK_User:
1863  OS << "user";
1864  break;
1865  }
1866  StringRef Arg = D->getArg();
1867  if (!Arg.empty())
1868  OS << " \"" << Arg << "\"";
1869 }
1870 
1872  const PragmaDetectMismatchDecl *D) {
1873  OS << " \"" << D->getName() << "\" \"" << D->getValue() << "\"";
1874 }
1875 
1877  const OMPExecutableDirective *D) {
1878  if (D->isStandaloneDirective())
1879  OS << " openmp_standalone_directive";
1880 }
1881 
1883  const OMPDeclareReductionDecl *D) {
1884  dumpName(D);
1885  dumpType(D->getType());
1886  OS << " combiner";
1887  dumpPointer(D->getCombiner());
1888  if (const auto *Initializer = D->getInitializer()) {
1889  OS << " initializer";
1891  switch (D->getInitializerKind()) {
1893  OS << " omp_priv = ";
1894  break;
1896  OS << " omp_priv ()";
1897  break;
1899  break;
1900  }
1901  }
1902 }
1903 
1905  for (const auto *C : D->clauselists()) {
1906  AddChild([=] {
1907  if (!C) {
1908  ColorScope Color(OS, ShowColors, NullColor);
1909  OS << "<<<NULL>>> OMPClause";
1910  return;
1911  }
1912  {
1913  ColorScope Color(OS, ShowColors, AttrColor);
1914  StringRef ClauseName(
1915  llvm::omp::getOpenMPClauseName(C->getClauseKind()));
1916  OS << "OMP" << ClauseName.substr(/*Start=*/0, /*N=*/1).upper()
1917  << ClauseName.drop_front() << "Clause";
1918  }
1919  dumpPointer(C);
1920  dumpSourceRange(SourceRange(C->getBeginLoc(), C->getEndLoc()));
1921  });
1922  }
1923 }
1924 
1926  dumpName(D);
1927  dumpType(D->getType());
1928 }
1929 
1931  dumpName(D);
1932  if (D->isInline())
1933  OS << " inline";
1934  if (D->isNested())
1935  OS << " nested";
1936  if (!D->isOriginalNamespace())
1937  dumpDeclRef(D->getOriginalNamespace(), "original");
1938 }
1939 
1941  OS << ' ';
1943 }
1944 
1946  dumpName(D);
1948 }
1949 
1951  dumpName(D);
1953 }
1954 
1956  const TypeAliasTemplateDecl *D) {
1957  dumpName(D);
1958 }
1959 
1961  VisitRecordDecl(D);
1962  if (!D->isCompleteDefinition())
1963  return;
1964 
1965  AddChild([=] {
1966  {
1967  ColorScope Color(OS, ShowColors, DeclKindNameColor);
1968  OS << "DefinitionData";
1969  }
1970 #define FLAG(fn, name) \
1971  if (D->fn()) \
1972  OS << " " #name;
1973  FLAG(isParsingBaseSpecifiers, parsing_base_specifiers);
1974 
1975  FLAG(isGenericLambda, generic);
1976  FLAG(isLambda, lambda);
1977 
1978  FLAG(isAnonymousStructOrUnion, is_anonymous);
1979  FLAG(canPassInRegisters, pass_in_registers);
1980  FLAG(isEmpty, empty);
1981  FLAG(isAggregate, aggregate);
1982  FLAG(isStandardLayout, standard_layout);
1983  FLAG(isTriviallyCopyable, trivially_copyable);
1984  FLAG(isPOD, pod);
1985  FLAG(isTrivial, trivial);
1986  FLAG(isPolymorphic, polymorphic);
1987  FLAG(isAbstract, abstract);
1988  FLAG(isLiteral, literal);
1989 
1990  FLAG(hasUserDeclaredConstructor, has_user_declared_ctor);
1991  FLAG(hasConstexprNonCopyMoveConstructor, has_constexpr_non_copy_move_ctor);
1992  FLAG(hasMutableFields, has_mutable_fields);
1993  FLAG(hasVariantMembers, has_variant_members);
1994  FLAG(allowConstDefaultInit, can_const_default_init);
1995 
1996  AddChild([=] {
1997  {
1998  ColorScope Color(OS, ShowColors, DeclKindNameColor);
1999  OS << "DefaultConstructor";
2000  }
2001  FLAG(hasDefaultConstructor, exists);
2002  FLAG(hasTrivialDefaultConstructor, trivial);
2003  FLAG(hasNonTrivialDefaultConstructor, non_trivial);
2004  FLAG(hasUserProvidedDefaultConstructor, user_provided);
2005  FLAG(hasConstexprDefaultConstructor, constexpr);
2006  FLAG(needsImplicitDefaultConstructor, needs_implicit);
2007  FLAG(defaultedDefaultConstructorIsConstexpr, defaulted_is_constexpr);
2008  });
2009 
2010  AddChild([=] {
2011  {
2012  ColorScope Color(OS, ShowColors, DeclKindNameColor);
2013  OS << "CopyConstructor";
2014  }
2015  FLAG(hasSimpleCopyConstructor, simple);
2016  FLAG(hasTrivialCopyConstructor, trivial);
2017  FLAG(hasNonTrivialCopyConstructor, non_trivial);
2018  FLAG(hasUserDeclaredCopyConstructor, user_declared);
2019  FLAG(hasCopyConstructorWithConstParam, has_const_param);
2020  FLAG(needsImplicitCopyConstructor, needs_implicit);
2021  FLAG(needsOverloadResolutionForCopyConstructor,
2022  needs_overload_resolution);
2024  FLAG(defaultedCopyConstructorIsDeleted, defaulted_is_deleted);
2025  FLAG(implicitCopyConstructorHasConstParam, implicit_has_const_param);
2026  });
2027 
2028  AddChild([=] {
2029  {
2030  ColorScope Color(OS, ShowColors, DeclKindNameColor);
2031  OS << "MoveConstructor";
2032  }
2033  FLAG(hasMoveConstructor, exists);
2034  FLAG(hasSimpleMoveConstructor, simple);
2035  FLAG(hasTrivialMoveConstructor, trivial);
2036  FLAG(hasNonTrivialMoveConstructor, non_trivial);
2037  FLAG(hasUserDeclaredMoveConstructor, user_declared);
2038  FLAG(needsImplicitMoveConstructor, needs_implicit);
2039  FLAG(needsOverloadResolutionForMoveConstructor,
2040  needs_overload_resolution);
2042  FLAG(defaultedMoveConstructorIsDeleted, defaulted_is_deleted);
2043  });
2044 
2045  AddChild([=] {
2046  {
2047  ColorScope Color(OS, ShowColors, DeclKindNameColor);
2048  OS << "CopyAssignment";
2049  }
2050  FLAG(hasSimpleCopyAssignment, simple);
2051  FLAG(hasTrivialCopyAssignment, trivial);
2052  FLAG(hasNonTrivialCopyAssignment, non_trivial);
2053  FLAG(hasCopyAssignmentWithConstParam, has_const_param);
2054  FLAG(hasUserDeclaredCopyAssignment, user_declared);
2055  FLAG(needsImplicitCopyAssignment, needs_implicit);
2056  FLAG(needsOverloadResolutionForCopyAssignment, needs_overload_resolution);
2057  FLAG(implicitCopyAssignmentHasConstParam, implicit_has_const_param);
2058  });
2059 
2060  AddChild([=] {
2061  {
2062  ColorScope Color(OS, ShowColors, DeclKindNameColor);
2063  OS << "MoveAssignment";
2064  }
2065  FLAG(hasMoveAssignment, exists);
2066  FLAG(hasSimpleMoveAssignment, simple);
2067  FLAG(hasTrivialMoveAssignment, trivial);
2068  FLAG(hasNonTrivialMoveAssignment, non_trivial);
2069  FLAG(hasUserDeclaredMoveAssignment, user_declared);
2070  FLAG(needsImplicitMoveAssignment, needs_implicit);
2071  FLAG(needsOverloadResolutionForMoveAssignment, needs_overload_resolution);
2072  });
2073 
2074  AddChild([=] {
2075  {
2076  ColorScope Color(OS, ShowColors, DeclKindNameColor);
2077  OS << "Destructor";
2078  }
2079  FLAG(hasSimpleDestructor, simple);
2080  FLAG(hasIrrelevantDestructor, irrelevant);
2081  FLAG(hasTrivialDestructor, trivial);
2082  FLAG(hasNonTrivialDestructor, non_trivial);
2083  FLAG(hasUserDeclaredDestructor, user_declared);
2084  FLAG(hasConstexprDestructor, constexpr);
2085  FLAG(needsImplicitDestructor, needs_implicit);
2086  FLAG(needsOverloadResolutionForDestructor, needs_overload_resolution);
2088  FLAG(defaultedDestructorIsDeleted, defaulted_is_deleted);
2089  });
2090  });
2091 
2092  for (const auto &I : D->bases()) {
2093  AddChild([=] {
2094  if (I.isVirtual())
2095  OS << "virtual ";
2096  dumpAccessSpecifier(I.getAccessSpecifier());
2097  dumpType(I.getType());
2098  if (I.isPackExpansion())
2099  OS << "...";
2100  });
2101  }
2102 }
2103 
2105  dumpName(D);
2106 }
2107 
2109  dumpName(D);
2110 }
2111 
2113  dumpName(D);
2114 }
2115 
2117  dumpName(D);
2118 }
2119 
2121  if (const auto *TC = D->getTypeConstraint()) {
2122  OS << " ";
2123  dumpBareDeclRef(TC->getNamedConcept());
2124  if (TC->getNamedConcept() != TC->getFoundDecl()) {
2125  OS << " (";
2126  dumpBareDeclRef(TC->getFoundDecl());
2127  OS << ")";
2128  }
2129  } else if (D->wasDeclaredWithTypename())
2130  OS << " typename";
2131  else
2132  OS << " class";
2133  OS << " depth " << D->getDepth() << " index " << D->getIndex();
2134  if (D->isParameterPack())
2135  OS << " ...";
2136  dumpName(D);
2137 }
2138 
2140  const NonTypeTemplateParmDecl *D) {
2141  dumpType(D->getType());
2142  OS << " depth " << D->getDepth() << " index " << D->getIndex();
2143  if (D->isParameterPack())
2144  OS << " ...";
2145  dumpName(D);
2146 }
2147 
2149  const TemplateTemplateParmDecl *D) {
2150  OS << " depth " << D->getDepth() << " index " << D->getIndex();
2151  if (D->isParameterPack())
2152  OS << " ...";
2153  dumpName(D);
2154 }
2155 
2157  OS << ' ';
2158  if (D->getQualifier())
2160  OS << D->getDeclName();
2161 }
2162 
2164  OS << ' ';
2166 }
2167 
2169  const UnresolvedUsingTypenameDecl *D) {
2170  OS << ' ';
2171  if (D->getQualifier())
2173  OS << D->getDeclName();
2174 }
2175 
2177  const UnresolvedUsingValueDecl *D) {
2178  OS << ' ';
2179  if (D->getQualifier())
2181  OS << D->getDeclName();
2182  dumpType(D->getType());
2183 }
2184 
2186  OS << ' ';
2188 }
2189 
2191  const ConstructorUsingShadowDecl *D) {
2192  if (D->constructsVirtualBase())
2193  OS << " virtual";
2194 
2195  AddChild([=] {
2196  OS << "target ";
2198  });
2199 
2200  AddChild([=] {
2201  OS << "nominated ";
2203  OS << ' ';
2205  });
2206 
2207  AddChild([=] {
2208  OS << "constructed ";
2210  OS << ' ';
2212  });
2213 }
2214 
2216  switch (D->getLanguage()) {
2218  OS << " C";
2219  break;
2221  OS << " C++";
2222  break;
2223  }
2224 }
2225 
2227  OS << ' ';
2229 }
2230 
2232  if (TypeSourceInfo *T = D->getFriendType())
2233  dumpType(T->getType());
2234 }
2235 
2237  dumpName(D);
2238  dumpType(D->getType());
2239  if (D->getSynthesize())
2240  OS << " synthesize";
2241 
2242  switch (D->getAccessControl()) {
2243  case ObjCIvarDecl::None:
2244  OS << " none";
2245  break;
2246  case ObjCIvarDecl::Private:
2247  OS << " private";
2248  break;
2250  OS << " protected";
2251  break;
2252  case ObjCIvarDecl::Public:
2253  OS << " public";
2254  break;
2255  case ObjCIvarDecl::Package:
2256  OS << " package";
2257  break;
2258  }
2259 }
2260 
2262  if (D->isInstanceMethod())
2263  OS << " -";
2264  else
2265  OS << " +";
2266  dumpName(D);
2267  dumpType(D->getReturnType());
2268 
2269  if (D->isVariadic())
2270  OS << " variadic";
2271 }
2272 
2274  dumpName(D);
2275  switch (D->getVariance()) {
2277  break;
2278 
2280  OS << " covariant";
2281  break;
2282 
2284  OS << " contravariant";
2285  break;
2286  }
2287 
2288  if (D->hasExplicitBound())
2289  OS << " bounded";
2291 }
2292 
2294  dumpName(D);
2297  for (const auto *P : D->protocols())
2298  dumpDeclRef(P);
2299 }
2300 
2302  dumpName(D);
2305 }
2306 
2308  dumpName(D);
2309 
2310  for (const auto *Child : D->protocols())
2311  dumpDeclRef(Child);
2312 }
2313 
2315  dumpName(D);
2316  dumpDeclRef(D->getSuperClass(), "super");
2317 
2319  for (const auto *Child : D->protocols())
2320  dumpDeclRef(Child);
2321 }
2322 
2324  const ObjCImplementationDecl *D) {
2325  dumpName(D);
2326  dumpDeclRef(D->getSuperClass(), "super");
2328 }
2329 
2331  const ObjCCompatibleAliasDecl *D) {
2332  dumpName(D);
2334 }
2335 
2337  dumpName(D);
2338  dumpType(D->getType());
2339 
2341  OS << " required";
2343  OS << " optional";
2344 
2346  if (Attrs != ObjCPropertyAttribute::kind_noattr) {
2348  OS << " readonly";
2350  OS << " assign";
2352  OS << " readwrite";
2354  OS << " retain";
2356  OS << " copy";
2358  OS << " nonatomic";
2360  OS << " atomic";
2362  OS << " weak";
2364  OS << " strong";
2366  OS << " unsafe_unretained";
2368  OS << " class";
2370  OS << " direct";
2372  dumpDeclRef(D->getGetterMethodDecl(), "getter");
2374  dumpDeclRef(D->getSetterMethodDecl(), "setter");
2375  }
2376 }
2377 
2379  dumpName(D->getPropertyDecl());
2381  OS << " synthesize";
2382  else
2383  OS << " dynamic";
2386 }
2387 
2389  if (D->isVariadic())
2390  OS << " variadic";
2391 
2392  if (D->capturesCXXThis())
2393  OS << " captures_this";
2394 }
2395 
2397  dumpName(D);
2398 }
2399 
2401  VisitStmt(S);
2402  if (S->hasStoredFPFeatures())
2403  printFPOptions(S->getStoredFPFeatures());
2404 }
2405 
2407  if (D->isCBuffer())
2408  OS << " cbuffer";
2409  else
2410  OS << " tbuffer";
2411  dumpName(D);
2412 }
clang::TextNodeDumper::VisitSubstTemplateTypeParmPackType
void VisitSubstTemplateTypeParmPackType(const SubstTemplateTypeParmPackType *T)
Definition: TextNodeDumper.cpp:1585
clang::TextNodeDumper::VisitConceptDecl
void VisitConceptDecl(const ConceptDecl *D)
Definition: TextNodeDumper.cpp:2396
clang::comments::ParamCommandComment::getDirectionAsString
static const char * getDirectionAsString(PassDirection D)
Definition: Comment.cpp:187
clang::LabelStmt
LabelStmt - Represents a label, which has a substatement.
Definition: Stmt.h:1835
clang::ExpressionTraitExpr
An expression trait intrinsic.
Definition: ExprCXX.h:2847
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:3616
clang::ObjCInterfaceDecl
Represents an ObjC class declaration.
Definition: DeclObjC.h:1149
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:2844
clang::CaseStmt
CaseStmt - Represent a case statement.
Definition: Stmt.h:1603
clang::FunctionDecl::param_empty
bool param_empty() const
Definition: Decl.h:2582
clang::ObjCCompatibleAliasDecl
ObjCCompatibleAliasDecl - Represents alias of a class.
Definition: DeclObjC.h:2741
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:428
clang::AccessSpecDecl
Represents an access specifier followed by colon ':'.
Definition: DeclCXX.h:86
clang::TextNodeDumper::VisitClassTemplateDecl
void VisitClassTemplateDecl(const ClassTemplateDecl *D)
Definition: TextNodeDumper.cpp:2108
clang::comments::VerbatimLineComment
A verbatim line command.
Definition: Comment.h:926
clang::FunctionDecl::isDefaulted
bool isDefaulted() const
Whether this function is defaulted.
Definition: Decl.h:2269
clang::DeducedTemplateSpecializationType
Represents a C++17 deduced template specialization type.
Definition: Type.h:5293
clang::TextNodeDumper::VisitObjCMessageExpr
void VisitObjCMessageExpr(const ObjCMessageExpr *Node)
Definition: TextNodeDumper.cpp:1298
clang::TextNodeDumper::VisitObjCCompatibleAliasDecl
void VisitObjCCompatibleAliasDecl(const ObjCCompatibleAliasDecl *D)
Definition: TextNodeDumper.cpp:2330
clang::CXXConstructorDecl
Represents a C++ constructor within a class.
Definition: DeclCXX.h:2436
clang::ArrayTypeTraitExpr
An Embarcadero array type trait, as used in the implementation of __array_rank and __array_extent.
Definition: ExprCXX.h:2777
clang::TextNodeDumper::VisitTypeTemplateArgument
void VisitTypeTemplateArgument(const TemplateArgument &TA)
Definition: TextNodeDumper.cpp:883
clang::ObjCBoxedExpr
ObjCBoxedExpr - used for generalized expression boxing.
Definition: ExprObjC.h:128
clang::TextNodeDumper::VisitCXXBindTemporaryExpr
void VisitCXXBindTemporaryExpr(const CXXBindTemporaryExpr *Node)
Definition: TextNodeDumper.cpp:1232
clang::TextNodeDumper::VisitRecordDecl
void VisitRecordDecl(const RecordDecl *D)
Definition: TextNodeDumper.cpp:1656
clang::BlockDecl::isVariadic
bool isVariadic() const
Definition: Decl.h:4358
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:2126
clang::FunctionDecl::getNumParams
unsigned getNumParams() const
Return the number of parameters this function must have based on its FunctionType.
Definition: Decl.cpp:3466
clang::NullColor
static const TerminalColor NullColor
Definition: ASTDumperUtils.h:69
Specifiers.h
clang::VarDecl::getTLSKind
TLSKind getTLSKind() const
Definition: Decl.cpp:2093
clang::TextNodeDumper::VisitLinkageSpecDecl
void VisitLinkageSpecDecl(const LinkageSpecDecl *D)
Definition: TextNodeDumper.cpp:2215
clang::OK_Ordinary
@ OK_Ordinary
An ordinary object is located at an address in memory.
Definition: Specifiers.h:139
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:93
clang::comments::InlineCommandComment::RenderEmphasized
@ RenderEmphasized
Definition: Comment.h:310
clang::UsingType::getFoundDecl
UsingShadowDecl * getFoundDecl() const
Definition: Type.h:4512
clang::TypeSourceInfo::getType
QualType getType() const
Return the type wrapped by this type source info.
Definition: Type.h:6604
clang::ObjCIvarDecl::None
@ None
Definition: DeclObjC.h:1926
clang::TemplateTypeParmDecl::getIndex
unsigned getIndex() const
Retrieve the index of the template parameter.
Definition: DeclTemplate.cpp:695
clang::TextNodeDumper::VisitMaterializeTemporaryExpr
void VisitMaterializeTemporaryExpr(const MaterializeTemporaryExpr *Node)
Definition: TextNodeDumper.cpp:1275
clang::TemplateTypeParmType::getDecl
TemplateTypeParmDecl * getDecl() const
Definition: Type.h:5047
clang::VectorType::SveFixedLengthPredicateVector
@ SveFixedLengthPredicateVector
is AArch64 SVE fixed-length predicate vector
Definition: Type.h:3383
clang::Type::getTypeClassName
const char * getTypeClassName() const
Definition: Type.cpp:2937
clang::SwitchStmt
SwitchStmt - This represents a 'switch' stmt.
Definition: Stmt.h:2186
clang::OMPDeclareReductionDecl::CallInit
@ CallInit
Definition: DeclOpenMP.h:176
clang::GenericSelectionExpr::ConstAssociation
AssociationTy< true > ConstAssociation
Definition: Expr.h:5791
clang::FunctionType::isVolatile
bool isVolatile() const
Definition: Type.h:3959
clang::APValue::getStructNumFields
unsigned getStructNumFields() const
Definition: APValue.h:534
clang::AutoType::isConstrained
bool isConstrained() const
Definition: Type.h:5265
clang::LinkageSpecDecl
Represents a linkage specification.
Definition: DeclCXX.h:2832
clang::SourceRange
A trivial tuple used to represent a source range.
Definition: SourceLocation.h:210
clang::WhileStmt
WhileStmt - This represents a 'while' stmt.
Definition: Stmt.h:2377
clang::PresumedLoc::getLine
unsigned getLine() const
Return the presumed line number of this location.
Definition: SourceLocation.h:337
clang::AutoType::getTypeConstraintConcept
ConceptDecl * getTypeConstraintConcept() const
Definition: Type.h:5261
clang::TextNodeDumper::VisitTemplateExpansionTemplateArgument
void VisitTemplateExpansionTemplateArgument(const TemplateArgument &TA)
Definition: TextNodeDumper.cpp:909
clang::Redeclarable
Provides common interface for the Decls that can be redeclared.
Definition: Redeclarable.h:84
clang::TextNodeDumper::VisitObjCAtCatchStmt
void VisitObjCAtCatchStmt(const ObjCAtCatchStmt *Node)
Definition: TextNodeDumper.cpp:1327
clang::ObjCPropertyDecl::getGetterMethodDecl
ObjCMethodDecl * getGetterMethodDecl() const
Definition: DeclObjC.h:897
clang::NonTypeTemplateParmDecl::getIndex
unsigned getIndex() const
Get the index of the template parameter within its parameter list.
Definition: DeclTemplate.h:1196
clang::TextNodeDumper::VisitCXXOperatorCallExpr
void VisitCXXOperatorCallExpr(const CXXOperatorCallExpr *Node)
Definition: TextNodeDumper.cpp:1009
clang::NamespaceAliasDecl
Represents a C++ namespace alias.
Definition: DeclCXX.h:3021
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:2566
clang::ConstantArrayType
Represents the canonical version of C arrays with a specified constant size.
Definition: Type.h:3058
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:2409
clang::UsingDecl::getQualifier
NestedNameSpecifier * getQualifier() const
Retrieve the nested-name-specifier that qualifies the name.
Definition: DeclCXX.h:3451
clang::ObjCIvarDecl::Protected
@ Protected
Definition: DeclObjC.h:1926
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:5415
clang::UsingDirectiveDecl
Represents C++ using-directive.
Definition: DeclCXX.h:2917
clang::OK_ObjCSubscript
@ OK_ObjCSubscript
An Objective-C array/dictionary subscripting which reads an object or writes at the subscripted array...
Definition: Specifiers.h:154
clang::TextNodeDumper::VisitAutoType
void VisitAutoType(const AutoType *T)
Definition: TextNodeDumper.cpp:1591
clang::ObjCPropertyAttribute::kind_class
@ kind_class
Definition: DeclObjCCommon.h:40
clang::ConstantArrayType::getSize
const llvm::APInt & getSize() const
Definition: Type.h:3081
clang::BindingDecl
A binding in a decomposition declaration.
Definition: DeclCXX.h:4008
clang::TextNodeDumper::VisitFunctionProtoType
void VisitFunctionProtoType(const FunctionProtoType *T)
Definition: TextNodeDumper.cpp:1513
clang::if
if(T->getSizeExpr()) TRY_TO(TraverseStmt(T -> getSizeExpr()))
Definition: RecursiveASTVisitor.h:1081
clang::SourceLocation
Encodes a location in the source.
Definition: SourceLocation.h:86
clang::LocationColor
static const TerminalColor LocationColor
Definition: ASTDumperUtils.h:59
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:1556
clang::TemplateTemplateParmDecl::getIndex
unsigned getIndex() const
Get the index of the template parameter within its parameter list.
Definition: DeclTemplate.h:1196
clang::NamedDecl
This represents a decl that may have a name.
Definition: Decl.h:247
clang::DynTypedNode::getSourceRange
SourceRange getSourceRange() const
For nodes which represent textual entities in the source code, return their SourceRange.
Definition: ASTTypeTraits.cpp:216
clang::SourceRange::getBegin
SourceLocation getBegin() const
Definition: SourceLocation.h:219
clang::NOUR_Discarded
@ NOUR_Discarded
This name appears as a potential result of a discarded value expression.
Definition: Specifiers.h:171
clang::UsingType
Definition: Type.h:4502
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:3599
clang::TextNodeDumper::VisitObjCCategoryImplDecl
void VisitObjCCategoryImplDecl(const ObjCCategoryImplDecl *D)
Definition: TextNodeDumper.cpp:2301
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:926
clang::QualType
A (possibly-)qualified type.
Definition: Type.h:737
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:3919
clang::NonTypeTemplateParmDecl
NonTypeTemplateParmDecl - Declares a non-type template parameter, e.g., "Size" in.
Definition: DeclTemplate.h:1410
clang::TextNodeDumper::VisitObjCBoxedExpr
void VisitObjCBoxedExpr(const ObjCBoxedExpr *Node)
Definition: TextNodeDumper.cpp:1320
clang::Qualifiers::getAsString
std::string getAsString() const
Definition: TypePrinter.cpp:2166
AttributeLangSupport::C
@ C
Definition: SemaDeclAttr.cpp:56
clang::TextNodeDumper::VisitUnresolvedLookupExpr
void VisitUnresolvedLookupExpr(const UnresolvedLookupExpr *Node)
Definition: TextNodeDumper.cpp:1051
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:2689
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:2930
clang::VectorType::NeonVector
@ NeonVector
is ARM Neon vector
Definition: Type.h:3374
clang::FunctionProtoType::ExceptionSpecInfo::SourceTemplate
FunctionDecl * SourceTemplate
The function template whose exception specification this is instantiated from, for EST_Uninstantiated...
Definition: Type.h:4089
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:471
clang::AddressColor
static const TerminalColor AddressColor
Definition: ASTDumperUtils.h:57
clang::ObjCCategoryDecl::getClassInterface
ObjCInterfaceDecl * getClassInterface()
Definition: DeclObjC.h:2339
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:132
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:457
Module.h
clang::BinaryOperator::getOpcodeStr
StringRef getOpcodeStr() const
Definition: Expr.h:3877
clang::FunctionProtoType::ExtProtoInfo::Variadic
bool Variadic
Definition: Type.h:4101
clang::UsingShadowDecl
Represents a shadow declaration implicitly introduced into a scope by a (resolved) using-declaration ...
Definition: DeclCXX.h:3222
clang::CXXNewExpr
Represents a new-expression for memory allocation and constructor calls, e.g: "new CXXNewExpr(foo)".
Definition: ExprCXX.h:2146
clang::TemplateSpecializationType
Represents a type template specialization; the template must be a class template, a type alias templa...
Definition: Type.h:5354
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:2004
clang::IfStmt
IfStmt - This represents an if/then/else.
Definition: Stmt.h:1940
clang::SourceRange::isValid
bool isValid() const
Definition: SourceLocation.h:225
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:3952
clang::GotoStmt
GotoStmt - This represents a direct goto.
Definition: Stmt.h:2641
clang::APValue::ComplexFloat
@ ComplexFloat
Definition: APValue.h:136
clang::InitListExpr
Describes an C or C++ initializer list.
Definition: Expr.h:4796
clang::ObjCPropertyImplDecl
ObjCPropertyImplDecl - Represents implementation declaration of a property in a class or category imp...
Definition: DeclObjC.h:2771
clang::TextNodeDumper::VisitNullPtrTemplateArgument
void VisitNullPtrTemplateArgument(const TemplateArgument &TA)
Definition: TextNodeDumper.cpp:894
clang::TextNodeDumper::VisitNamespaceDecl
void VisitNamespaceDecl(const NamespaceDecl *D)
Definition: TextNodeDumper.cpp:1930
clang::ComparisonCategoryType::First
@ First
clang::TextNodeDumper::visitParamCommandComment
void visitParamCommandComment(const comments::ParamCommandComment *C, const comments::FullComment *FC)
Definition: TextNodeDumper.cpp:819
clang::SubstTemplateTypeParmType::getAssociatedDecl
Decl * getAssociatedDecl() const
A template-like entity which owns the whole pattern being substituted.
Definition: Type.h:5105
clang::RQ_RValue
@ RQ_RValue
An rvalue ref-qualifier was provided (&&).
Definition: Type.h:1524
clang::UnaryOperator
UnaryOperator - This represents the unary-expression's (except sizeof and alignof),...
Definition: Expr.h:2172
clang::TagType
Definition: Type.h:4792
SourceManager.h
clang::OMPDeclareReductionDecl::CopyInit
@ CopyInit
Definition: DeclOpenMP.h:178
clang::TextNodeDumper::VisitObjCSelectorExpr
void VisitObjCSelectorExpr(const ObjCSelectorExpr *Node)
Definition: TextNodeDumper.cpp:1336
clang::HLSLBufferDecl::isCBuffer
bool isCBuffer() const
Definition: Decl.h:4757
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:1134
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:3377
clang::AutoType::getTypeConstraintArguments
ArrayRef< TemplateArgument > getTypeConstraintArguments() const
Definition: Type.h:5256
LocInfoType.h
clang::ObjCPropertyDecl::getPropertyImplementation
PropertyControl getPropertyImplementation() const
Definition: DeclObjC.h:908
clang::ObjCInterfaceType::getDecl
ObjCInterfaceDecl * getDecl() const
Get the declaration of this interface.
Definition: Type.cpp:823
clang::FunctionDecl::isInlineSpecified
bool isInlineSpecified() const
Determine whether the "inline" keyword was specified for this function.
Definition: Decl.h:2679
clang::TextNodeDumper::VisitCXXFunctionalCastExpr
void VisitCXXFunctionalCastExpr(const CXXFunctionalCastExpr *Node)
Definition: TextNodeDumper.cpp:1198
clang::concepts::Requirement::isSatisfied
bool isSatisfied() const
Definition: ExprConcepts.h:174
clang::comments::HTMLEndTagComment
A closing HTML tag.
Definition: Comment.h:499
clang::TextNodeDumper::VisitOMPRequiresDecl
void VisitOMPRequiresDecl(const OMPRequiresDecl *D)
Definition: TextNodeDumper.cpp:1904
clang::LifetimeExtendedTemporaryDecl::getManglingNumber
unsigned getManglingNumber() const
Definition: DeclCXX.h:3180
clang::ObjCIvarDecl::Public
@ Public
Definition: DeclObjC.h:1926
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:3117
clang::FunctionType
FunctionType - C99 6.7.5.3 - Function Declarators.
Definition: Type.h:3675
clang::CapturedDecl
Represents the body of a CapturedStmt, and serves as its DeclContext.
Definition: Decl.h:4472
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:1678
clang::ConstructorUsingShadowDecl::getConstructedBaseClass
CXXRecordDecl * getConstructedBaseClass() const
Get the base class whose constructor or constructor shadow declaration is passed the constructor argu...
Definition: DeclCXX.h:3590
TextNodeDumper.h
clang::concepts::Requirement::containsUnexpandedParameterPack
bool containsUnexpandedParameterPack() const
Definition: ExprConcepts.h:192
clang::comments::InlineCommandComment::RenderMonospaced
@ RenderMonospaced
Definition: Comment.h:309
clang::ArrayType::Normal
@ Normal
Definition: Type.h:3019
clang::TextNodeDumper::VisitTemplateTemplateArgument
void VisitTemplateTemplateArgument(const TemplateArgument &TA)
Definition: TextNodeDumper.cpp:902
clang::TextNodeDumper::VisitUsingEnumDecl
void VisitUsingEnumDecl(const UsingEnumDecl *D)
Definition: TextNodeDumper.cpp:2163
clang::ObjCPropertyAttribute::kind_strong
@ kind_strong
Definition: DeclObjCCommon.h:34
clang::TextNodeDumper::VisitRValueReferenceType
void VisitRValueReferenceType(const ReferenceType *T)
Definition: TextNodeDumper.cpp:1430
clang::ObjCImplDecl::getClassInterface
const ObjCInterfaceDecl * getClassInterface() const
Definition: DeclObjC.h:2454
clang::ErrorsColor
static const TerminalColor ErrorsColor
Definition: ASTDumperUtils.h:66
clang::ArrayType::Star
@ Star
Definition: Type.h:3019
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:3705
clang::TextNodeDumper::VisitCXXRecordDecl
void VisitCXXRecordDecl(const CXXRecordDecl *D)
Definition: TextNodeDumper.cpp:1960
clang::FunctionProtoType::ExceptionSpecInfo::SourceDecl
FunctionDecl * SourceDecl
The function whose exception specification this is, for EST_Unevaluated and EST_Uninstantiated.
Definition: Type.h:4085
clang::Type
The base class of the type hierarchy.
Definition: Type.h:1565
clang::UsingShadowDecl::getTargetDecl
NamedDecl * getTargetDecl() const
Gets the underlying declaration which has been brought into the local scope.
Definition: DeclCXX.h:3286
clang::TextNodeDumper::VisitVarTemplateDecl
void VisitVarTemplateDecl(const VarTemplateDecl *D)
Definition: TextNodeDumper.cpp:2112
clang::FunctionDecl::isInlined
bool isInlined() const
Determine whether this function should be inlined, because it is either marked "inline" or "constexpr...
Definition: Decl.h:2701
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:302
clang::TypedefType
Definition: Type.h:4535
clang::Type::containsErrors
bool containsErrors() const
Whether this type is an error type.
Definition: Type.h:2298
clang::TextNodeDumper::VisitTypedefType
void VisitTypedefType(const TypedefType *T)
Definition: TextNodeDumper.cpp:1550
clang::FunctionDecl::isVirtualAsWritten
bool isVirtualAsWritten() const
Whether this function is marked as virtual explicitly.
Definition: Decl.h:2235
clang::PragmaCommentDecl::getCommentKind
PragmaMSCommentKind getCommentKind() const
Definition: Decl.h:161
clang::LinkageSpecDecl::lang_c
@ lang_c
Definition: DeclCXX.h:2841
clang::NamespaceDecl::getOriginalNamespace
NamespaceDecl * getOriginalNamespace()
Get the original (first) namespace declaration.
Definition: DeclCXX.cpp:2912
clang::TextNodeDumper::visitBlockCommandComment
void visitBlockCommandComment(const comments::BlockCommandComment *C, const comments::FullComment *)
Definition: TextNodeDumper.cpp:812
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:410
clang::TextNodeDumper::VisitFunctionTemplateDecl
void VisitFunctionTemplateDecl(const FunctionTemplateDecl *D)
Definition: TextNodeDumper.cpp:2104
clang::SubstTemplateTypeParmPackType::getReplacedParameter
const TemplateTypeParmDecl * getReplacedParameter() const
Gets the template parameter declaration that was substituted for.
Definition: Type.cpp:3690
clang::TextNodeDumper::VisitPragmaCommentDecl
void VisitPragmaCommentDecl(const PragmaCommentDecl *D)
Definition: TextNodeDumper.cpp:1845
clang::TextNodeDumper::VisitOMPIteratorExpr
void VisitOMPIteratorExpr(const OMPIteratorExpr *Node)
Definition: TextNodeDumper.cpp:1401
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:1288
clang::FixedPointLiteral
Definition: Expr.h:1546
clang::TextNodeDumper::VisitIfStmt
void VisitIfStmt(const IfStmt *Node)
Definition: TextNodeDumper.cpp:951
clang::comments::InlineCommandComment::RenderBold
@ RenderBold
Definition: Comment.h:308
clang::Decl::isThisDeclarationReferenced
bool isThisDeclarationReferenced() const
Whether this declaration was referenced.
Definition: DeclBase.h:604
clang::TextNodeDumper::VisitFloatingLiteral
void VisitFloatingLiteral(const FloatingLiteral *Node)
Definition: TextNodeDumper.cpp:1102
clang::comments::VerbatimBlockLineComment
A line of text contained in a verbatim block.
Definition: Comment.h:846
clang::UnresolvedUsingTypenameDecl
Represents a dependent using declaration which was marked with typename.
Definition: DeclCXX.h:3858
clang::TextNodeDumper::VisitNamespaceAliasDecl
void VisitNamespaceAliasDecl(const NamespaceAliasDecl *D)
Definition: TextNodeDumper.cpp:1945
clang::Decl::getLexicalDeclContext
DeclContext * getLexicalDeclContext()
getLexicalDeclContext - The declaration context where this Decl was lexically declared (LexicalDC).
Definition: DeclBase.h:883
clang::TextNodeDumper::visitInlineCommandComment
void visitInlineCommandComment(const comments::InlineCommandComment *C, const comments::FullComment *)
Definition: TextNodeDumper.cpp:768
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:1491
clang::VarDecl::isParameterPack
bool isParameterPack() const
Determine whether this variable is actually a function parameter pack or init-capture pack.
Definition: Decl.cpp:2579
clang::comments::ParamCommandComment
Doxygen \param command.
Definition: Comment.h:694
clang::FunctionTemplateDecl
Declaration of a template function.
Definition: DeclTemplate.h:1006
clang::TextNodeDumper::VisitExtVectorElementExpr
void VisitExtVectorElementExpr(const ExtVectorElementExpr *Node)
Definition: TextNodeDumper.cpp:1153
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:3237
clang::VarDecl::hasInit
bool hasInit() const
Definition: Decl.cpp:2324
clang::IntegerLiteral
Definition: Expr.h:1503
FLAG
#define FLAG(fn, name)
clang::TextNodeDumper::VisitObjCInterfaceDecl
void VisitObjCInterfaceDecl(const ObjCInterfaceDecl *D)
Definition: TextNodeDumper.cpp:2314
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:2558
clang::FloatingLiteral
Definition: Expr.h:1648
clang::RecordType
A helper class that allows the use of isa/cast/dyncast to detect TagType objects of structs/unions/cl...
Definition: Type.h:4816
clang::CompoundStmt
CompoundStmt - This represents a group of statements like { stmt stmt }.
Definition: Stmt.h:1410
clang::TextNodeDumper::VisitVectorType
void VisitVectorType(const VectorType *T)
Definition: TextNodeDumper.cpp:1473
clang::Module
Describes a module or submodule.
Definition: Module.h:98
clang::ObjCSelectorExpr
ObjCSelectorExpr used for @selector in Objective-C.
Definition: ExprObjC.h:454
DeclTemplate.h
clang::NamespaceDecl::isNested
bool isNested() const
Returns true if this is a nested namespace declaration.
Definition: Decl.h:624
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:5830
clang::VectorType::SveFixedLengthDataVector
@ SveFixedLengthDataVector
is AArch64 SVE fixed-length data vector
Definition: Type.h:3380
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:3097
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:2046
clang::ImportDecl
Describes a module import declaration, which makes the contents of the named module visible in the cu...
Definition: Decl.h:4587
clang::Decl::getAccess
AccessSpecifier getAccess() const
Definition: DeclBase.h:491
clang::FunctionDecl::isTrivial
bool isTrivial() const
Whether this function is "trivial" in some specialized C++ senses.
Definition: Decl.h:2261
clang::SizeOfPackExpr
Represents an expression that computes the length of a parameter pack.
Definition: ExprCXX.h:4151
Node
DynTypedNode Node
Definition: ASTMatchFinder.cpp:68
clang::comments::CommandTraits::getBuiltinCommandInfo
static const CommandInfo * getBuiltinCommandInfo(StringRef Name)
DeclFriend.h
clang::TextNodeDumper::VisitFriendDecl
void VisitFriendDecl(const FriendDecl *D)
Definition: TextNodeDumper.cpp:2231
clang::CXXBindTemporaryExpr
Represents binding an expression to a temporary.
Definition: ExprCXX.h:1419
clang::BlockDecl
Represents a block literal declaration, which is like an unnamed FunctionDecl.
Definition: Decl.h:4283
clang::TextNodeDumper::VisitUnresolvedUsingTypenameDecl
void VisitUnresolvedUsingTypenameDecl(const UnresolvedUsingTypenameDecl *D)
Definition: TextNodeDumper.cpp:2168
clang::Decl::getKind
Kind getKind() const
Definition: DeclBase.h:435
clang::ObjCInterfaceDecl::getImplementation
ObjCImplementationDecl * getImplementation() const
Definition: DeclObjC.cpp:1598
clang::TextNodeDumper::VisitObjCProtocolExpr
void VisitObjCProtocolExpr(const ObjCProtocolExpr *Node)
Definition: TextNodeDumper.cpp:1341
clang::BinaryOperator
A builtin binary operation expression such as "x + y" or "x <= y".
Definition: Expr.h:3812
clang::OMPClause
This is a basic class for representing single OpenMP clause.
Definition: OpenMPClause.h:55
clang::TextNodeDumper::visitTParamCommandComment
void visitTParamCommandComment(const comments::TParamCommandComment *C, const comments::FullComment *FC)
Definition: TextNodeDumper.cpp:840
clang::TemplateTypeParmType::getIndex
unsigned getIndex() const
Definition: Type.h:5044
clang::TextNodeDumper::VisitRequiresExpr
void VisitRequiresExpr(const RequiresExpr *Node)
Definition: TextNodeDumper.cpp:1424
clang::APValue::Union
@ Union
Definition: APValue.h:141
clang::ObjCInterfaceDecl::protocols
protocol_range protocols() const
Definition: DeclObjC.h:1343
clang::TextNodeDumper::VisitCastExpr
void VisitCastExpr(const CastExpr *Node)
Definition: TextNodeDumper.cpp:1017
clang::Type::isFromAST
bool isFromAST() const
Whether this type comes from an AST file.
Definition: Type.h:1987
clang::ConceptDecl
Declaration of a C++20 concept.
Definition: DeclTemplate.h:3262
clang::TextNodeDumper::VisitImportDecl
void VisitImportDecl(const ImportDecl *D)
Definition: TextNodeDumper.cpp:1837
clang::TemplateName::dump
void dump(raw_ostream &OS) const
Debugging aid that dumps the template name.
Definition: TemplateName.cpp:363
clang::PresumedLoc::getFilename
const char * getFilename() const
Return the presumed filename of this location.
Definition: SourceLocation.h:324
clang::SourceRange::getEnd
SourceLocation getEnd() const
Definition: SourceLocation.h:220
dumpPreviousDeclImpl
static void dumpPreviousDeclImpl(raw_ostream &OS,...)
Definition: TextNodeDumper.cpp:31
clang::TextNodeDumper::VisitCallExpr
void VisitCallExpr(const CallExpr *Node)
Definition: TextNodeDumper.cpp:1002
clang::threadSafety::sx::toString
std::string toString(const til::SExpr *E)
Definition: ThreadSafetyCommon.h:91
clang::VectorType
Represents a GCC generic vector type.
Definition: Type.h:3358
clang::OMPRequiresDecl::clauselists
clauselist_range clauselists()
Definition: DeclOpenMP.h:441
clang::ObjCPropertyImplDecl::Synthesize
@ Synthesize
Definition: DeclObjC.h:2774
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:803
clang::MaterializeTemporaryExpr
Represents a prvalue temporary that is written into memory so that a reference can bind to it.
Definition: ExprCXX.h:4513
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:209
clang::TextNodeDumper::VisitPackTemplateArgument
void VisitPackTemplateArgument(const TemplateArgument &TA)
Definition: TextNodeDumper.cpp:922
clang::TextNodeDumper::VisitEnumConstantDecl
void VisitEnumConstantDecl(const EnumConstantDecl *D)
Definition: TextNodeDumper.cpp:1665
clang::APValue::Array
@ Array
Definition: APValue.h:139
clang::ReferenceType::isSpelledAsLValue
bool isSpelledAsLValue() const
Definition: Type.h:2893
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:3012
clang::ObjCPropertyDecl::getSetterMethodDecl
ObjCMethodDecl * getSetterMethodDecl() const
Definition: DeclObjC.h:900
clang::UnaryOperator::getOpcodeStr
static StringRef getOpcodeStr(Opcode Op)
getOpcodeStr - Turn an Opcode enum value into the punctuation char it corresponds to,...
Definition: Expr.cpp:1388
clang::TextNodeDumper::VisitBlockDecl
void VisitBlockDecl(const BlockDecl *D)
Definition: TextNodeDumper.cpp:2388
clang::TextNodeDumper::VisitTypedefDecl
void VisitTypedefDecl(const TypedefDecl *D)
Definition: TextNodeDumper.cpp:1635
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:7386
clang::ValueColor
static const TerminalColor ValueColor
Definition: ASTDumperUtils.h:79
TypeTraits.h
clang::TextNodeDumper::VisitConstructorUsingShadowDecl
void VisitConstructorUsingShadowDecl(const ConstructorUsingShadowDecl *D)
Definition: TextNodeDumper.cpp:2190
clang::OK_BitField
@ OK_BitField
A bitfield object is a bitfield on a C or C++ record.
Definition: Specifiers.h:142
clang::Decl::isInvalidDecl
bool isInvalidDecl() const
Definition: DeclBase.h:571
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:3376
clang::TextNodeDumper::VisitObjCPropertyImplDecl
void VisitObjCPropertyImplDecl(const ObjCPropertyImplDecl *D)
Definition: TextNodeDumper.cpp:2378
clang::TemplateArgument
Represents a template argument.
Definition: TemplateBase.h:61
clang::APValue::getStructBase
APValue & getStructBase(unsigned i)
Definition: APValue.h:538
clang::ObjCCategoryDecl::getImplementation
ObjCCategoryImplDecl * getImplementation() const
Definition: DeclObjC.cpp:2132
clang::TextNodeDumper::VisitUsingDecl
void VisitUsingDecl(const UsingDecl *D)
Definition: TextNodeDumper.cpp:2156
clang::concepts::Requirement
A static requirement that can be used in a requires-expression to check properties of types and expre...
Definition: ExprConcepts.h:145
clang::TextNodeDumper::VisitPackExpansionType
void VisitPackExpansionType(const PackExpansionType *T)
Definition: TextNodeDumper.cpp:1628
APValue.h
clang::TextNodeDumper::VisitCXXStaticCastExpr
void VisitCXXStaticCastExpr(const CXXStaticCastExpr *Node)
Definition: TextNodeDumper.cpp:1206
clang::VarDecl::isNRVOVariable
bool isNRVOVariable() const
Determine whether this local variable can be used with the named return value optimization (NRVO).
Definition: Decl.h:1452
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:80
clang::LabelDecl
Represents the declaration of a label.
Definition: Decl.h:496
clang::TextNodeDumper::VisitTemplateTemplateParmDecl
void VisitTemplateTemplateParmDecl(const TemplateTemplateParmDecl *D)
Definition: TextNodeDumper.cpp:2148
clang::CXXRecordDecl::needsOverloadResolutionForMoveConstructor
bool needsOverloadResolutionForMoveConstructor() const
Determine whether we need to eagerly declare a defaulted move constructor for this class.
Definition: DeclCXX.h:884
clang::QualType::getSplitDesugaredType
SplitQualType getSplitDesugaredType() const
Definition: Type.h:1056
clang::comments::CommandInfo::Name
const char * Name
Definition: CommentCommandTraits.h:37
clang::TextNodeDumper::VisitSwitchStmt
void VisitSwitchStmt(const SwitchStmt *Node)
Definition: TextNodeDumper.cpp:968
clang::comments::FullComment
A full comment attached to a declaration, contains block content.
Definition: Comment.h:1077
clang::TypedefNameDecl::getUnderlyingType
QualType getUnderlyingType() const
Definition: Decl.h:3330
clang::Mergeable::getFirstDecl
decl_type * getFirstDecl()
Return the first declaration of this declaration or itself if this is the only declaration.
Definition: Redeclarable.h:320
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:5246
Type.h
clang::TextNodeDumper::VisitBindingDecl
void VisitBindingDecl(const BindingDecl *D)
Definition: TextNodeDumper.cpp:1827
clang::ObjCMessageExpr::Class
@ Class
The receiver is a class.
Definition: ExprObjC.h:1088
clang::TextNodeDumper::VisitUsingDirectiveDecl
void VisitUsingDirectiveDecl(const UsingDirectiveDecl *D)
Definition: TextNodeDumper.cpp:1940
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:1627
clang::TextNodeDumper::VisitIntegerLiteral
void VisitIntegerLiteral(const IntegerLiteral *Node)
Definition: TextNodeDumper.cpp:1091
clang::TextNodeDumper::VisitPragmaDetectMismatchDecl
void VisitPragmaDetectMismatchDecl(const PragmaDetectMismatchDecl *D)
Definition: TextNodeDumper.cpp:1871
clang::VarDecl
Represents a variable declaration or definition.
Definition: Decl.h:906
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:4472
clang::QualType::getAsString
std::string getAsString() const
Definition: TypePrinter.cpp:2303
clang::comments::BlockCommandComment
A command that has zero or more word-like arguments (number of word-like arguments depends on command...
Definition: Comment.h:588
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:3580
clang::TextNodeDumper::VisitObjCSubscriptRefExpr
void VisitObjCSubscriptRefExpr(const ObjCSubscriptRefExpr *Node)
Definition: TextNodeDumper.cpp:1376
clang::PragmaCommentDecl::getArg
StringRef getArg() const
Definition: Decl.h:163
clang::ObjCIvarDecl::Private
@ Private
Definition: DeclObjC.h:1926
clang::StringLiteral
StringLiteral - This represents a string literal expression, e.g.
Definition: Expr.h:1776
clang::ExprWithCleanups
Represents an expression – generally a full-expression – that introduces cleanups to be run at the en...
Definition: ExprCXX.h:3366
clang::ObjCCategoryImplDecl
ObjCCategoryImplDecl - An object of this class encapsulates a category @implementation declaration.
Definition: DeclObjC.h:2513
clang::UsingType::typeMatchesDecl
bool typeMatchesDecl() const
Definition: Type.h:4521
clang::PresumedLoc::getColumn
unsigned getColumn() const
Return the presumed column number of this location.
Definition: SourceLocation.h:345
clang::TextNodeDumper::VisitMemberExpr
void VisitMemberExpr(const MemberExpr *Node)
Definition: TextNodeDumper.cpp:1142
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:625
clang::RQ_None
@ RQ_None
No ref-qualifier was provided.
Definition: Type.h:1518
clang::getOperatorSpelling
const char * getOperatorSpelling(OverloadedOperatorKind Operator)
Retrieve the spelling of the given overloaded operator, without the preceding "operator" keyword.
Definition: IdentifierTable.cpp:818
clang::Type::isVariablyModifiedType
bool isVariablyModifiedType() const
Whether this type is a variably-modified type (C99 6.7.5).
Definition: Type.h:2322
clang::CXXRecordDecl::bases
base_class_range bases()
Definition: DeclCXX.h:597
clang::SubstTemplateTypeParmType
Represents the result of substituting a type for a template type parameter.
Definition: Type.h:5081
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:3145
clang::DependentSizedExtVectorType::getAttributeLoc
SourceLocation getAttributeLoc() const
Definition: Type.h:3335
clang::TextNodeDumper::VisitUnresolvedUsingType
void VisitUnresolvedUsingType(const UnresolvedUsingType *T)
Definition: TextNodeDumper.cpp:1540
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::TextNodeDumper::VisitCompoundStmt
void VisitCompoundStmt(const CompoundStmt *Node)
Definition: TextNodeDumper.cpp:2400
clang::EnumDecl::isScopedUsingClassTag
bool isScopedUsingClassTag() const
Returns true if this is a C++11 scoped enumeration.
Definition: Decl.h:3913
Label
std::string Label
Definition: UsingDeclarationsSorter.cpp:69
clang::ObjCEncodeExpr
ObjCEncodeExpr, used for @encode in Objective-C.
Definition: ExprObjC.h:409
clang::SubstTemplateTypeParmPackType
Represents the result of substituting a set of types for a template type parameter pack.
Definition: Type.h:5154
clang::UnresolvedUsingValueDecl
Represents a dependent using declaration which was not marked with typename.
Definition: DeclCXX.h:3762
clang::ObjCPropertyDecl::getType
QualType getType() const
Definition: DeclObjC.h:800
clang::TagDecl::isCompleteDefinition
bool isCompleteDefinition() const
Return true if this decl has its body fully specified.
Definition: Decl.h:3528
clang::APValue::getArrayInitializedElt
APValue & getArrayInitializedElt(unsigned I)
Definition: APValue.h:502
clang::VectorType::GenericVector
@ GenericVector
not a target-specific vector type
Definition: Type.h:3362
clang::TextNodeDumper::VisitVariableArrayType
void VisitVariableArrayType(const VariableArrayType *T)
Definition: TextNodeDumper.cpp:1454
clang::VarDecl::TLS_None
@ TLS_None
Not a TLS variable.
Definition: Decl.h:923
clang::VectorType::AltiVecPixel
@ AltiVecPixel
is AltiVec 'vector Pixel'
Definition: Type.h:3368
clang::NamespaceDecl::isOriginalNamespace
bool isOriginalNamespace() const
Return true if this declaration is an original (first) declaration of the namespace.
Definition: DeclCXX.cpp:2926
clang::OK_MatrixComponent
@ OK_MatrixComponent
A matrix component is a single element of a matrix.
Definition: Specifiers.h:157
clang::PCK_ExeStr
@ PCK_ExeStr
Definition: PragmaKinds.h:19
clang::concepts::Requirement::RK_Compound
@ RK_Compound
Definition: ExprConcepts.h:149
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:1041
clang::SubstTemplateTypeParmType::getReplacedParameter
const TemplateTypeParmDecl * getReplacedParameter() const
Gets the template parameter declaration that was substituted for.
Definition: Type.cpp:3664
clang::TemplateTypeParmDecl
Declaration of a template type parameter.
Definition: DeclTemplate.h:1205
clang::concepts::Requirement::RK_Simple
@ RK_Simple
Definition: ExprConcepts.h:149
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:2323
clang::Decl::isImplicit
bool isImplicit() const
isImplicit - Indicates whether the declaration was implicitly generated by the implementation.
Definition: DeclBase.h:576
clang::TextNodeDumper::visitHTMLStartTagComment
void visitHTMLStartTagComment(const comments::HTMLStartTagComment *C, const comments::FullComment *)
Definition: TextNodeDumper.cpp:793
clang::ObjCImplementationDecl::getSuperClass
const ObjCInterfaceDecl * getSuperClass() const
Definition: DeclObjC.h:2701
clang::Decl::getOwningModule
Module * getOwningModule() const
Get the module that owns this declaration (for visibility purposes).
Definition: DeclBase.h:808
clang::FieldDecl::isMutable
bool isMutable() const
Determines whether this field is mutable (C++ only).
Definition: Decl.h:3005
clang::QualType::split
SplitQualType split() const
Divides a QualType into its unqualified type and a set of local qualifiers.
Definition: Type.h:6643
clang::TagType::getDecl
TagDecl * getDecl() const
Definition: Type.cpp:3537
clang::VectorType::getVectorKind
VectorKind getVectorKind() const
Definition: Type.h:3405
clang::TextNodeDumper::VisitAddrLabelExpr
void VisitAddrLabelExpr(const AddrLabelExpr *Node)
Definition: TextNodeDumper.cpp:1175
clang::UsingDecl
Represents a C++ using-declaration.
Definition: DeclCXX.h:3414
clang::FunctionType::isRestrict
bool isRestrict() const
Definition: Type.h:3960
clang::TextNodeDumper::visitVerbatimBlockComment
void visitVerbatimBlockComment(const comments::VerbatimBlockComment *C, const comments::FullComment *)
Definition: TextNodeDumper.cpp:860
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:6627
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:5811
clang::ObjCCategoryDecl
ObjCCategoryDecl - Represents a category declaration.
Definition: DeclObjC.h:2294
clang::UnaryTransformType
A unary type transform, which is a type constructed from another.
Definition: Type.h:4733
clang::APValue::AddrLabelDiff
@ AddrLabelDiff
Definition: APValue.h:143
clang::DeducedType::isDeduced
bool isDeduced() const
Definition: Type.h:5234
clang::TemplateTypeParmType
Definition: Type.h:5002
clang::PredefinedExpr::getIdentKindName
StringRef getIdentKindName() const
Definition: Expr.h:2036
clang::comments::HTMLStartTagComment
An opening HTML tag with attributes.
Definition: Comment.h:411
clang::CharacterLiteral
Definition: Expr.h:1593
clang::ArrayType::getIndexTypeQualifiers
Qualifiers getIndexTypeQualifiers() const
Definition: Type.h:3039
clang::TemplateTypeParmDecl::wasDeclaredWithTypename
bool wasDeclaredWithTypename() const
Whether this template type parameter was declared with the 'typename' keyword.
Definition: DeclTemplate.h:1267
clang::TextNodeDumper::VisitOMPDeclareReductionDecl
void VisitOMPDeclareReductionDecl(const OMPDeclareReductionDecl *D)
Definition: TextNodeDumper.cpp:1882
clang::VK_LValue
@ VK_LValue
An l-value expression is a reference to an object with independent storage.
Definition: Specifiers.h:127
clang::TextNodeDumper::VisitDependentSizedExtVectorType
void VisitDependentSizedExtVectorType(const DependentSizedExtVectorType *T)
Definition: TextNodeDumper.cpp:1467
GetApproxValue
static double GetApproxValue(const llvm::APFloat &F)
Definition: TextNodeDumper.cpp:401
clang::ArrayType::getSizeModifier
ArraySizeModifier getSizeModifier() const
Definition: Type.h:3035
clang::CompoundLiteralExpr
CompoundLiteralExpr - [C99 6.5.2.5].
Definition: Expr.h:3410
clang::TemplateName::getKind
NameKind getKind() const
Definition: TemplateName.cpp:122
clang::AccessSpecifier
AccessSpecifier
A C++ access specifier (public, private, protected), plus the special value "none" which means differ...
Definition: Specifiers.h:111
clang::Decl::getSourceRange
virtual SourceRange getSourceRange() const LLVM_READONLY
Source range that this declaration covers.
Definition: DeclBase.h:420
clang::PresumedLoc::isInvalid
bool isInvalid() const
Return true if this object is invalid or uninitialized.
Definition: SourceLocation.h:318
clang::UsingEnumDecl
Represents a C++ using-enum-declaration.
Definition: DeclCXX.h:3614
clang::VarDecl::ListInit
@ ListInit
Direct list-initialization (C++11)
Definition: Decl.h:917
clang::HLSLBufferDecl
HLSLBufferDecl - Represent a cbuffer or tbuffer declaration.
Definition: Decl.h:4729
clang::CXXRecordDecl
Represents a C++ struct/union/class.
Definition: DeclCXX.h:254
clang::TextNodeDumper::VisitCXXUnresolvedConstructExpr
void VisitCXXUnresolvedConstructExpr(const CXXUnresolvedConstructExpr *Node)
Definition: TextNodeDumper.cpp:1212
clang::Mergeable
Provides common interface for the Decls that cannot be redeclared, but can be merged if the same decl...
Definition: Redeclarable.h:314
clang::LinkageSpecDecl::getLanguage
LanguageIDs getLanguage() const
Return the language specified by this linkage specification.
Definition: DeclCXX.h:2861
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::RISCV::TA
@ TA
Definition: RISCVVIntrinsicUtils.h:98
clang::Attr::isInherited
bool isInherited() const
Definition: Attr.h:89
clang::TextNodeDumper::VisitSYCLUniqueStableNameExpr
void VisitSYCLUniqueStableNameExpr(const SYCLUniqueStableNameExpr *Node)
Definition: TextNodeDumper.cpp:1077
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:2304
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:2312
clang::TextNodeDumper::VisitHLSLBufferDecl
void VisitHLSLBufferDecl(const HLSLBufferDecl *D)
Definition: TextNodeDumper.cpp:2406
clang::VK_PRValue
@ VK_PRValue
A pr-value expression (in the C++11 taxonomy) produces a temporary value.
Definition: Specifiers.h:123
clang::FunctionType::getNameForCallConv
static StringRef getNameForCallConv(CallingConv CC)
Definition: Type.cpp:3142
clang::UnresolvedUsingValueDecl::getQualifier
NestedNameSpecifier * getQualifier() const
Retrieve the nested-name-specifier that qualifies the name.
Definition: DeclCXX.h:3807
clang::VectorType::AltiVecVector
@ AltiVecVector
is AltiVec vector
Definition: Type.h:3365
clang::CastExpr::path_const_iterator
const typedef CXXBaseSpecifier *const * path_const_iterator
Definition: Expr.h:3547
clang::TextNodeDumper::VisitExpressionTemplateArgument
void VisitExpressionTemplateArgument(const TemplateArgument &TA)
Definition: TextNodeDumper.cpp:918
clang::CXXRecordDecl::needsOverloadResolutionForCopyConstructor
bool needsOverloadResolutionForCopyConstructor() const
Determine whether we need to eagerly declare a defaulted copy constructor for this class.
Definition: DeclCXX.h:794
clang::DependentSizedArrayType
Represents an array type in C++ whose size is a value-dependent expression.
Definition: Type.h:3216
clang::AttributeCommonInfo::getRange
SourceRange getRange() const
Definition: AttributeCommonInfo.h:133
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:3162
clang::CastColor
static const TerminalColor CastColor
Definition: ASTDumperUtils.h:76
clang::TextNodeDumper::VisitTemplateTypeParmType
void VisitTemplateTypeParmType(const TemplateTypeParmType *T)
Definition: TextNodeDumper.cpp:1570
clang::EnumDecl::isScoped
bool isScoped() const
Returns true if this is a C++11 scoped enumeration.
Definition: Decl.h:3910
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:3574
clang::OMPIteratorExpr::IteratorRange
Iterator range representation begin:end[:step].
Definition: ExprOpenMP.h:278
clang::TextNodeDumper::VisitSubstTemplateTypeParmType
void VisitSubstTemplateTypeParmType(const SubstTemplateTypeParmType *T)
Definition: TextNodeDumper.cpp:1577
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:751
clang::TemplateTypeParmDecl::getTypeConstraint
const TypeConstraint * getTypeConstraint() const
Returns the type constraint associated with this template parameter (if any).
Definition: DeclTemplate.h:1372
clang::TextNodeDumper::dumpLocation
void dumpLocation(SourceLocation Loc)
Definition: TextNodeDumper.cpp:618
clang::TypedefType::getDecl
TypedefNameDecl * getDecl() const
Definition: Type.h:4546
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:682
clang::TextNodeDumper::VisitLabelStmt
void VisitLabelStmt(const LabelStmt *Node)
Definition: TextNodeDumper.cpp:980
clang::ClassTemplateDecl
Declaration of a class template.
Definition: DeclTemplate.h:2273
clang::ValueDecl
Represent the declaration of a variable (in which case it is an lvalue) a function (in which case it ...
Definition: Decl.h:701
clang::VariableArrayType::getBracketsRange
SourceRange getBracketsRange() const
Definition: Type.h:3187
clang::CXXRecordDecl::needsOverloadResolutionForDestructor
bool needsOverloadResolutionForDestructor() const
Determine whether we need to eagerly declare a destructor for this class.
Definition: DeclCXX.h:995
clang::VarDecl::getStorageClass
StorageClass getStorageClass() const
Returns the storage class as written in the source.
Definition: Decl.h:1115
clang::TextNodeDumper::visitVerbatimBlockLineComment
void visitVerbatimBlockLineComment(const comments::VerbatimBlockLineComment *C, const comments::FullComment *)
Definition: TextNodeDumper.cpp:868
clang::TextNodeDumper::VisitObjCInterfaceType
void VisitObjCInterfaceType(const ObjCInterfaceType *T)
Definition: TextNodeDumper.cpp:1624
clang::FunctionProtoType
Represents a prototype with parameter type info, e.g.
Definition: Type.h:4016
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:1923
clang::TextNodeDumper::VisitTypeTraitExpr
void VisitTypeTraitExpr(const TypeTraitExpr *Node)
Definition: TextNodeDumper.cpp:1263
clang::ObjCCategoryDecl::protocols
protocol_range protocols() const
Definition: DeclObjC.h:2370
clang::ObjCCompatibleAliasDecl::getClassInterface
const ObjCInterfaceDecl * getClassInterface() const
Definition: DeclObjC.h:2759
clang::ASTContext::getPrintingPolicy
const clang::PrintingPolicy & getPrintingPolicy() const
Definition: ASTContext.h:713
clang::NOUR_None
@ NOUR_None
This is an odr-use.
Definition: Specifiers.h:163
clang::TextNodeDumper::VisitEnumDecl
void VisitEnumDecl(const EnumDecl *D)
Definition: TextNodeDumper.cpp:1642
clang::TextNodeDumper::VisitInjectedClassNameType
void VisitInjectedClassNameType(const InjectedClassNameType *T)
Definition: TextNodeDumper.cpp:1619
clang::DynTypedNode::print
void print(llvm::raw_ostream &OS, const PrintingPolicy &PP) const
Prints the node to the given output stream.
Definition: ASTTypeTraits.cpp:171
clang::CXXDeleteExpr
Represents a delete expression for memory deallocation and destructor calls, e.g.
Definition: ExprCXX.h:2422
clang::QualType::isNull
bool isNull() const
Return true if this QualType doesn't point to a type yet.
Definition: Type.h:802
clang::comments::TParamCommandComment
Doxygen \tparam command, describes a template parameter.
Definition: Comment.h:782
clang::APValue::ComplexInt
@ ComplexInt
Definition: APValue.h:135
Value
Value
Definition: UninitializedValues.cpp:103
clang::Decl
Decl - This represents one declaration (or definition), e.g.
Definition: DeclBase.h:83
clang::FunctionDecl::isPure
bool isPure() const
Whether this virtual function is pure, i.e.
Definition: Decl.h:2244
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:4309
clang::LinkageSpecDecl::lang_cxx
@ lang_cxx
Definition: DeclCXX.h:2841
clang::CXXFunctionalCastExpr
Represents an explicit C++ type conversion that uses "functional" notation (C++ [expr....
Definition: ExprCXX.h:1733
clang::ObjCMethodDecl::isInstanceMethod
bool isInstanceMethod() const
Definition: DeclObjC.h:431
clang::TextNodeDumper::VisitAccessSpecDecl
void VisitAccessSpecDecl(const AccessSpecDecl *D)
Definition: TextNodeDumper.cpp:2226
clang::ObjCCategoryImplDecl::getCategoryDecl
ObjCCategoryDecl * getCategoryDecl() const
Definition: DeclObjC.cpp:2176
clang::StmtColor
static const TerminalColor StmtColor
Definition: ASTDumperUtils.h:49
clang::TextNodeDumper::VisitImplicitCastExpr
void VisitImplicitCastExpr(const ImplicitCastExpr *Node)
Definition: TextNodeDumper.cpp:1029
clang::CapturedDecl::isNothrow
bool isNothrow() const
Definition: Decl.cpp:5094
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:1180
clang::TextNodeDumper::VisitObjCPropertyRefExpr
void VisitObjCPropertyRefExpr(const ObjCPropertyRefExpr *Node)
Definition: TextNodeDumper.cpp:1345
clang::APValue::getStructField
APValue & getStructField(unsigned i)
Definition: APValue.h:543
clang::PragmaCommentDecl
Represents a #pragma comment line.
Definition: Decl.h:138
clang::APValue::getUnionValue
APValue & getUnionValue()
Definition: APValue.h:559
clang::ObjCInterfaceDecl::getSuperClass
ObjCInterfaceDecl * getSuperClass() const
Definition: DeclObjC.cpp:352
clang::TextNodeDumper::VisitCharacterLiteral
void VisitCharacterLiteral(const CharacterLiteral *Node)
Definition: TextNodeDumper.cpp:1086
clang::TextNodeDumper::VisitLifetimeExtendedTemporaryDecl
void VisitLifetimeExtendedTemporaryDecl(const LifetimeExtendedTemporaryDecl *D)
Definition: TextNodeDumper.cpp:1754
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:5481
clang::TextNodeDumper::VisitBinaryOperator
void VisitBinaryOperator(const BinaryOperator *Node)
Definition: TextNodeDumper.cpp:1158
clang::CXXDependentScopeMemberExpr
Represents a C++ member access expression where the actual member referenced could not be resolved be...
Definition: ExprCXX.h:3574
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:2840
clang::OK_VectorComponent
@ OK_VectorComponent
A vector component is an element or range of elements on a vector.
Definition: Specifiers.h:145
clang::TextNodeDumper::VisitTemplateTypeParmDecl
void VisitTemplateTypeParmDecl(const TemplateTypeParmDecl *D)
Definition: TextNodeDumper.cpp:2120
clang::CompoundAssignOperator
CompoundAssignOperator - For compound assignments (e.g.
Definition: Expr.h:4059
clang::TextNodeDumper::VisitCapturedDecl
void VisitCapturedDecl(const CapturedDecl *D)
Definition: TextNodeDumper.cpp:1832
clang::TextNodeDumper::VisitCXXThisExpr
void VisitCXXThisExpr(const CXXThisExpr *Node)
Definition: TextNodeDumper.cpp:1192
clang::NOUR_Unevaluated
@ NOUR_Unevaluated
This name appears in an unevaluated operand.
Definition: Specifiers.h:165
clang::VarDecl::getInit
const Expr * getInit() const
Definition: Decl.h:1315
clang::TextNodeDumper::dumpName
void dumpName(const NamedDecl *ND)
Definition: TextNodeDumper.cpp:704
clang::SplitQualType
A std::pair-like structure for storing a qualified type split into its local qualifiers and its local...
Definition: Type.h:670
clang::ArrayType::Static
@ Static
Definition: Type.h:3019
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:3452
clang::TextNodeDumper::VisitUsingType
void VisitUsingType(const UsingType *T)
Definition: TextNodeDumper.cpp:1544
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:3377
clang::VectorType::AltiVecBool
@ AltiVecBool
is AltiVec 'vector bool ...'
Definition: Type.h:3371
clang::TextNodeDumper::VisitTypeAliasTemplateDecl
void VisitTypeAliasTemplateDecl(const TypeAliasTemplateDecl *D)
Definition: TextNodeDumper.cpp:1955
clang::TextNodeDumper::VisitOMPExecutableDirective
void VisitOMPExecutableDirective(const OMPExecutableDirective *D)
Definition: TextNodeDumper.cpp:1876
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:2835
clang::TemplateTypeParmDecl::isParameterPack
bool isParameterPack() const
Returns whether this is a parameter pack.
Definition: DeclTemplate.cpp:699
clang::TextNodeDumper::VisitWhileStmt
void VisitWhileStmt(const WhileStmt *Node)
Definition: TextNodeDumper.cpp:975
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:4075
clang::FunctionProtoType::ExtProtoInfo::ExceptionSpec
ExceptionSpecInfo ExceptionSpec
Definition: Type.h:4105
clang::CXXThisExpr
Represents the this expression in C++.
Definition: ExprCXX.h:1149
clang::ASTContext::getModulesWithMergedDefinition
ArrayRef< Module * > getModulesWithMergedDefinition(const NamedDecl *Def)
Get the additional modules in which the definition Def has been merged.
Definition: ASTContext.cpp:1138
clang::ExtVectorElementExpr
ExtVectorElementExpr - This represents access to specific elements of a vector, and may occur on the ...
Definition: Expr.h:5915
clang::TextNodeDumper::VisitIntegralTemplateArgument
void VisitIntegralTemplateArgument(const TemplateArgument &TA)
Definition: TextNodeDumper.cpp:898
clang::UnresolvedUsingType::getDecl
UnresolvedUsingTypenameDecl * getDecl() const
Definition: Type.h:4483
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:149
clang::PredefinedExpr
[C99 6.4.2.2] - A predefined identifier such as func.
Definition: Expr.h:1968
clang::TextNodeDumper::dumpType
void dumpType(QualType T)
Definition: TextNodeDumper.cpp:677
clang::UnresolvedUsingTypenameDecl::getQualifier
NestedNameSpecifier * getQualifier() const
Retrieve the nested-name-specifier that qualifies the name.
Definition: DeclCXX.h:3897
clang::TextNodeDumper::dumpPointer
void dumpPointer(const void *Ptr)
Definition: TextNodeDumper.cpp:613
clang::comments::TextComment
Plain text.
Definition: Comment.h:266
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:911
clang::VarDecl::TLS_Dynamic
@ TLS_Dynamic
TLS with a dynamic initializer.
Definition: Decl.h:929
clang::TextNodeDumper::VisitFixedPointLiteral
void VisitFixedPointLiteral(const FixedPointLiteral *Node)
Definition: TextNodeDumper.cpp:1097
clang::TextNodeDumper::VisitObjCTypeParamDecl
void VisitObjCTypeParamDecl(const ObjCTypeParamDecl *D)
Definition: TextNodeDumper.cpp:2273
clang::FunctionProtoType::ExtProtoInfo
Extra information about a function prototype.
Definition: Type.h:4099
clang::DeclKindNameColor
static const TerminalColor DeclKindNameColor
Definition: ASTDumperUtils.h:45
clang::TextNodeDumper::VisitExpressionTraitExpr
void VisitExpressionTraitExpr(const ExpressionTraitExpr *Node)
Definition: TextNodeDumper.cpp:1271
clang::TemplateTypeParmType::getDepth
unsigned getDepth() const
Definition: Type.h:5043
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:3184
clang::TextNodeDumper::VisitGotoStmt
void VisitGotoStmt(const GotoStmt *Node)
Definition: TextNodeDumper.cpp:986
clang::TextNodeDumper::dumpBareType
void dumpBareType(QualType T, bool Desugar=true)
Definition: TextNodeDumper.cpp:663
clang::FunctionDecl::isIneligibleOrNotSelected
bool isIneligibleOrNotSelected() const
Definition: Decl.h:2302
clang::InitListExpr::getInitializedFieldInUnion
FieldDecl * getInitializedFieldInUnion()
If this initializes a union, specifies which field in the union to initialize.
Definition: Expr.h:4910
clang::CommentColor
static const TerminalColor CommentColor
Definition: ASTDumperUtils.h:51
clang::TextNodeDumper::VisitCXXBoolLiteralExpr
void VisitCXXBoolLiteralExpr(const CXXBoolLiteralExpr *Node)
Definition: TextNodeDumper.cpp:1188
clang::TextNodeDumper::VisitObjCPropertyDecl
void VisitObjCPropertyDecl(const ObjCPropertyDecl *D)
Definition: TextNodeDumper.cpp:2336
clang::TextNodeDumper::VisitConstantExpr
void VisitConstantExpr(const ConstantExpr *Node)
Definition: TextNodeDumper.cpp:996
clang::NonTypeTemplateParmDecl::isParameterPack
bool isParameterPack() const
Whether this parameter is a non-type template parameter pack.
Definition: DeclTemplate.h:1524
clang::Stmt
Stmt - This represents one statement.
Definition: Stmt.h:71
clang::ObjCIvarDecl
ObjCIvarDecl - Represents an ObjC instance variable.
Definition: DeclObjC.h:1921
clang::TextNodeDumper::visitHTMLEndTagComment
void visitHTMLEndTagComment(const comments::HTMLEndTagComment *C, const comments::FullComment *)
Definition: TextNodeDumper.cpp:807
clang::VarDecl::isConstexpr
bool isConstexpr() const
Whether this variable is (C++11) constexpr.
Definition: Decl.h:1509
clang::TextNodeDumper::VisitExprWithCleanups
void VisitExprWithCleanups(const ExprWithCleanups *Node)
Definition: TextNodeDumper.cpp:1283
clang::ObjCPropertyAttribute::kind_nonatomic
@ kind_nonatomic
Definition: DeclObjCCommon.h:30
clang::comments::VerbatimBlockComment
A verbatim block command (e.
Definition: Comment.h:874
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:3052
clang::GenericSelectionExpr
Represents a C11 generic selection.
Definition: Expr.h:5633
clang::DeclNameColor
static const TerminalColor DeclNameColor
Definition: ASTDumperUtils.h:81
clang::TextNodeDumper::VisitVarDecl
void VisitVarDecl(const VarDecl *D)
Definition: TextNodeDumper.cpp:1774
clang::TextNodeDumper::VisitObjCMethodDecl
void VisitObjCMethodDecl(const ObjCMethodDecl *D)
Definition: TextNodeDumper.cpp:2261
clang::TextNodeDumper::visitVerbatimLineComment
void visitVerbatimLineComment(const comments::VerbatimLineComment *C, const comments::FullComment *)
Definition: TextNodeDumper.cpp:874
clang::EnumDecl::getIntegerType
QualType getIntegerType() const
Return the integer type this enum decl corresponds to.
Definition: Decl.h:3865
clang::TextNodeDumper::dumpDeclRef
void dumpDeclRef(const Decl *D, StringRef Label={})
Definition: TextNodeDumper.cpp:735
clang::TextNodeDumper::VisitLabelDecl
void VisitLabelDecl(const LabelDecl *D)
Definition: TextNodeDumper.cpp:1633
clang::ObjCProtocolDecl
Represents an Objective-C protocol declaration.
Definition: DeclObjC.h:2050
clang::TextNodeDumper::VisitUnaryOperator
void VisitUnaryOperator(const UnaryOperator *Node)
Definition: TextNodeDumper.cpp:1125
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:89
clang::CXXBaseSpecifier
Represents a base class of a C++ class.
Definition: DeclCXX.h:146
clang::Attr
Attr - This represents one attribute.
Definition: Attr.h:40
clang::TypeSourceInfo
A container of type source information.
Definition: Type.h:6593
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:195
clang::TextNodeDumper::VisitObjCCategoryDecl
void VisitObjCCategoryDecl(const ObjCCategoryDecl *D)
Definition: TextNodeDumper.cpp:2293
clang::RQ_LValue
@ RQ_LValue
An lvalue ref-qualifier was provided (&).
Definition: Type.h:1521
clang::TextNodeDumper::VisitDeducedTemplateSpecializationType
void VisitDeducedTemplateSpecializationType(const DeducedTemplateSpecializationType *T)
Definition: TextNodeDumper.cpp:1603
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:1113
clang::TextNodeDumper::VisitNullTemplateArgument
void VisitNullTemplateArgument(const TemplateArgument &TA)
Definition: TextNodeDumper.cpp:879
clang::TextNodeDumper::VisitIndirectFieldDecl
void VisitIndirectFieldDecl(const IndirectFieldDecl *D)
Definition: TextNodeDumper.cpp:1670
clang::LifetimeExtendedTemporaryDecl::getExtendingDecl
ValueDecl * getExtendingDecl()
Definition: DeclCXX.h:3166
clang::TextNodeDumper::VisitObjCEncodeExpr
void VisitObjCEncodeExpr(const ObjCEncodeExpr *Node)
Definition: TextNodeDumper.cpp:1332
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:1790
clang::FunctionDecl::param_begin
param_iterator param_begin()
Definition: Decl.h:2583
clang::TextNodeDumper::VisitStringLiteral
void VisitStringLiteral(const StringLiteral *Str)
Definition: TextNodeDumper.cpp:1107
clang::TextNodeDumper::VisitConceptSpecializationExpr
void VisitConceptSpecializationExpr(const ConceptSpecializationExpr *Node)
Definition: TextNodeDumper.cpp:1418
clang::TypeAliasTemplateDecl
Declaration of an alias template.
Definition: DeclTemplate.h:2546
clang::TextNodeDumper::VisitObjCIvarRefExpr
void VisitObjCIvarRefExpr(const ObjCIvarRefExpr *Node)
Definition: TextNodeDumper.cpp:1066
clang::TextNodeDumper::VisitGenericSelectionExpr
void VisitGenericSelectionExpr(const GenericSelectionExpr *E)
Definition: TextNodeDumper.cpp:1120
clang::SubstTemplateTypeParmType::getPackIndex
Optional< unsigned > getPackIndex() const
Definition: Type.h:5114
clang::ImplicitCastExpr
ImplicitCastExpr - Allows us to explicitly represent implicit type conversions, which have no direct ...
Definition: Expr.h:3624
clang::TextNodeDumper::VisitDependentSizedArrayType
void VisitDependentSizedArrayType(const DependentSizedArrayType *T)
Definition: TextNodeDumper.cpp:1460
clang::TextNodeDumper::VisitCXXDeleteExpr
void VisitCXXDeleteExpr(const CXXDeleteExpr *Node)
Definition: TextNodeDumper.cpp:1252
clang::MemberExpr
MemberExpr - [C99 6.5.2.3] Structure and Union Members.
Definition: Expr.h:3169
clang::LifetimeExtendedTemporaryDecl
Implicit declaration of a temporary that was materialized by a MaterializeTemporaryExpr and lifetime-...
Definition: DeclCXX.h:3129
clang::UnaryTransformType::getUTTKind
UTTKind getUTTKind() const
Definition: Type.h:4762
clang::RecordType::getDecl
RecordDecl * getDecl() const
Definition: Type.h:4826
clang::TextNodeDumper::dumpAccessSpecifier
void dumpAccessSpecifier(AccessSpecifier AS)
Definition: TextNodeDumper.cpp:711
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:2736
clang::QualType::getAsOpaquePtr
void * getAsOpaquePtr() const
Definition: Type.h:782
clang::APValue::MemberPointer
@ MemberPointer
Definition: APValue.h:142
clang::DeducedTemplateSpecializationType::getTemplateName
TemplateName getTemplateName() const
Retrieve the name of the template that we are deducing.
Definition: Type.h:5314
clang::FunctionType::isConst
bool isConst() const
Definition: Type.h:3958
clang::TextNodeDumper::VisitObjCBoolLiteralExpr
void VisitObjCBoolLiteralExpr(const ObjCBoolLiteralExpr *Node)
Definition: TextNodeDumper.cpp:1397
clang::SubstTemplateTypeParmPackType::getAssociatedDecl
Decl * getAssociatedDecl() const
A template-like entity which owns the whole pattern being substituted.
Definition: Type.cpp:3681
clang::ReferenceType
Base for LValueReferenceType and RValueReferenceType.
Definition: Type.h:2880
clang::ObjCPropertyAttribute::kind_getter
@ kind_getter
Definition: DeclObjCCommon.h:25
clang::TextNodeDumper::VisitNonTypeTemplateParmDecl
void VisitNonTypeTemplateParmDecl(const NonTypeTemplateParmDecl *D)
Definition: TextNodeDumper.cpp:2139
clang::concepts::Requirement::getKind
RequirementKind getKind() const
Definition: ExprConcepts.h:172
clang::TextNodeDumper::VisitObjCProtocolDecl
void VisitObjCProtocolDecl(const ObjCProtocolDecl *D)
Definition: TextNodeDumper.cpp:2307
clang::AutoType::isDecltypeAuto
bool isDecltypeAuto() const
Definition: Type.h:5269
clang::comments::InlineCommandComment::RenderNormal
@ RenderNormal
Definition: Comment.h:307
clang::PragmaDetectMismatchDecl
Represents a #pragma detect_mismatch line.
Definition: Decl.h:172
clang::VectorType::getNumElements
unsigned getNumElements() const
Definition: Type.h:3400
clang::TextNodeDumper::dumpSourceRange
void dumpSourceRange(SourceRange R)
Definition: TextNodeDumper.cpp:647
clang::getAccessSpelling
llvm::StringRef getAccessSpelling(AccessSpecifier AS)
Definition: Specifiers.h:383
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:1206
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:6168
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:302
clang::concepts::Requirement::RK_Nested
@ RK_Nested
Definition: ExprConcepts.h:149
clang::ASTContext::getModuleInitializers
ArrayRef< Decl * > getModuleInitializers(Module *M)
Get the initializations to perform when importing a module, if any.
Definition: ASTContext.cpp:1197
clang::VarDecl::getInitStyle
InitializationStyle getInitStyle() const
The style of initialization for this declaration.
Definition: Decl.h:1406
clang::TextNodeDumper::VisitCXXConstructExpr
void VisitCXXConstructExpr(const CXXConstructExpr *Node)
Definition: TextNodeDumper.cpp:1219
clang::TypeAliasDecl
Represents the declaration of a typedef-name via a C++11 alias-declaration.
Definition: Decl.h:3397
clang::SC_None
@ SC_None
Definition: Specifiers.h:238
clang::ValueDecl::getType
QualType getType() const
Definition: Decl.h:712
clang::InjectedClassNameType::getDecl
CXXRecordDecl * getDecl() const
Definition: Type.cpp:3631
clang::VarTemplateDecl
Declaration of a variable template.
Definition: DeclTemplate.h:3106
clang::ImportDecl::getImportedModule
Module * getImportedModule() const
Retrieve the module that was imported by the import declaration.
Definition: Decl.h:4646
clang::PackExpansionType::getNumExpansions
Optional< unsigned > getNumExpansions() const
Retrieve the number of expansions that this pack expansion will generate, if known.
Definition: Type.h:5855
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:763
clang::IndirectFieldDecl::chain
ArrayRef< NamedDecl * > chain() const
Definition: Decl.h:3206
clang::PragmaDetectMismatchDecl::getValue
StringRef getValue() const
Definition: Decl.h:196
SM
#define SM(sm)
Definition: Cuda.cpp:79
clang::ConstructorUsingShadowDecl
Represents a shadow constructor declaration introduced into a class by a C++11 using-declaration that...
Definition: DeclCXX.h:3500
clang::TemplateTypeParmType::isParameterPack
bool isParameterPack() const
Definition: Type.h:5045
clang::comments::InlineCommandComment::RenderAnchor
@ RenderAnchor
Definition: Comment.h:311
clang::TextNodeDumper::VisitDeclRefExpr
void VisitDeclRefExpr(const DeclRefExpr *Node)
Definition: TextNodeDumper.cpp:1035
clang::TextNodeDumper::dumpCleanupObject
void dumpCleanupObject(const ExprWithCleanups::CleanupObject &C)
Definition: TextNodeDumper.cpp:718
clang::TextNodeDumper::VisitOMPCapturedExprDecl
void VisitOMPCapturedExprDecl(const OMPCapturedExprDecl *D)
Definition: TextNodeDumper.cpp:1925
clang::DependentSizedArrayType::getBracketsRange
SourceRange getBracketsRange() const
Definition: Type.h:3244
clang::CXXCtorInitializer
Represents a C++ base or member initializer.
Definition: DeclCXX.h:2207
clang::BlockDecl::Capture
A class which contains all the information about a particular captured value.
Definition: Decl.h:4289
clang::TextNodeDumper::VisitCXXNewExpr
void VisitCXXNewExpr(const CXXNewExpr *Node)
Definition: TextNodeDumper.cpp:1239
clang::concepts::Requirement::RK_Type
@ RK_Type
Definition: ExprConcepts.h:149
clang::FunctionDecl::isDeletedAsWritten
bool isDeletedAsWritten() const
Definition: Decl.h:2413
clang::TextNodeDumper::VisitPredefinedExpr
void VisitPredefinedExpr(const PredefinedExpr *Node)
Definition: TextNodeDumper.cpp:1082
clang::TextNodeDumper::VisitUsingShadowDecl
void VisitUsingShadowDecl(const UsingShadowDecl *D)
Definition: TextNodeDumper.cpp:2185
clang::FunctionProtoType::getExtProtoInfo
ExtProtoInfo getExtProtoInfo() const
Definition: Type.h:4238
clang::TypedefType::typeMatchesDecl
bool typeMatchesDecl() const
Definition: Type.h:4554
clang::ObjCPropertyDecl::getPropertyAttributes
ObjCPropertyAttribute::Kind getPropertyAttributes() const
Definition: DeclObjC.h:811
clang::CastExpr
CastExpr - Base class for type casts, including both implicit casts (ImplicitCastExpr) and explicit c...
Definition: Expr.h:3480
clang::DependentSizedExtVectorType
Represents an extended vector type where either the type or size is dependent.
Definition: Type.h:3318
clang::TemplateTemplateParmDecl::getDepth
unsigned getDepth() const
Get the nesting depth of the template parameter.
Definition: DeclTemplate.h:1180
clang::TextNodeDumper::VisitTemplateSpecializationType
void VisitTemplateSpecializationType(const TemplateSpecializationType *T)
Definition: TextNodeDumper.cpp:1609
clang::Decl::getLocation
SourceLocation getLocation() const
Definition: DeclBase.h:432
clang::SplitQualType::Quals
Qualifiers Quals
The local qualifiers.
Definition: Type.h:675
clang::TextNodeDumper::VisitCompoundAssignOperator
void VisitCompoundAssignOperator(const CompoundAssignOperator *Node)
Definition: TextNodeDumper.cpp:1164
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:1232
clang::NamespaceDecl
Represent a C++ namespace.
Definition: Decl.h:542
clang::TextNodeDumper::VisitFieldDecl
void VisitFieldDecl(const FieldDecl *D)
Definition: TextNodeDumper.cpp:1765
clang::FunctionDecl
Represents a function declaration or definition.
Definition: Decl.h:1904
dumpBasePath
static void dumpBasePath(raw_ostream &OS, const CastExpr *Node)
Definition: TextNodeDumper.cpp:926
clang::TemplateTypeParmDecl::getDepth
unsigned getDepth() const
Retrieve the depth of the template parameter.
Definition: DeclTemplate.cpp:691
clang::BlockDecl::capturesCXXThis
bool capturesCXXThis() const
Definition: Decl.h:4415
clang::RecordDecl
Represents a struct/union/class.
Definition: Decl.h:3983
clang::TextNodeDumper::VisitDeclarationTemplateArgument
void VisitDeclarationTemplateArgument(const TemplateArgument &TA)
Definition: TextNodeDumper.cpp:888
clang::CallExpr
CallExpr - Represents a function call (C99 6.5.2.2, C++ [expr.call]).
Definition: Expr.h:2810
clang::TextNodeDumper::VisitCXXDependentScopeMemberExpr
void VisitCXXDependentScopeMemberExpr(const CXXDependentScopeMemberExpr *Node)
Definition: TextNodeDumper.cpp:1293
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:1180
clang::FunctionDecl::getStorageClass
StorageClass getStorageClass() const
Returns the storage class as written in the source.
Definition: Decl.h:2668
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:6214
clang::TextNodeDumper::VisitCaseStmt
void VisitCaseStmt(const CaseStmt *Node)
Definition: TextNodeDumper.cpp:991
clang::TextNodeDumper::VisitObjCIvarDecl
void VisitObjCIvarDecl(const ObjCIvarDecl *D)
Definition: TextNodeDumper.cpp:2236
clang::NamespaceDecl::isInline
bool isInline() const
Returns true if this is an inline namespace declaration.
Definition: Decl.h:607
clang::TextTreeStructure
Definition: TextNodeDumper.h:33
clang::TextNodeDumper::VisitConstantArrayType
void VisitConstantArrayType(const ConstantArrayType *T)
Definition: TextNodeDumper.cpp:1449
clang::CXXConstructExpr
Represents a call to a C++ constructor.
Definition: ExprCXX.h:1467
clang::ObjCPropertyAttribute::kind_retain
@ kind_retain
Definition: DeclObjCCommon.h:28
clang::TextNodeDumper::VisitBuiltinTemplateDecl
void VisitBuiltinTemplateDecl(const BuiltinTemplateDecl *D)
Definition: TextNodeDumper.cpp:2116
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:168
clang::PCK_Unknown
@ PCK_Unknown
Definition: PragmaKinds.h:15
clang::concepts::Requirement::isDependent
bool isDependent() const
Definition: ExprConcepts.h:187
clang::TextNodeDumper::VisitArrayType
void VisitArrayType(const ArrayType *T)
Definition: TextNodeDumper.cpp:1435
clang::TextNodeDumper::VisitFunctionType
void VisitFunctionType(const FunctionType *T)
Definition: TextNodeDumper.cpp:1502
clang::UsingDirectiveDecl::getNominatedNamespace
NamespaceDecl * getNominatedNamespace()
Returns the namespace nominated by this using-directive.
Definition: DeclCXX.cpp:2875
clang::ObjCMethodDecl::isVariadic
bool isVariadic() const
Definition: DeclObjC.h:436
clang::comments::HTMLStartTagComment::Attribute
Definition: Comment.h:413
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:3658
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:2472
clang::VarDecl::CallInit
@ CallInit
Call-style initialization (C++98)
Definition: Decl.h:914
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:1696
clang::ObjCPropertyAttribute::kind_setter
@ kind_setter
Definition: DeclObjCCommon.h:31
clang::TextNodeDumper::VisitTypeAliasDecl
void VisitTypeAliasDecl(const TypeAliasDecl *D)
Definition: TextNodeDumper.cpp:1950
clang::APValue::Float
@ Float
Definition: APValue.h:133
clang::CXXMethodDecl
Represents a static or instance method of a struct/union/class.
Definition: DeclCXX.h:1983
clang::ObjCIvarDecl::Package
@ Package
Definition: DeclObjC.h:1926
clang::Decl::getDeclContext
DeclContext * getDeclContext()
Definition: DeclBase.h:441
clang::TemplateSpecializationType::getTemplateName
TemplateName getTemplateName() const
Retrieve the name of the template that we are specializing.
Definition: Type.h:5422
clang::SYCLUniqueStableNameExpr
Definition: Expr.h:2065
clang::TextNodeDumper::VisitArrayTypeTraitExpr
void VisitArrayTypeTraitExpr(const ArrayTypeTraitExpr *Node)
Definition: TextNodeDumper.cpp:1267
clang::TemplateName::UsingTemplate
@ UsingTemplate
A template name that refers to a template declaration found through a specific using shadow declarati...
Definition: TemplateName.h:246
clang::TextNodeDumper::VisitTagType
void VisitTagType(const TagType *T)
Definition: TextNodeDumper.cpp:1566
clang::TextNodeDumper::VisitUnresolvedUsingValueDecl
void VisitUnresolvedUsingValueDecl(const UnresolvedUsingValueDecl *D)
Definition: TextNodeDumper.cpp:2176
clang::StorageClass
StorageClass
Storage classes.
Definition: Specifiers.h:236