clang  16.0.0git
JSONNodeDumper.h
Go to the documentation of this file.
1 //===--- JSONNodeDumper.h - Printing of AST nodes to JSON -----------------===//
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 to
10 // a JSON.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #ifndef LLVM_CLANG_AST_JSONNODEDUMPER_H
15 #define LLVM_CLANG_AST_JSONNODEDUMPER_H
16 
17 #include "clang/AST/ASTContext.h"
20 #include "clang/AST/AttrVisitor.h"
23 #include "clang/AST/ExprConcepts.h"
24 #include "clang/AST/ExprCXX.h"
25 #include "clang/AST/Mangle.h"
26 #include "clang/AST/Type.h"
27 #include "llvm/Support/JSON.h"
28 
29 namespace clang {
30 
31 class APValue;
32 
33 class NodeStreamer {
34  bool FirstChild = true;
35  bool TopLevel = true;
36  llvm::SmallVector<std::function<void(bool IsLastChild)>, 32> Pending;
37 
38 protected:
39  llvm::json::OStream JOS;
40 
41 public:
42  /// Add a child of the current node. Calls DoAddChild without arguments
43  template <typename Fn> void AddChild(Fn DoAddChild) {
44  return AddChild("", DoAddChild);
45  }
46 
47  /// Add a child of the current node with an optional label.
48  /// Calls DoAddChild without arguments.
49  template <typename Fn> void AddChild(StringRef Label, Fn DoAddChild) {
50  // If we're at the top level, there's nothing interesting to do; just
51  // run the dumper.
52  if (TopLevel) {
53  TopLevel = false;
54  JOS.objectBegin();
55 
56  DoAddChild();
57 
58  while (!Pending.empty()) {
59  Pending.back()(true);
60  Pending.pop_back();
61  }
62 
63  JOS.objectEnd();
64  TopLevel = true;
65  return;
66  }
67 
68  // We need to capture an owning-string in the lambda because the lambda
69  // is invoked in a deferred manner.
70  std::string LabelStr(!Label.empty() ? Label : "inner");
71  bool WasFirstChild = FirstChild;
72  auto DumpWithIndent = [=](bool IsLastChild) {
73  if (WasFirstChild) {
74  JOS.attributeBegin(LabelStr);
75  JOS.arrayBegin();
76  }
77 
78  FirstChild = true;
79  unsigned Depth = Pending.size();
80  JOS.objectBegin();
81 
82  DoAddChild();
83 
84  // If any children are left, they're the last at their nesting level.
85  // Dump those ones out now.
86  while (Depth < Pending.size()) {
87  Pending.back()(true);
88  this->Pending.pop_back();
89  }
90 
91  JOS.objectEnd();
92 
93  if (IsLastChild) {
94  JOS.arrayEnd();
95  JOS.attributeEnd();
96  }
97  };
98 
99  if (FirstChild) {
100  Pending.push_back(std::move(DumpWithIndent));
101  } else {
102  Pending.back()(false);
103  Pending.back() = std::move(DumpWithIndent);
104  }
105  FirstChild = false;
106  }
107 
108  NodeStreamer(raw_ostream &OS) : JOS(OS, 2) {}
109 };
110 
111 // Dumps AST nodes in JSON format. There is no implied stability for the
112 // content or format of the dump between major releases of Clang, other than it
113 // being valid JSON output. Further, there is no requirement that the
114 // information dumped is a complete representation of the AST, only that the
115 // information presented is correct.
117  : public ConstAttrVisitor<JSONNodeDumper>,
118  public comments::ConstCommentVisitor<JSONNodeDumper, void,
119  const comments::FullComment *>,
120  public ConstTemplateArgumentVisitor<JSONNodeDumper>,
121  public ConstStmtVisitor<JSONNodeDumper>,
122  public TypeVisitor<JSONNodeDumper>,
123  public ConstDeclVisitor<JSONNodeDumper>,
124  public NodeStreamer {
125  friend class JSONDumper;
126 
127  const SourceManager &SM;
128  ASTContext& Ctx;
129  ASTNameGenerator ASTNameGen;
130  PrintingPolicy PrintPolicy;
131  const comments::CommandTraits *Traits;
132  StringRef LastLocFilename, LastLocPresumedFilename;
133  unsigned LastLocLine, LastLocPresumedLine;
134 
136  using InnerCommentVisitor =
138  const comments::FullComment *>;
143 
144  void attributeOnlyIfTrue(StringRef Key, bool Value) {
145  if (Value)
146  JOS.attribute(Key, Value);
147  }
148 
149  void writeIncludeStack(PresumedLoc Loc, bool JustFirst = false);
150 
151  // Writes the attributes of a SourceLocation object without.
152  void writeBareSourceLocation(SourceLocation Loc, bool IsSpelling);
153 
154  // Writes the attributes of a SourceLocation to JSON based on its presumed
155  // spelling location. If the given location represents a macro invocation,
156  // this outputs two sub-objects: one for the spelling and one for the
157  // expansion location.
158  void writeSourceLocation(SourceLocation Loc);
159  void writeSourceRange(SourceRange R);
160  std::string createPointerRepresentation(const void *Ptr);
161  llvm::json::Object createQualType(QualType QT, bool Desugar = true);
162  llvm::json::Object createBareDeclRef(const Decl *D);
163  llvm::json::Object createFPOptions(FPOptionsOverride FPO);
164  void writeBareDeclRef(const Decl *D);
165  llvm::json::Object createCXXRecordDefinitionData(const CXXRecordDecl *RD);
166  llvm::json::Object createCXXBaseSpecifier(const CXXBaseSpecifier &BS);
167  std::string createAccessSpecifier(AccessSpecifier AS);
168  llvm::json::Array createCastPath(const CastExpr *C);
169 
170  void writePreviousDeclImpl(...) {}
171 
172  template <typename T> void writePreviousDeclImpl(const Mergeable<T> *D) {
173  const T *First = D->getFirstDecl();
174  if (First != D)
175  JOS.attribute("firstRedecl", createPointerRepresentation(First));
176  }
177 
178  template <typename T> void writePreviousDeclImpl(const Redeclarable<T> *D) {
179  const T *Prev = D->getPreviousDecl();
180  if (Prev)
181  JOS.attribute("previousDecl", createPointerRepresentation(Prev));
182  }
183  void addPreviousDeclaration(const Decl *D);
184 
185  StringRef getCommentCommandName(unsigned CommandID) const;
186 
187 public:
188  JSONNodeDumper(raw_ostream &OS, const SourceManager &SrcMgr, ASTContext &Ctx,
189  const PrintingPolicy &PrintPolicy,
190  const comments::CommandTraits *Traits)
191  : NodeStreamer(OS), SM(SrcMgr), Ctx(Ctx), ASTNameGen(Ctx),
192  PrintPolicy(PrintPolicy), Traits(Traits), LastLocLine(0),
193  LastLocPresumedLine(0) {}
194 
195  void Visit(const Attr *A);
196  void Visit(const Stmt *Node);
197  void Visit(const Type *T);
198  void Visit(QualType T);
199  void Visit(const Decl *D);
200 
201  void Visit(const comments::Comment *C, const comments::FullComment *FC);
202  void Visit(const TemplateArgument &TA, SourceRange R = {},
203  const Decl *From = nullptr, StringRef Label = {});
204  void Visit(const CXXCtorInitializer *Init);
205  void Visit(const OMPClause *C);
206  void Visit(const BlockDecl::Capture &C);
208  void Visit(const concepts::Requirement *R);
209  void Visit(const APValue &Value, QualType Ty);
210 
211  void VisitTypedefType(const TypedefType *TT);
212  void VisitUsingType(const UsingType *TT);
213  void VisitFunctionType(const FunctionType *T);
214  void VisitFunctionProtoType(const FunctionProtoType *T);
215  void VisitRValueReferenceType(const ReferenceType *RT);
216  void VisitArrayType(const ArrayType *AT);
217  void VisitConstantArrayType(const ConstantArrayType *CAT);
218  void VisitDependentSizedExtVectorType(const DependentSizedExtVectorType *VT);
219  void VisitVectorType(const VectorType *VT);
220  void VisitUnresolvedUsingType(const UnresolvedUsingType *UUT);
221  void VisitUnaryTransformType(const UnaryTransformType *UTT);
222  void VisitTagType(const TagType *TT);
223  void VisitTemplateTypeParmType(const TemplateTypeParmType *TTPT);
224  void VisitSubstTemplateTypeParmType(const SubstTemplateTypeParmType *STTPT);
225  void
226  VisitSubstTemplateTypeParmPackType(const SubstTemplateTypeParmPackType *T);
227  void VisitAutoType(const AutoType *AT);
228  void VisitTemplateSpecializationType(const TemplateSpecializationType *TST);
229  void VisitInjectedClassNameType(const InjectedClassNameType *ICNT);
230  void VisitObjCInterfaceType(const ObjCInterfaceType *OIT);
231  void VisitPackExpansionType(const PackExpansionType *PET);
232  void VisitElaboratedType(const ElaboratedType *ET);
233  void VisitMacroQualifiedType(const MacroQualifiedType *MQT);
234  void VisitMemberPointerType(const MemberPointerType *MPT);
235 
236  void VisitNamedDecl(const NamedDecl *ND);
237  void VisitTypedefDecl(const TypedefDecl *TD);
238  void VisitTypeAliasDecl(const TypeAliasDecl *TAD);
239  void VisitNamespaceDecl(const NamespaceDecl *ND);
240  void VisitUsingDirectiveDecl(const UsingDirectiveDecl *UDD);
241  void VisitNamespaceAliasDecl(const NamespaceAliasDecl *NAD);
242  void VisitUsingDecl(const UsingDecl *UD);
243  void VisitUsingEnumDecl(const UsingEnumDecl *UED);
244  void VisitUsingShadowDecl(const UsingShadowDecl *USD);
245  void VisitVarDecl(const VarDecl *VD);
246  void VisitFieldDecl(const FieldDecl *FD);
247  void VisitFunctionDecl(const FunctionDecl *FD);
248  void VisitEnumDecl(const EnumDecl *ED);
249  void VisitEnumConstantDecl(const EnumConstantDecl *ECD);
250  void VisitRecordDecl(const RecordDecl *RD);
251  void VisitCXXRecordDecl(const CXXRecordDecl *RD);
252  void VisitHLSLBufferDecl(const HLSLBufferDecl *D);
253  void VisitTemplateTypeParmDecl(const TemplateTypeParmDecl *D);
254  void VisitNonTypeTemplateParmDecl(const NonTypeTemplateParmDecl *D);
255  void VisitTemplateTemplateParmDecl(const TemplateTemplateParmDecl *D);
256  void VisitLinkageSpecDecl(const LinkageSpecDecl *LSD);
257  void VisitAccessSpecDecl(const AccessSpecDecl *ASD);
258  void VisitFriendDecl(const FriendDecl *FD);
259 
260  void VisitObjCIvarDecl(const ObjCIvarDecl *D);
261  void VisitObjCMethodDecl(const ObjCMethodDecl *D);
262  void VisitObjCTypeParamDecl(const ObjCTypeParamDecl *D);
263  void VisitObjCCategoryDecl(const ObjCCategoryDecl *D);
264  void VisitObjCCategoryImplDecl(const ObjCCategoryImplDecl *D);
265  void VisitObjCProtocolDecl(const ObjCProtocolDecl *D);
266  void VisitObjCInterfaceDecl(const ObjCInterfaceDecl *D);
267  void VisitObjCImplementationDecl(const ObjCImplementationDecl *D);
268  void VisitObjCCompatibleAliasDecl(const ObjCCompatibleAliasDecl *D);
269  void VisitObjCPropertyDecl(const ObjCPropertyDecl *D);
270  void VisitObjCPropertyImplDecl(const ObjCPropertyImplDecl *D);
271  void VisitBlockDecl(const BlockDecl *D);
272 
273  void VisitDeclRefExpr(const DeclRefExpr *DRE);
274  void VisitSYCLUniqueStableNameExpr(const SYCLUniqueStableNameExpr *E);
275  void VisitPredefinedExpr(const PredefinedExpr *PE);
276  void VisitUnaryOperator(const UnaryOperator *UO);
277  void VisitBinaryOperator(const BinaryOperator *BO);
278  void VisitCompoundAssignOperator(const CompoundAssignOperator *CAO);
279  void VisitMemberExpr(const MemberExpr *ME);
280  void VisitCXXNewExpr(const CXXNewExpr *NE);
281  void VisitCXXDeleteExpr(const CXXDeleteExpr *DE);
282  void VisitCXXThisExpr(const CXXThisExpr *TE);
283  void VisitCastExpr(const CastExpr *CE);
284  void VisitImplicitCastExpr(const ImplicitCastExpr *ICE);
285  void VisitCallExpr(const CallExpr *CE);
286  void VisitUnaryExprOrTypeTraitExpr(const UnaryExprOrTypeTraitExpr *TTE);
287  void VisitSizeOfPackExpr(const SizeOfPackExpr *SOPE);
288  void VisitUnresolvedLookupExpr(const UnresolvedLookupExpr *ULE);
289  void VisitAddrLabelExpr(const AddrLabelExpr *ALE);
290  void VisitCXXTypeidExpr(const CXXTypeidExpr *CTE);
291  void VisitConstantExpr(const ConstantExpr *CE);
292  void VisitInitListExpr(const InitListExpr *ILE);
293  void VisitGenericSelectionExpr(const GenericSelectionExpr *GSE);
294  void VisitCXXUnresolvedConstructExpr(const CXXUnresolvedConstructExpr *UCE);
295  void VisitCXXConstructExpr(const CXXConstructExpr *CE);
296  void VisitExprWithCleanups(const ExprWithCleanups *EWC);
297  void VisitCXXBindTemporaryExpr(const CXXBindTemporaryExpr *BTE);
298  void VisitMaterializeTemporaryExpr(const MaterializeTemporaryExpr *MTE);
299  void VisitCXXDependentScopeMemberExpr(const CXXDependentScopeMemberExpr *ME);
300  void VisitRequiresExpr(const RequiresExpr *RE);
301 
302  void VisitObjCEncodeExpr(const ObjCEncodeExpr *OEE);
303  void VisitObjCMessageExpr(const ObjCMessageExpr *OME);
304  void VisitObjCBoxedExpr(const ObjCBoxedExpr *OBE);
305  void VisitObjCSelectorExpr(const ObjCSelectorExpr *OSE);
306  void VisitObjCProtocolExpr(const ObjCProtocolExpr *OPE);
307  void VisitObjCPropertyRefExpr(const ObjCPropertyRefExpr *OPRE);
308  void VisitObjCSubscriptRefExpr(const ObjCSubscriptRefExpr *OSRE);
309  void VisitObjCIvarRefExpr(const ObjCIvarRefExpr *OIRE);
310  void VisitObjCBoolLiteralExpr(const ObjCBoolLiteralExpr *OBLE);
311 
312  void VisitIntegerLiteral(const IntegerLiteral *IL);
313  void VisitCharacterLiteral(const CharacterLiteral *CL);
314  void VisitFixedPointLiteral(const FixedPointLiteral *FPL);
315  void VisitFloatingLiteral(const FloatingLiteral *FL);
316  void VisitStringLiteral(const StringLiteral *SL);
317  void VisitCXXBoolLiteralExpr(const CXXBoolLiteralExpr *BLE);
318 
319  void VisitIfStmt(const IfStmt *IS);
320  void VisitSwitchStmt(const SwitchStmt *SS);
321  void VisitCaseStmt(const CaseStmt *CS);
322  void VisitLabelStmt(const LabelStmt *LS);
323  void VisitGotoStmt(const GotoStmt *GS);
324  void VisitWhileStmt(const WhileStmt *WS);
325  void VisitObjCAtCatchStmt(const ObjCAtCatchStmt *OACS);
326  void VisitCompoundStmt(const CompoundStmt *IS);
327 
328  void VisitNullTemplateArgument(const TemplateArgument &TA);
329  void VisitTypeTemplateArgument(const TemplateArgument &TA);
330  void VisitDeclarationTemplateArgument(const TemplateArgument &TA);
331  void VisitNullPtrTemplateArgument(const TemplateArgument &TA);
332  void VisitIntegralTemplateArgument(const TemplateArgument &TA);
333  void VisitTemplateTemplateArgument(const TemplateArgument &TA);
334  void VisitTemplateExpansionTemplateArgument(const TemplateArgument &TA);
335  void VisitExpressionTemplateArgument(const TemplateArgument &TA);
336  void VisitPackTemplateArgument(const TemplateArgument &TA);
337 
338  void visitTextComment(const comments::TextComment *C,
339  const comments::FullComment *);
340  void visitInlineCommandComment(const comments::InlineCommandComment *C,
341  const comments::FullComment *);
342  void visitHTMLStartTagComment(const comments::HTMLStartTagComment *C,
343  const comments::FullComment *);
344  void visitHTMLEndTagComment(const comments::HTMLEndTagComment *C,
345  const comments::FullComment *);
346  void visitBlockCommandComment(const comments::BlockCommandComment *C,
347  const comments::FullComment *);
348  void visitParamCommandComment(const comments::ParamCommandComment *C,
349  const comments::FullComment *FC);
350  void visitTParamCommandComment(const comments::TParamCommandComment *C,
351  const comments::FullComment *FC);
352  void visitVerbatimBlockComment(const comments::VerbatimBlockComment *C,
353  const comments::FullComment *);
354  void
355  visitVerbatimBlockLineComment(const comments::VerbatimBlockLineComment *C,
356  const comments::FullComment *);
357  void visitVerbatimLineComment(const comments::VerbatimLineComment *C,
358  const comments::FullComment *);
359 };
360 
361 class JSONDumper : public ASTNodeTraverser<JSONDumper, JSONNodeDumper> {
362  JSONNodeDumper NodeDumper;
363 
364  template <typename SpecializationDecl>
365  void writeTemplateDeclSpecialization(const SpecializationDecl *SD,
366  bool DumpExplicitInst,
367  bool DumpRefOnly) {
368  bool DumpedAny = false;
369  for (const auto *RedeclWithBadType : SD->redecls()) {
370  // FIXME: The redecls() range sometimes has elements of a less-specific
371  // type. (In particular, ClassTemplateSpecializationDecl::redecls() gives
372  // us TagDecls, and should give CXXRecordDecls).
373  const auto *Redecl = dyn_cast<SpecializationDecl>(RedeclWithBadType);
374  if (!Redecl) {
375  // Found the injected-class-name for a class template. This will be
376  // dumped as part of its surrounding class so we don't need to dump it
377  // here.
378  assert(isa<CXXRecordDecl>(RedeclWithBadType) &&
379  "expected an injected-class-name");
380  continue;
381  }
382 
383  switch (Redecl->getTemplateSpecializationKind()) {
386  if (!DumpExplicitInst)
387  break;
388  [[fallthrough]];
389  case TSK_Undeclared:
391  if (DumpRefOnly)
392  NodeDumper.AddChild([=] { NodeDumper.writeBareDeclRef(Redecl); });
393  else
394  Visit(Redecl);
395  DumpedAny = true;
396  break;
398  break;
399  }
400  }
401 
402  // Ensure we dump at least one decl for each specialization.
403  if (!DumpedAny)
404  NodeDumper.AddChild([=] { NodeDumper.writeBareDeclRef(SD); });
405  }
406 
407  template <typename TemplateDecl>
408  void writeTemplateDecl(const TemplateDecl *TD, bool DumpExplicitInst) {
409  // FIXME: it would be nice to dump template parameters and specializations
410  // to their own named arrays rather than shoving them into the "inner"
411  // array. However, template declarations are currently being handled at the
412  // wrong "level" of the traversal hierarchy and so it is difficult to
413  // achieve without losing information elsewhere.
414 
416 
417  Visit(TD->getTemplatedDecl());
418 
419  for (const auto *Child : TD->specializations())
420  writeTemplateDeclSpecialization(Child, DumpExplicitInst,
421  !TD->isCanonicalDecl());
422  }
423 
424 public:
425  JSONDumper(raw_ostream &OS, const SourceManager &SrcMgr, ASTContext &Ctx,
426  const PrintingPolicy &PrintPolicy,
427  const comments::CommandTraits *Traits)
428  : NodeDumper(OS, SrcMgr, Ctx, PrintPolicy, Traits) {}
429 
430  JSONNodeDumper &doGetNodeDelegate() { return NodeDumper; }
431 
433  writeTemplateDecl(FTD, true);
434  }
436  writeTemplateDecl(CTD, false);
437  }
439  writeTemplateDecl(VTD, false);
440  }
441 };
442 
443 } // namespace clang
444 
445 #endif // LLVM_CLANG_AST_JSONNODEDUMPER_H
clang::TemplateDecl::getTemplatedDecl
NamedDecl * getTemplatedDecl() const
Get the underlying, templated declaration.
Definition: DeclTemplate.h:440
clang::JSONNodeDumper::VisitUnaryTransformType
void VisitUnaryTransformType(const UnaryTransformType *UTT)
Definition: JSONNodeDumper.cpp:671
clang::JSONNodeDumper::VisitLinkageSpecDecl
void VisitLinkageSpecDecl(const LinkageSpecDecl *LSD)
Definition: JSONNodeDumper.cpp:972
clang::JSONNodeDumper::VisitFieldDecl
void VisitFieldDecl(const FieldDecl *FD)
Definition: JSONNodeDumper.cpp:858
clang::JSONNodeDumper::VisitObjCIvarRefExpr
void VisitObjCIvarRefExpr(const ObjCIvarRefExpr *OIRE)
Definition: JSONNodeDumper.cpp:1218
clang::JSONNodeDumper::VisitObjCBoolLiteralExpr
void VisitObjCBoolLiteralExpr(const ObjCBoolLiteralExpr *OBLE)
Definition: JSONNodeDumper.cpp:1224
clang::JSONNodeDumper::visitVerbatimLineComment
void visitVerbatimLineComment(const comments::VerbatimLineComment *C, const comments::FullComment *)
Definition: JSONNodeDumper.cpp:1719
clang::JSONNodeDumper::VisitObjCSelectorExpr
void VisitObjCSelectorExpr(const ObjCSelectorExpr *OSE)
Definition: JSONNodeDumper.cpp:1178
clang::JSONNodeDumper::VisitSubstTemplateTypeParmPackType
void VisitSubstTemplateTypeParmPackType(const SubstTemplateTypeParmPackType *T)
Definition: JSONNodeDumper.cpp:700
clang::JSONNodeDumper::visitParamCommandComment
void visitParamCommandComment(const comments::ParamCommandComment *C, const comments::FullComment *FC)
Definition: JSONNodeDumper.cpp:1669
clang::GenericSelectionExpr::ConstAssociation
AssociationTy< true > ConstAssociation
Definition: Expr.h:5792
clang::JSONNodeDumper::VisitObjCProtocolDecl
void VisitObjCProtocolDecl(const ObjCProtocolDecl *D)
Definition: JSONNodeDumper.cpp:1045
clang::JSONNodeDumper::VisitObjCBoxedExpr
void VisitObjCBoxedExpr(const ObjCBoxedExpr *OBE)
Definition: JSONNodeDumper.cpp:1168
clang::SourceRange
A trivial tuple used to represent a source range.
Definition: SourceLocation.h:210
string
string(SUBSTRING ${CMAKE_CURRENT_BINARY_DIR} 0 ${PATH_LIB_START} PATH_HEAD) string(SUBSTRING $
Definition: CMakeLists.txt:22
clang::JSONNodeDumper::VisitSubstTemplateTypeParmType
void VisitSubstTemplateTypeParmType(const SubstTemplateTypeParmType *STTPT)
Definition: JSONNodeDumper.cpp:693
clang::JSONNodeDumper::VisitUsingDecl
void VisitUsingDecl(const UsingDecl *UD)
Definition: JSONNodeDumper.cpp:814
clang::ASTNodeTraverser< JSONDumper, JSONNodeDumper >::dumpTemplateParameters
void dumpTemplateParameters(const TemplateParameterList *TPL)
Definition: ASTNodeTraverser.h:301
clang::JSONNodeDumper::VisitTemplateTypeParmType
void VisitTemplateTypeParmType(const TemplateTypeParmType *TTPT)
Definition: JSONNodeDumper.cpp:685
clang::JSONNodeDumper::VisitFloatingLiteral
void VisitFloatingLiteral(const FloatingLiteral *FL)
Definition: JSONNodeDumper.cpp:1507
clang::JSONNodeDumper::VisitObjCMessageExpr
void VisitObjCMessageExpr(const ObjCMessageExpr *OME)
Definition: JSONNodeDumper.cpp:1138
clang::JSONNodeDumper::VisitObjCPropertyRefExpr
void VisitObjCPropertyRefExpr(const ObjCPropertyRefExpr *OPRE)
Definition: JSONNodeDumper.cpp:1190
clang::JSONNodeDumper::VisitCXXNewExpr
void VisitCXXNewExpr(const CXXNewExpr *NE)
Definition: JSONNodeDumper.cpp:1285
clang::JSONNodeDumper::VisitTypedefType
void VisitTypedefType(const TypedefType *TT)
Definition: JSONNodeDumper.cpp:531
clang::JSONNodeDumper::VisitInjectedClassNameType
void VisitInjectedClassNameType(const InjectedClassNameType *ICNT)
Definition: JSONNodeDumper.cpp:730
llvm::SmallVector
Definition: LLVM.h:38
clang::SourceLocation
Encodes a location in the source.
Definition: SourceLocation.h:86
clang::JSONNodeDumper::VisitDependentSizedExtVectorType
void VisitDependentSizedExtVectorType(const DependentSizedExtVectorType *VT)
Definition: JSONNodeDumper.cpp:632
clang::JSONNodeDumper::VisitObjCIvarDecl
void VisitObjCIvarDecl(const ObjCIvarDecl *D)
Definition: JSONNodeDumper.cpp:991
clang::JSONNodeDumper::VisitDeclRefExpr
void VisitDeclRefExpr(const DeclRefExpr *DRE)
Definition: JSONNodeDumper.cpp:1228
clang::JSONNodeDumper::VisitIntegralTemplateArgument
void VisitIntegralTemplateArgument(const TemplateArgument &TA)
Definition: JSONNodeDumper.cpp:1573
clang::ASTNameGenerator
Definition: Mangle.h:295
clang::TSK_Undeclared
@ TSK_Undeclared
This template specialization was formed from a template-id but has not yet been declared,...
Definition: Specifiers.h:179
clang::JSONNodeDumper::VisitCXXDependentScopeMemberExpr
void VisitCXXDependentScopeMemberExpr(const CXXDependentScopeMemberExpr *ME)
Definition: JSONNodeDumper.cpp:1469
clang::QualType
A (possibly-)qualified type.
Definition: Type.h:737
AttributeLangSupport::C
@ C
Definition: SemaDeclAttr.cpp:56
clang::JSONNodeDumper::VisitUnaryExprOrTypeTraitExpr
void VisitUnaryExprOrTypeTraitExpr(const UnaryExprOrTypeTraitExpr *TTE)
Definition: JSONNodeDumper.cpp:1331
clang::JSONNodeDumper::VisitNamedDecl
void VisitNamedDecl(const NamedDecl *ND)
Definition: JSONNodeDumper.cpp:764
clang::JSONNodeDumper::VisitNamespaceDecl
void VisitNamespaceDecl(const NamespaceDecl *ND)
Definition: JSONNodeDumper.cpp:794
clang::JSONNodeDumper::VisitTypeTemplateArgument
void VisitTypeTemplateArgument(const TemplateArgument &TA)
Definition: JSONNodeDumper.cpp:1563
clang::JSONNodeDumper::VisitHLSLBufferDecl
void VisitHLSLBufferDecl(const HLSLBufferDecl *D)
Definition: JSONNodeDumper.cpp:919
clang::JSONNodeDumper::VisitCXXUnresolvedConstructExpr
void VisitCXXUnresolvedConstructExpr(const CXXUnresolvedConstructExpr *UCE)
Definition: JSONNodeDumper.cpp:1383
clang::JSONNodeDumper::VisitFriendDecl
void VisitFriendDecl(const FriendDecl *FD)
Definition: JSONNodeDumper.cpp:986
clang::JSONNodeDumper::VisitAccessSpecDecl
void VisitAccessSpecDecl(const AccessSpecDecl *ASD)
Definition: JSONNodeDumper.cpp:982
clang::JSONNodeDumper::VisitExpressionTemplateArgument
void VisitExpressionTemplateArgument(const TemplateArgument &TA)
Definition: JSONNodeDumper.cpp:1585
clang::JSONNodeDumper::visitTextComment
void visitTextComment(const comments::TextComment *C, const comments::FullComment *)
Definition: JSONNodeDumper.cpp:1602
clang::JSONDumper
Definition: JSONNodeDumper.h:361
clang::JSONDumper::JSONDumper
JSONDumper(raw_ostream &OS, const SourceManager &SrcMgr, ASTContext &Ctx, const PrintingPolicy &PrintPolicy, const comments::CommandTraits *Traits)
Definition: JSONNodeDumper.h:425
clang::PrintingPolicy
Describes how types, statements, expressions, and declarations should be printed.
Definition: PrettyPrinter.h:57
clang::JSONNodeDumper::VisitSizeOfPackExpr
void VisitSizeOfPackExpr(const SizeOfPackExpr *SOPE)
Definition: JSONNodeDumper.cpp:1338
clang::JSONNodeDumper::VisitMemberPointerType
void VisitMemberPointerType(const MemberPointerType *MPT)
Definition: JSONNodeDumper.cpp:759
clang::JSONNodeDumper::VisitDeclarationTemplateArgument
void VisitDeclarationTemplateArgument(const TemplateArgument &TA)
Definition: JSONNodeDumper.cpp:1566
clang::JSONNodeDumper::VisitWhileStmt
void VisitWhileStmt(const WhileStmt *WS)
Definition: JSONNodeDumper.cpp:1549
clang::JSONNodeDumper::VisitCXXConstructExpr
void VisitCXXConstructExpr(const CXXConstructExpr *CE)
Definition: JSONNodeDumper.cpp:1390
clang::JSONDumper::doGetNodeDelegate
JSONNodeDumper & doGetNodeDelegate()
Definition: JSONNodeDumper.h:430
clang::JSONNodeDumper::VisitUnaryOperator
void VisitUnaryOperator(const UnaryOperator *UO)
Definition: JSONNodeDumper.cpp:1251
clang::SourceManager
This class handles loading and caching of source files into memory.
Definition: SourceManager.h:637
clang::JSONNodeDumper::VisitTemplateExpansionTemplateArgument
void VisitTemplateExpansionTemplateArgument(const TemplateArgument &TA)
Definition: JSONNodeDumper.cpp:1580
clang::Type
The base class of the type hierarchy.
Definition: Type.h:1565
ExprConcepts.h
clang::JSONNodeDumper::VisitUsingEnumDecl
void VisitUsingEnumDecl(const UsingEnumDecl *UED)
Definition: JSONNodeDumper.cpp:824
clang::FunctionTemplateDecl
Declaration of a template function.
Definition: DeclTemplate.h:1006
ASTNodeTraverser.h
clang::JSONNodeDumper::VisitTemplateTypeParmDecl
void VisitTemplateTypeParmDecl(const TemplateTypeParmDecl *D)
Definition: JSONNodeDumper.cpp:924
clang::comments::Comment
Any part of the comment.
Definition: Comment.h:52
clang::JSONNodeDumper::VisitImplicitCastExpr
void VisitImplicitCastExpr(const ImplicitCastExpr *ICE)
Definition: JSONNodeDumper.cpp:1322
clang::TSK_ExplicitInstantiationDeclaration
@ TSK_ExplicitInstantiationDeclaration
This template specialization was instantiated from a template due to an explicit instantiation declar...
Definition: Specifiers.h:190
clang::JSONNodeDumper::VisitSYCLUniqueStableNameExpr
void VisitSYCLUniqueStableNameExpr(const SYCLUniqueStableNameExpr *E)
Definition: JSONNodeDumper.cpp:1241
clang::ConstTemplateArgumentVisitor
A simple visitor class that helps create template argument visitors.
Definition: TemplateArgumentVisitor.h:92
clang::JSONNodeDumper::VisitUsingType
void VisitUsingType(const UsingType *TT)
Definition: JSONNodeDumper.cpp:537
clang::JSONNodeDumper::VisitPredefinedExpr
void VisitPredefinedExpr(const PredefinedExpr *PE)
Definition: JSONNodeDumper.cpp:1247
clang::JSONNodeDumper::VisitObjCAtCatchStmt
void VisitObjCAtCatchStmt(const ObjCAtCatchStmt *OACS)
Definition: JSONNodeDumper.cpp:1553
clang::JSONNodeDumper::VisitCompoundAssignOperator
void VisitCompoundAssignOperator(const CompoundAssignOperator *CAO)
Definition: JSONNodeDumper.cpp:1262
Node
DynTypedNode Node
Definition: ASTMatchFinder.cpp:68
clang::NodeStreamer::AddChild
void AddChild(Fn DoAddChild)
Add a child of the current node. Calls DoAddChild without arguments.
Definition: JSONNodeDumper.h:43
clang::JSONNodeDumper::VisitAutoType
void VisitAutoType(const AutoType *AT)
Definition: JSONNodeDumper.cpp:705
clang::JSONNodeDumper::VisitObjCTypeParamDecl
void VisitObjCTypeParamDecl(const ObjCTypeParamDecl *D)
Definition: JSONNodeDumper.cpp:1011
clang::JSONNodeDumper::VisitPackExpansionType
void VisitPackExpansionType(const PackExpansionType *PET)
Definition: JSONNodeDumper.cpp:739
clang::JSONNodeDumper::VisitCharacterLiteral
void VisitCharacterLiteral(const CharacterLiteral *CL)
Definition: JSONNodeDumper.cpp:1497
clang::JSONNodeDumper::VisitObjCCompatibleAliasDecl
void VisitObjCCompatibleAliasDecl(const ObjCCompatibleAliasDecl *D)
Definition: JSONNodeDumper.cpp:1074
clang::JSONNodeDumper::VisitObjCPropertyImplDecl
void VisitObjCPropertyImplDecl(const ObjCPropertyImplDecl *D)
Definition: JSONNodeDumper.cpp:1119
clang::FPOptionsOverride
Represents difference between two FPOptions values.
Definition: LangOptions.h:803
clang::ASTContext
Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...
Definition: ASTContext.h:182
clang::ASTNodeTraverser
ASTNodeTraverser traverses the Clang AST for dumping purposes.
Definition: ASTNodeTraverser.h:61
Depth
int Depth
Definition: ASTDiff.cpp:189
ASTDumperUtils.h
clang::TemplateArgument
Represents a template argument.
Definition: TemplateBase.h:61
clang::JSONNodeDumper::VisitObjCProtocolExpr
void VisitObjCProtocolExpr(const ObjCProtocolExpr *OPE)
Definition: JSONNodeDumper.cpp:1186
clang::JSONNodeDumper::VisitIntegerLiteral
void VisitIntegerLiteral(const IntegerLiteral *IL)
Definition: JSONNodeDumper.cpp:1491
clang::JSONNodeDumper::VisitCXXBindTemporaryExpr
void VisitCXXBindTemporaryExpr(const CXXBindTemporaryExpr *BTE)
Definition: JSONNodeDumper.cpp:1435
clang::JSONNodeDumper::VisitObjCInterfaceDecl
void VisitObjCInterfaceDecl(const ObjCInterfaceDecl *D)
Definition: JSONNodeDumper.cpp:1055
clang::comments::FullComment
A full comment attached to a declaration, contains block content.
Definition: Comment.h:1077
clang::JSONNodeDumper::VisitIfStmt
void VisitIfStmt(const IfStmt *IS)
Definition: JSONNodeDumper.cpp:1522
Type.h
clang::JSONNodeDumper::VisitNonTypeTemplateParmDecl
void VisitNonTypeTemplateParmDecl(const NonTypeTemplateParmDecl *D)
Definition: JSONNodeDumper.cpp:939
clang::JSONNodeDumper::VisitExprWithCleanups
void VisitExprWithCleanups(const ExprWithCleanups *EWC)
Definition: JSONNodeDumper.cpp:1415
ASTContext.h
clang::JSONNodeDumper::VisitMaterializeTemporaryExpr
void VisitMaterializeTemporaryExpr(const MaterializeTemporaryExpr *MTE)
Definition: JSONNodeDumper.cpp:1443
clang::JSONNodeDumper::VisitElaboratedType
void VisitElaboratedType(const ElaboratedType *ET)
Definition: JSONNodeDumper.cpp:744
clang::JSONNodeDumper::VisitObjCEncodeExpr
void VisitObjCEncodeExpr(const ObjCEncodeExpr *OEE)
Definition: JSONNodeDumper.cpp:1134
clang::TSK_ExplicitInstantiationDefinition
@ TSK_ExplicitInstantiationDefinition
This template specialization was instantiated from a template due to an explicit instantiation defini...
Definition: Specifiers.h:194
clang::JSONNodeDumper::VisitTypeAliasDecl
void VisitTypeAliasDecl(const TypeAliasDecl *TAD)
Definition: JSONNodeDumper.cpp:789
clang::JSONNodeDumper::VisitObjCCategoryDecl
void VisitObjCCategoryDecl(const ObjCCategoryDecl *D)
Definition: JSONNodeDumper.cpp:1027
clang::JSONNodeDumper::VisitCaseStmt
void VisitCaseStmt(const CaseStmt *CS)
Definition: JSONNodeDumper.cpp:1535
clang::JSONNodeDumper::visitVerbatimBlockComment
void visitVerbatimBlockComment(const comments::VerbatimBlockComment *C, const comments::FullComment *)
Definition: JSONNodeDumper.cpp:1707
clang::TypeVisitor
An operation on a type.
Definition: TypeVisitor.h:64
ExprCXX.h
clang::JSONNodeDumper::VisitArrayType
void VisitArrayType(const ArrayType *AT)
Definition: JSONNodeDumper.cpp:608
Label
std::string Label
Definition: UsingDeclarationsSorter.cpp:69
clang::JSONNodeDumper::VisitRecordDecl
void VisitRecordDecl(const RecordDecl *RD)
Definition: JSONNodeDumper.cpp:898
clang::JSONNodeDumper::VisitNullPtrTemplateArgument
void VisitNullPtrTemplateArgument(const TemplateArgument &TA)
Definition: JSONNodeDumper.cpp:1570
clang::ConstAttrVisitor
A simple visitor class that helps create attribute visitors.
Definition: AttrVisitor.h:69
clang::JSONNodeDumper::VisitFunctionProtoType
void VisitFunctionProtoType(const FunctionProtoType *T)
Definition: JSONNodeDumper.cpp:552
clang::NodeStreamer::JOS
llvm::json::OStream JOS
Definition: JSONNodeDumper.h:39
clang::TemplateDecl::getTemplateParameters
TemplateParameterList * getTemplateParameters() const
Get the list of template parameters.
Definition: DeclTemplate.h:427
clang::JSONNodeDumper::VisitTemplateSpecializationType
void VisitTemplateSpecializationType(const TemplateSpecializationType *TST)
Definition: JSONNodeDumper.cpp:720
clang::JSONNodeDumper::JSONNodeDumper
JSONNodeDumper(raw_ostream &OS, const SourceManager &SrcMgr, ASTContext &Ctx, const PrintingPolicy &PrintPolicy, const comments::CommandTraits *Traits)
Definition: JSONNodeDumper.h:188
clang::AccessSpecifier
AccessSpecifier
A C++ access specifier (public, private, protected), plus the special value "none" which means differ...
Definition: Specifiers.h:111
clang::JSONNodeDumper::VisitCXXBoolLiteralExpr
void VisitCXXBoolLiteralExpr(const CXXBoolLiteralExpr *BLE)
Definition: JSONNodeDumper.cpp:1518
clang::JSONNodeDumper::VisitFixedPointLiteral
void VisitFixedPointLiteral(const FixedPointLiteral *FPL)
Definition: JSONNodeDumper.cpp:1504
clang::CXXRecordDecl
Represents a C++ struct/union/class.
Definition: DeclCXX.h:254
clang::RISCV::TA
@ TA
Definition: RISCVVIntrinsicUtils.h:98
clang::NodeStreamer
Definition: JSONNodeDumper.h:33
clang::JSONNodeDumper::VisitObjCInterfaceType
void VisitObjCInterfaceType(const ObjCInterfaceType *OIT)
Definition: JSONNodeDumper.cpp:735
clang::JSONDumper::VisitFunctionTemplateDecl
void VisitFunctionTemplateDecl(const FunctionTemplateDecl *FTD)
Definition: JSONNodeDumper.h:432
clang::JSONNodeDumper::VisitVectorType
void VisitVectorType(const VectorType *VT)
Definition: JSONNodeDumper.cpp:638
clang::JSONNodeDumper::VisitBinaryOperator
void VisitBinaryOperator(const BinaryOperator *BO)
Definition: JSONNodeDumper.cpp:1258
clang::JSONNodeDumper::Visit
void Visit(const Attr *A)
Definition: JSONNodeDumper.cpp:22
clang::ClassTemplateDecl
Declaration of a class template.
Definition: DeclTemplate.h:2270
clang::ConstDeclVisitor
A simple visitor class that helps create declaration visitors.
Definition: DeclVisitor.h:73
clang::JSONDumper::VisitVarTemplateDecl
void VisitVarTemplateDecl(const VarTemplateDecl *VTD)
Definition: JSONNodeDumper.h:438
clang::JSONNodeDumper::VisitUsingDirectiveDecl
void VisitUsingDirectiveDecl(const UsingDirectiveDecl *UDD)
Definition: JSONNodeDumper.cpp:803
clang::JSONNodeDumper::VisitUnresolvedUsingType
void VisitUnresolvedUsingType(const UnresolvedUsingType *UUT)
Definition: JSONNodeDumper.cpp:667
clang::JSONNodeDumper::visitHTMLStartTagComment
void visitHTMLStartTagComment(const comments::HTMLStartTagComment *C, const comments::FullComment *)
Definition: JSONNodeDumper.cpp:1637
clang::TemplateDecl
The base class of all kinds of template declarations (e.g., class, function, etc.).
Definition: DeclTemplate.h:408
clang::JSONNodeDumper::VisitUsingShadowDecl
void VisitUsingShadowDecl(const UsingShadowDecl *USD)
Definition: JSONNodeDumper.cpp:828
clang::NodeStreamer::AddChild
void AddChild(StringRef Label, Fn DoAddChild)
Add a child of the current node with an optional label.
Definition: JSONNodeDumper.h:49
clang::JSONNodeDumper::VisitMemberExpr
void VisitMemberExpr(const MemberExpr *ME)
Definition: JSONNodeDumper.cpp:1270
Value
Value
Definition: UninitializedValues.cpp:103
clang::Decl
Decl - This represents one declaration (or definition), e.g.
Definition: DeclBase.h:83
clang::JSONNodeDumper::VisitVarDecl
void VisitVarDecl(const VarDecl *VD)
Definition: JSONNodeDumper.cpp:832
clang::JSONNodeDumper::VisitUnresolvedLookupExpr
void VisitUnresolvedLookupExpr(const UnresolvedLookupExpr *ULE)
Definition: JSONNodeDumper.cpp:1342
clang::JSONNodeDumper::visitInlineCommandComment
void visitInlineCommandComment(const comments::InlineCommandComment *C, const comments::FullComment *)
Definition: JSONNodeDumper.cpp:1607
clang::JSONNodeDumper::VisitTemplateTemplateArgument
void VisitTemplateTemplateArgument(const TemplateArgument &TA)
Definition: JSONNodeDumper.cpp:1576
clang::JSONNodeDumper::VisitCXXDeleteExpr
void VisitCXXDeleteExpr(const CXXDeleteExpr *DE)
Definition: JSONNodeDumper.cpp:1299
clang::ASTNodeTraverser< JSONDumper, JSONNodeDumper >::Visit
void Visit(const Decl *D)
Definition: ASTNodeTraverser.h:88
clang::TSK_ExplicitSpecialization
@ TSK_ExplicitSpecialization
This template specialization was declared or defined by an explicit specialization (C++ [temp....
Definition: Specifiers.h:186
clang::ConstStmtVisitor
ConstStmtVisitor - This class implements a simple visitor for Stmt subclasses.
Definition: StmtVisitor.h:193
clang::JSONNodeDumper::VisitBlockDecl
void VisitBlockDecl(const BlockDecl *D)
Definition: JSONNodeDumper.cpp:1129
clang::JSONNodeDumper::VisitObjCSubscriptRefExpr
void VisitObjCSubscriptRefExpr(const ObjCSubscriptRefExpr *OSRE)
Definition: JSONNodeDumper.cpp:1207
clang::JSONNodeDumper::VisitTypedefDecl
void VisitTypedefDecl(const TypedefDecl *TD)
Definition: JSONNodeDumper.cpp:784
clang::JSONNodeDumper::VisitFunctionType
void VisitFunctionType(const FunctionType *T)
Definition: JSONNodeDumper.cpp:543
clang::JSONNodeDumper::visitTParamCommandComment
void visitTParamCommandComment(const comments::TParamCommandComment *C, const comments::FullComment *FC)
Definition: JSONNodeDumper.cpp:1692
clang::JSONNodeDumper::VisitAddrLabelExpr
void VisitAddrLabelExpr(const AddrLabelExpr *ALE)
Definition: JSONNodeDumper.cpp:1353
clang::JSONNodeDumper::VisitLabelStmt
void VisitLabelStmt(const LabelStmt *LS)
Definition: JSONNodeDumper.cpp:1539
clang::JSONNodeDumper::VisitConstantExpr
void VisitConstantExpr(const ConstantExpr *CE)
Definition: JSONNodeDumper.cpp:1368
clang::JSONNodeDumper::VisitInitListExpr
void VisitInitListExpr(const InitListExpr *ILE)
Definition: JSONNodeDumper.cpp:1373
clang::JSONNodeDumper::VisitGotoStmt
void VisitGotoStmt(const GotoStmt *GS)
Definition: JSONNodeDumper.cpp:1544
clang::interp::NE
bool NE(InterpState &S, CodePtr OpPC)
Definition: Interp.h:490
clang::NodeStreamer::NodeStreamer
NodeStreamer(raw_ostream &OS)
Definition: JSONNodeDumper.h:108
clang::JSONNodeDumper::VisitCastExpr
void VisitCastExpr(const CastExpr *CE)
Definition: JSONNodeDumper.cpp:1311
clang
Definition: CalledOnceCheck.h:17
clang::JSONNodeDumper::VisitRValueReferenceType
void VisitRValueReferenceType(const ReferenceType *RT)
Definition: JSONNodeDumper.cpp:604
clang::JSONNodeDumper::VisitGenericSelectionExpr
void VisitGenericSelectionExpr(const GenericSelectionExpr *GSE)
Definition: JSONNodeDumper.cpp:1378
clang::JSONNodeDumper::VisitSwitchStmt
void VisitSwitchStmt(const SwitchStmt *SS)
Definition: JSONNodeDumper.cpp:1531
clang::JSONNodeDumper::visitVerbatimBlockLineComment
void visitVerbatimBlockLineComment(const comments::VerbatimBlockLineComment *C, const comments::FullComment *)
Definition: JSONNodeDumper.cpp:1713
clang::Stmt
Stmt - This represents one statement.
Definition: Stmt.h:71
clang::JSONNodeDumper::VisitPackTemplateArgument
void VisitPackTemplateArgument(const TemplateArgument &TA)
Definition: JSONNodeDumper.cpp:1589
clang::JSONNodeDumper
Definition: JSONNodeDumper.h:116
clang::JSONNodeDumper::VisitMacroQualifiedType
void VisitMacroQualifiedType(const MacroQualifiedType *MQT)
Definition: JSONNodeDumper.cpp:755
clang::JSONNodeDumper::VisitRequiresExpr
void VisitRequiresExpr(const RequiresExpr *RE)
Definition: JSONNodeDumper.cpp:1486
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::JSONNodeDumper::visitBlockCommandComment
void visitBlockCommandComment(const comments::BlockCommandComment *C, const comments::FullComment *)
Definition: JSONNodeDumper.cpp:1657
clang::JSONNodeDumper::VisitTagType
void VisitTagType(const TagType *TT)
Definition: JSONNodeDumper.cpp:681
clang::JSONNodeDumper::VisitObjCCategoryImplDecl
void VisitObjCCategoryImplDecl(const ObjCCategoryImplDecl *D)
Definition: JSONNodeDumper.cpp:1039
clang::JSONNodeDumper::VisitObjCPropertyDecl
void VisitObjCPropertyDecl(const ObjCPropertyDecl *D)
Definition: JSONNodeDumper.cpp:1080
clang::JSONNodeDumper::VisitCXXTypeidExpr
void VisitCXXTypeidExpr(const CXXTypeidExpr *CTE)
Definition: JSONNodeDumper.cpp:1358
clang::JSONNodeDumper::VisitEnumConstantDecl
void VisitEnumConstantDecl(const EnumConstantDecl *ECD)
Definition: JSONNodeDumper.cpp:893
clang::JSONNodeDumper::VisitCompoundStmt
void VisitCompoundStmt(const CompoundStmt *IS)
Definition: JSONNodeDumper.cpp:1733
AttrVisitor.h
clang::JSONNodeDumper::VisitCallExpr
void VisitCallExpr(const CallExpr *CE)
Definition: JSONNodeDumper.cpp:1327
clang::JSONNodeDumper::VisitCXXRecordDecl
void VisitCXXRecordDecl(const CXXRecordDecl *RD)
Definition: JSONNodeDumper.cpp:903
CommentVisitor.h
Mangle.h
clang::JSONNodeDumper::VisitTemplateTemplateParmDecl
void VisitTemplateTemplateParmDecl(const TemplateTemplateParmDecl *D)
Definition: JSONNodeDumper.cpp:955
clang::JSONNodeDumper::VisitNamespaceAliasDecl
void VisitNamespaceAliasDecl(const NamespaceAliasDecl *NAD)
Definition: JSONNodeDumper.cpp:808
clang::PresumedLoc
Represents an unpacked "presumed" location which can be presented to the user.
Definition: SourceLocation.h:302
clang::JSONNodeDumper::VisitEnumDecl
void VisitEnumDecl(const EnumDecl *ED)
Definition: JSONNodeDumper.cpp:885
clang::JSONNodeDumper::VisitConstantArrayType
void VisitConstantArrayType(const ConstantArrayType *CAT)
Definition: JSONNodeDumper.cpp:625
clang::comments::CommandTraits
This class provides information about commands that can be used in comments.
Definition: CommentCommandTraits.h:127
clang::JSONDumper::VisitClassTemplateDecl
void VisitClassTemplateDecl(const ClassTemplateDecl *CTD)
Definition: JSONNodeDumper.h:435
clang::VarTemplateDecl
Declaration of a variable template.
Definition: DeclTemplate.h:3103
SM
#define SM(sm)
Definition: Cuda.cpp:79
clang::JSONNodeDumper::visitHTMLEndTagComment
void visitHTMLEndTagComment(const comments::HTMLEndTagComment *C, const comments::FullComment *)
Definition: JSONNodeDumper.cpp:1652
clang::JSONNodeDumper::VisitObjCMethodDecl
void VisitObjCMethodDecl(const ObjCMethodDecl *D)
Definition: JSONNodeDumper.cpp:1004
clang::TSK_ImplicitInstantiation
@ TSK_ImplicitInstantiation
This template specialization was implicitly instantiated from a template.
Definition: Specifiers.h:182
clang::CastExpr
CastExpr - Base class for type casts, including both implicit casts (ImplicitCastExpr) and explicit c...
Definition: Expr.h:3481
CommentCommandTraits.h
clang::comments::ConstCommentVisitor
Definition: CommentVisitor.h:62
clang::Decl::isCanonicalDecl
bool isCanonicalDecl() const
Whether this particular Decl is a canonical one.
Definition: DeclBase.h:949
clang::JSONNodeDumper::VisitNullTemplateArgument
void VisitNullTemplateArgument(const TemplateArgument &TA)
Definition: JSONNodeDumper.cpp:1560
clang::JSONNodeDumper::VisitCXXThisExpr
void VisitCXXThisExpr(const CXXThisExpr *TE)
Definition: JSONNodeDumper.cpp:1307
clang::JSONNodeDumper::VisitObjCImplementationDecl
void VisitObjCImplementationDecl(const ObjCImplementationDecl *D)
Definition: JSONNodeDumper.cpp:1067
clang::JSONNodeDumper::VisitFunctionDecl
void VisitFunctionDecl(const FunctionDecl *FD)
Definition: JSONNodeDumper.cpp:867
clang::JSONNodeDumper::VisitStringLiteral
void VisitStringLiteral(const StringLiteral *SL)
Definition: JSONNodeDumper.cpp:1512