clang  14.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  void writeBareDeclRef(const Decl *D);
164  llvm::json::Object createCXXRecordDefinitionData(const CXXRecordDecl *RD);
165  llvm::json::Object createCXXBaseSpecifier(const CXXBaseSpecifier &BS);
166  std::string createAccessSpecifier(AccessSpecifier AS);
167  llvm::json::Array createCastPath(const CastExpr *C);
168 
169  void writePreviousDeclImpl(...) {}
170 
171  template <typename T> void writePreviousDeclImpl(const Mergeable<T> *D) {
172  const T *First = D->getFirstDecl();
173  if (First != D)
174  JOS.attribute("firstRedecl", createPointerRepresentation(First));
175  }
176 
177  template <typename T> void writePreviousDeclImpl(const Redeclarable<T> *D) {
178  const T *Prev = D->getPreviousDecl();
179  if (Prev)
180  JOS.attribute("previousDecl", createPointerRepresentation(Prev));
181  }
182  void addPreviousDeclaration(const Decl *D);
183 
184  StringRef getCommentCommandName(unsigned CommandID) const;
185 
186 public:
187  JSONNodeDumper(raw_ostream &OS, const SourceManager &SrcMgr, ASTContext &Ctx,
188  const PrintingPolicy &PrintPolicy,
189  const comments::CommandTraits *Traits)
190  : NodeStreamer(OS), SM(SrcMgr), Ctx(Ctx), ASTNameGen(Ctx),
191  PrintPolicy(PrintPolicy), Traits(Traits), LastLocLine(0),
192  LastLocPresumedLine(0) {}
193 
194  void Visit(const Attr *A);
195  void Visit(const Stmt *Node);
196  void Visit(const Type *T);
197  void Visit(QualType T);
198  void Visit(const Decl *D);
199 
200  void Visit(const comments::Comment *C, const comments::FullComment *FC);
201  void Visit(const TemplateArgument &TA, SourceRange R = {},
202  const Decl *From = nullptr, StringRef Label = {});
203  void Visit(const CXXCtorInitializer *Init);
204  void Visit(const OMPClause *C);
205  void Visit(const BlockDecl::Capture &C);
207  void Visit(const concepts::Requirement *R);
208  void Visit(const APValue &Value, QualType Ty);
209 
210  void VisitTypedefType(const TypedefType *TT);
211  void VisitFunctionType(const FunctionType *T);
212  void VisitFunctionProtoType(const FunctionProtoType *T);
213  void VisitRValueReferenceType(const ReferenceType *RT);
214  void VisitArrayType(const ArrayType *AT);
215  void VisitConstantArrayType(const ConstantArrayType *CAT);
216  void VisitDependentSizedExtVectorType(const DependentSizedExtVectorType *VT);
217  void VisitVectorType(const VectorType *VT);
218  void VisitUnresolvedUsingType(const UnresolvedUsingType *UUT);
219  void VisitUnaryTransformType(const UnaryTransformType *UTT);
220  void VisitTagType(const TagType *TT);
221  void VisitTemplateTypeParmType(const TemplateTypeParmType *TTPT);
222  void VisitAutoType(const AutoType *AT);
223  void VisitTemplateSpecializationType(const TemplateSpecializationType *TST);
224  void VisitInjectedClassNameType(const InjectedClassNameType *ICNT);
225  void VisitObjCInterfaceType(const ObjCInterfaceType *OIT);
226  void VisitPackExpansionType(const PackExpansionType *PET);
227  void VisitElaboratedType(const ElaboratedType *ET);
228  void VisitMacroQualifiedType(const MacroQualifiedType *MQT);
229  void VisitMemberPointerType(const MemberPointerType *MPT);
230 
231  void VisitNamedDecl(const NamedDecl *ND);
232  void VisitTypedefDecl(const TypedefDecl *TD);
233  void VisitTypeAliasDecl(const TypeAliasDecl *TAD);
234  void VisitNamespaceDecl(const NamespaceDecl *ND);
235  void VisitUsingDirectiveDecl(const UsingDirectiveDecl *UDD);
236  void VisitNamespaceAliasDecl(const NamespaceAliasDecl *NAD);
237  void VisitUsingDecl(const UsingDecl *UD);
238  void VisitUsingEnumDecl(const UsingEnumDecl *UED);
239  void VisitUsingShadowDecl(const UsingShadowDecl *USD);
240  void VisitVarDecl(const VarDecl *VD);
241  void VisitFieldDecl(const FieldDecl *FD);
242  void VisitFunctionDecl(const FunctionDecl *FD);
243  void VisitEnumDecl(const EnumDecl *ED);
244  void VisitEnumConstantDecl(const EnumConstantDecl *ECD);
245  void VisitRecordDecl(const RecordDecl *RD);
246  void VisitCXXRecordDecl(const CXXRecordDecl *RD);
247  void VisitTemplateTypeParmDecl(const TemplateTypeParmDecl *D);
248  void VisitNonTypeTemplateParmDecl(const NonTypeTemplateParmDecl *D);
249  void VisitTemplateTemplateParmDecl(const TemplateTemplateParmDecl *D);
250  void VisitLinkageSpecDecl(const LinkageSpecDecl *LSD);
251  void VisitAccessSpecDecl(const AccessSpecDecl *ASD);
252  void VisitFriendDecl(const FriendDecl *FD);
253 
254  void VisitObjCIvarDecl(const ObjCIvarDecl *D);
255  void VisitObjCMethodDecl(const ObjCMethodDecl *D);
256  void VisitObjCTypeParamDecl(const ObjCTypeParamDecl *D);
257  void VisitObjCCategoryDecl(const ObjCCategoryDecl *D);
258  void VisitObjCCategoryImplDecl(const ObjCCategoryImplDecl *D);
259  void VisitObjCProtocolDecl(const ObjCProtocolDecl *D);
260  void VisitObjCInterfaceDecl(const ObjCInterfaceDecl *D);
261  void VisitObjCImplementationDecl(const ObjCImplementationDecl *D);
262  void VisitObjCCompatibleAliasDecl(const ObjCCompatibleAliasDecl *D);
263  void VisitObjCPropertyDecl(const ObjCPropertyDecl *D);
264  void VisitObjCPropertyImplDecl(const ObjCPropertyImplDecl *D);
265  void VisitBlockDecl(const BlockDecl *D);
266 
267  void VisitDeclRefExpr(const DeclRefExpr *DRE);
268  void VisitSYCLUniqueStableNameExpr(const SYCLUniqueStableNameExpr *E);
269  void VisitPredefinedExpr(const PredefinedExpr *PE);
270  void VisitUnaryOperator(const UnaryOperator *UO);
271  void VisitBinaryOperator(const BinaryOperator *BO);
272  void VisitCompoundAssignOperator(const CompoundAssignOperator *CAO);
273  void VisitMemberExpr(const MemberExpr *ME);
274  void VisitCXXNewExpr(const CXXNewExpr *NE);
275  void VisitCXXDeleteExpr(const CXXDeleteExpr *DE);
276  void VisitCXXThisExpr(const CXXThisExpr *TE);
277  void VisitCastExpr(const CastExpr *CE);
278  void VisitImplicitCastExpr(const ImplicitCastExpr *ICE);
279  void VisitCallExpr(const CallExpr *CE);
280  void VisitUnaryExprOrTypeTraitExpr(const UnaryExprOrTypeTraitExpr *TTE);
281  void VisitSizeOfPackExpr(const SizeOfPackExpr *SOPE);
282  void VisitUnresolvedLookupExpr(const UnresolvedLookupExpr *ULE);
283  void VisitAddrLabelExpr(const AddrLabelExpr *ALE);
284  void VisitCXXTypeidExpr(const CXXTypeidExpr *CTE);
285  void VisitConstantExpr(const ConstantExpr *CE);
286  void VisitInitListExpr(const InitListExpr *ILE);
287  void VisitGenericSelectionExpr(const GenericSelectionExpr *GSE);
288  void VisitCXXUnresolvedConstructExpr(const CXXUnresolvedConstructExpr *UCE);
289  void VisitCXXConstructExpr(const CXXConstructExpr *CE);
290  void VisitExprWithCleanups(const ExprWithCleanups *EWC);
291  void VisitCXXBindTemporaryExpr(const CXXBindTemporaryExpr *BTE);
292  void VisitMaterializeTemporaryExpr(const MaterializeTemporaryExpr *MTE);
293  void VisitCXXDependentScopeMemberExpr(const CXXDependentScopeMemberExpr *ME);
294  void VisitRequiresExpr(const RequiresExpr *RE);
295 
296  void VisitObjCEncodeExpr(const ObjCEncodeExpr *OEE);
297  void VisitObjCMessageExpr(const ObjCMessageExpr *OME);
298  void VisitObjCBoxedExpr(const ObjCBoxedExpr *OBE);
299  void VisitObjCSelectorExpr(const ObjCSelectorExpr *OSE);
300  void VisitObjCProtocolExpr(const ObjCProtocolExpr *OPE);
301  void VisitObjCPropertyRefExpr(const ObjCPropertyRefExpr *OPRE);
302  void VisitObjCSubscriptRefExpr(const ObjCSubscriptRefExpr *OSRE);
303  void VisitObjCIvarRefExpr(const ObjCIvarRefExpr *OIRE);
304  void VisitObjCBoolLiteralExpr(const ObjCBoolLiteralExpr *OBLE);
305 
306  void VisitIntegerLiteral(const IntegerLiteral *IL);
307  void VisitCharacterLiteral(const CharacterLiteral *CL);
308  void VisitFixedPointLiteral(const FixedPointLiteral *FPL);
309  void VisitFloatingLiteral(const FloatingLiteral *FL);
310  void VisitStringLiteral(const StringLiteral *SL);
311  void VisitCXXBoolLiteralExpr(const CXXBoolLiteralExpr *BLE);
312 
313  void VisitIfStmt(const IfStmt *IS);
314  void VisitSwitchStmt(const SwitchStmt *SS);
315  void VisitCaseStmt(const CaseStmt *CS);
316  void VisitLabelStmt(const LabelStmt *LS);
317  void VisitGotoStmt(const GotoStmt *GS);
318  void VisitWhileStmt(const WhileStmt *WS);
319  void VisitObjCAtCatchStmt(const ObjCAtCatchStmt *OACS);
320 
321  void VisitNullTemplateArgument(const TemplateArgument &TA);
322  void VisitTypeTemplateArgument(const TemplateArgument &TA);
323  void VisitDeclarationTemplateArgument(const TemplateArgument &TA);
324  void VisitNullPtrTemplateArgument(const TemplateArgument &TA);
325  void VisitIntegralTemplateArgument(const TemplateArgument &TA);
326  void VisitTemplateTemplateArgument(const TemplateArgument &TA);
327  void VisitTemplateExpansionTemplateArgument(const TemplateArgument &TA);
328  void VisitExpressionTemplateArgument(const TemplateArgument &TA);
329  void VisitPackTemplateArgument(const TemplateArgument &TA);
330 
331  void visitTextComment(const comments::TextComment *C,
332  const comments::FullComment *);
333  void visitInlineCommandComment(const comments::InlineCommandComment *C,
334  const comments::FullComment *);
335  void visitHTMLStartTagComment(const comments::HTMLStartTagComment *C,
336  const comments::FullComment *);
337  void visitHTMLEndTagComment(const comments::HTMLEndTagComment *C,
338  const comments::FullComment *);
339  void visitBlockCommandComment(const comments::BlockCommandComment *C,
340  const comments::FullComment *);
341  void visitParamCommandComment(const comments::ParamCommandComment *C,
342  const comments::FullComment *FC);
343  void visitTParamCommandComment(const comments::TParamCommandComment *C,
344  const comments::FullComment *FC);
345  void visitVerbatimBlockComment(const comments::VerbatimBlockComment *C,
346  const comments::FullComment *);
347  void
348  visitVerbatimBlockLineComment(const comments::VerbatimBlockLineComment *C,
349  const comments::FullComment *);
350  void visitVerbatimLineComment(const comments::VerbatimLineComment *C,
351  const comments::FullComment *);
352 };
353 
354 class JSONDumper : public ASTNodeTraverser<JSONDumper, JSONNodeDumper> {
355  JSONNodeDumper NodeDumper;
356 
357  template <typename SpecializationDecl>
358  void writeTemplateDeclSpecialization(const SpecializationDecl *SD,
359  bool DumpExplicitInst,
360  bool DumpRefOnly) {
361  bool DumpedAny = false;
362  for (const auto *RedeclWithBadType : SD->redecls()) {
363  // FIXME: The redecls() range sometimes has elements of a less-specific
364  // type. (In particular, ClassTemplateSpecializationDecl::redecls() gives
365  // us TagDecls, and should give CXXRecordDecls).
366  const auto *Redecl = dyn_cast<SpecializationDecl>(RedeclWithBadType);
367  if (!Redecl) {
368  // Found the injected-class-name for a class template. This will be
369  // dumped as part of its surrounding class so we don't need to dump it
370  // here.
371  assert(isa<CXXRecordDecl>(RedeclWithBadType) &&
372  "expected an injected-class-name");
373  continue;
374  }
375 
376  switch (Redecl->getTemplateSpecializationKind()) {
379  if (!DumpExplicitInst)
380  break;
381  LLVM_FALLTHROUGH;
382  case TSK_Undeclared:
384  if (DumpRefOnly)
385  NodeDumper.AddChild([=] { NodeDumper.writeBareDeclRef(Redecl); });
386  else
387  Visit(Redecl);
388  DumpedAny = true;
389  break;
391  break;
392  }
393  }
394 
395  // Ensure we dump at least one decl for each specialization.
396  if (!DumpedAny)
397  NodeDumper.AddChild([=] { NodeDumper.writeBareDeclRef(SD); });
398  }
399 
400  template <typename TemplateDecl>
401  void writeTemplateDecl(const TemplateDecl *TD, bool DumpExplicitInst) {
402  // FIXME: it would be nice to dump template parameters and specializations
403  // to their own named arrays rather than shoving them into the "inner"
404  // array. However, template declarations are currently being handled at the
405  // wrong "level" of the traversal hierarchy and so it is difficult to
406  // achieve without losing information elsewhere.
407 
409 
410  Visit(TD->getTemplatedDecl());
411 
412  for (const auto *Child : TD->specializations())
413  writeTemplateDeclSpecialization(Child, DumpExplicitInst,
414  !TD->isCanonicalDecl());
415  }
416 
417 public:
418  JSONDumper(raw_ostream &OS, const SourceManager &SrcMgr, ASTContext &Ctx,
419  const PrintingPolicy &PrintPolicy,
420  const comments::CommandTraits *Traits)
421  : NodeDumper(OS, SrcMgr, Ctx, PrintPolicy, Traits) {}
422 
423  JSONNodeDumper &doGetNodeDelegate() { return NodeDumper; }
424 
426  writeTemplateDecl(FTD, true);
427  }
429  writeTemplateDecl(CTD, false);
430  }
432  writeTemplateDecl(VTD, false);
433  }
434 };
435 
436 } // namespace clang
437 
438 #endif // LLVM_CLANG_AST_JSONNODEDUMPER_H
clang::TemplateDecl::getTemplatedDecl
NamedDecl * getTemplatedDecl() const
Get the underlying, templated declaration.
Definition: DeclTemplate.h:431
clang::JSONNodeDumper::VisitUnaryTransformType
void VisitUnaryTransformType(const UnaryTransformType *UTT)
Definition: JSONNodeDumper.cpp:663
clang::JSONNodeDumper::VisitLinkageSpecDecl
void VisitLinkageSpecDecl(const LinkageSpecDecl *LSD)
Definition: JSONNodeDumper.cpp:937
clang::JSONNodeDumper::VisitFieldDecl
void VisitFieldDecl(const FieldDecl *FD)
Definition: JSONNodeDumper.cpp:828
clang::JSONNodeDumper::VisitObjCIvarRefExpr
void VisitObjCIvarRefExpr(const ObjCIvarRefExpr *OIRE)
Definition: JSONNodeDumper.cpp:1183
clang::JSONNodeDumper::VisitObjCBoolLiteralExpr
void VisitObjCBoolLiteralExpr(const ObjCBoolLiteralExpr *OBLE)
Definition: JSONNodeDumper.cpp:1189
clang::JSONNodeDumper::visitVerbatimLineComment
void visitVerbatimLineComment(const comments::VerbatimLineComment *C, const comments::FullComment *)
Definition: JSONNodeDumper.cpp:1682
Desugar
static QualType Desugar(ASTContext &Context, QualType QT, bool &ShouldAKA)
Definition: ASTDiagnostic.cpp:29
clang::JSONNodeDumper::VisitObjCSelectorExpr
void VisitObjCSelectorExpr(const ObjCSelectorExpr *OSE)
Definition: JSONNodeDumper.cpp:1143
clang::JSONNodeDumper::visitParamCommandComment
void visitParamCommandComment(const comments::ParamCommandComment *C, const comments::FullComment *FC)
Definition: JSONNodeDumper.cpp:1632
clang::GenericSelectionExpr::ConstAssociation
AssociationTy< true > ConstAssociation
Definition: Expr.h:5781
clang::JSONNodeDumper::VisitObjCProtocolDecl
void VisitObjCProtocolDecl(const ObjCProtocolDecl *D)
Definition: JSONNodeDumper.cpp:1010
clang::JSONNodeDumper::VisitObjCBoxedExpr
void VisitObjCBoxedExpr(const ObjCBoxedExpr *OBE)
Definition: JSONNodeDumper.cpp:1133
clang::SourceRange
A trivial tuple used to represent a source range.
Definition: SourceLocation.h:212
string
string(SUBSTRING ${CMAKE_CURRENT_BINARY_DIR} 0 ${PATH_LIB_START} PATH_HEAD) string(SUBSTRING $
Definition: CMakeLists.txt:22
clang::JSONNodeDumper::VisitUsingDecl
void VisitUsingDecl(const UsingDecl *UD)
Definition: JSONNodeDumper.cpp:784
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:675
clang::JSONNodeDumper::VisitFloatingLiteral
void VisitFloatingLiteral(const FloatingLiteral *FL)
Definition: JSONNodeDumper.cpp:1472
clang::JSONNodeDumper::VisitObjCMessageExpr
void VisitObjCMessageExpr(const ObjCMessageExpr *OME)
Definition: JSONNodeDumper.cpp:1103
clang::JSONNodeDumper::VisitObjCPropertyRefExpr
void VisitObjCPropertyRefExpr(const ObjCPropertyRefExpr *OPRE)
Definition: JSONNodeDumper.cpp:1155
clang::JSONNodeDumper::VisitCXXNewExpr
void VisitCXXNewExpr(const CXXNewExpr *NE)
Definition: JSONNodeDumper.cpp:1250
clang::JSONNodeDumper::VisitTypedefType
void VisitTypedefType(const TypedefType *TT)
Definition: JSONNodeDumper.cpp:531
clang::JSONNodeDumper::VisitInjectedClassNameType
void VisitInjectedClassNameType(const InjectedClassNameType *ICNT)
Definition: JSONNodeDumper.cpp:708
llvm::SmallVector
Definition: LLVM.h:38
clang::SourceLocation
Encodes a location in the source.
Definition: SourceLocation.h:88
clang::JSONNodeDumper::VisitDependentSizedExtVectorType
void VisitDependentSizedExtVectorType(const DependentSizedExtVectorType *VT)
Definition: JSONNodeDumper.cpp:624
clang::JSONNodeDumper::VisitObjCIvarDecl
void VisitObjCIvarDecl(const ObjCIvarDecl *D)
Definition: JSONNodeDumper.cpp:956
clang::JSONNodeDumper::VisitDeclRefExpr
void VisitDeclRefExpr(const DeclRefExpr *DRE)
Definition: JSONNodeDumper.cpp:1193
clang::JSONNodeDumper::VisitIntegralTemplateArgument
void VisitIntegralTemplateArgument(const TemplateArgument &TA)
Definition: JSONNodeDumper.cpp:1536
clang::ASTNameGenerator
Definition: Mangle.h:277
clang::TSK_Undeclared
@ TSK_Undeclared
This template specialization was formed from a template-id but has not yet been declared,...
Definition: Specifiers.h:167
clang::JSONNodeDumper::VisitCXXDependentScopeMemberExpr
void VisitCXXDependentScopeMemberExpr(const CXXDependentScopeMemberExpr *ME)
Definition: JSONNodeDumper.cpp:1434
clang::QualType
A (possibly-)qualified type.
Definition: Type.h:673
AttributeLangSupport::C
@ C
Definition: SemaDeclAttr.cpp:54
clang::JSONNodeDumper::VisitUnaryExprOrTypeTraitExpr
void VisitUnaryExprOrTypeTraitExpr(const UnaryExprOrTypeTraitExpr *TTE)
Definition: JSONNodeDumper.cpp:1296
clang::JSONNodeDumper::VisitNamedDecl
void VisitNamedDecl(const NamedDecl *ND)
Definition: JSONNodeDumper.cpp:742
clang::JSONNodeDumper::VisitNamespaceDecl
void VisitNamespaceDecl(const NamespaceDecl *ND)
Definition: JSONNodeDumper.cpp:765
clang::JSONNodeDumper::VisitTypeTemplateArgument
void VisitTypeTemplateArgument(const TemplateArgument &TA)
Definition: JSONNodeDumper.cpp:1526
clang::JSONNodeDumper::VisitCXXUnresolvedConstructExpr
void VisitCXXUnresolvedConstructExpr(const CXXUnresolvedConstructExpr *UCE)
Definition: JSONNodeDumper.cpp:1348
clang::JSONNodeDumper::VisitFriendDecl
void VisitFriendDecl(const FriendDecl *FD)
Definition: JSONNodeDumper.cpp:951
clang::JSONNodeDumper::VisitAccessSpecDecl
void VisitAccessSpecDecl(const AccessSpecDecl *ASD)
Definition: JSONNodeDumper.cpp:947
clang::JSONNodeDumper::VisitExpressionTemplateArgument
void VisitExpressionTemplateArgument(const TemplateArgument &TA)
Definition: JSONNodeDumper.cpp:1548
clang::JSONNodeDumper::visitTextComment
void visitTextComment(const comments::TextComment *C, const comments::FullComment *)
Definition: JSONNodeDumper.cpp:1565
clang::JSONDumper
Definition: JSONNodeDumper.h:354
clang::JSONDumper::JSONDumper
JSONDumper(raw_ostream &OS, const SourceManager &SrcMgr, ASTContext &Ctx, const PrintingPolicy &PrintPolicy, const comments::CommandTraits *Traits)
Definition: JSONNodeDumper.h:418
clang::PrintingPolicy
Describes how types, statements, expressions, and declarations should be printed.
Definition: PrettyPrinter.h:59
clang::JSONNodeDumper::VisitSizeOfPackExpr
void VisitSizeOfPackExpr(const SizeOfPackExpr *SOPE)
Definition: JSONNodeDumper.cpp:1303
clang::JSONNodeDumper::VisitMemberPointerType
void VisitMemberPointerType(const MemberPointerType *MPT)
Definition: JSONNodeDumper.cpp:737
clang::JSONNodeDumper::VisitDeclarationTemplateArgument
void VisitDeclarationTemplateArgument(const TemplateArgument &TA)
Definition: JSONNodeDumper.cpp:1529
clang::JSONNodeDumper::VisitWhileStmt
void VisitWhileStmt(const WhileStmt *WS)
Definition: JSONNodeDumper.cpp:1512
clang::JSONNodeDumper::VisitCXXConstructExpr
void VisitCXXConstructExpr(const CXXConstructExpr *CE)
Definition: JSONNodeDumper.cpp:1355
clang::JSONDumper::doGetNodeDelegate
JSONNodeDumper & doGetNodeDelegate()
Definition: JSONNodeDumper.h:423
clang::JSONNodeDumper::VisitUnaryOperator
void VisitUnaryOperator(const UnaryOperator *UO)
Definition: JSONNodeDumper.cpp:1216
clang::SourceManager
This class handles loading and caching of source files into memory.
Definition: SourceManager.h:626
clang::JSONNodeDumper::VisitTemplateExpansionTemplateArgument
void VisitTemplateExpansionTemplateArgument(const TemplateArgument &TA)
Definition: JSONNodeDumper.cpp:1543
clang::Type
The base class of the type hierarchy.
Definition: Type.h:1490
ExprConcepts.h
clang::JSONNodeDumper::VisitUsingEnumDecl
void VisitUsingEnumDecl(const UsingEnumDecl *UED)
Definition: JSONNodeDumper.cpp:794
clang::FunctionTemplateDecl
Declaration of a template function.
Definition: DeclTemplate.h:974
ASTNodeTraverser.h
clang::JSONNodeDumper::VisitTemplateTypeParmDecl
void VisitTemplateTypeParmDecl(const TemplateTypeParmDecl *D)
Definition: JSONNodeDumper.cpp:889
clang::comments::Comment
Any part of the comment.
Definition: Comment.h:52
clang::JSONNodeDumper::VisitImplicitCastExpr
void VisitImplicitCastExpr(const ImplicitCastExpr *ICE)
Definition: JSONNodeDumper.cpp:1287
clang::TSK_ExplicitInstantiationDeclaration
@ TSK_ExplicitInstantiationDeclaration
This template specialization was instantiated from a template due to an explicit instantiation declar...
Definition: Specifiers.h:178
clang::JSONNodeDumper::VisitSYCLUniqueStableNameExpr
void VisitSYCLUniqueStableNameExpr(const SYCLUniqueStableNameExpr *E)
Definition: JSONNodeDumper.cpp:1206
clang::ConstTemplateArgumentVisitor
A simple visitor class that helps create template argument visitors.
Definition: TemplateArgumentVisitor.h:92
clang::JSONNodeDumper::VisitPredefinedExpr
void VisitPredefinedExpr(const PredefinedExpr *PE)
Definition: JSONNodeDumper.cpp:1212
clang::JSONNodeDumper::VisitObjCAtCatchStmt
void VisitObjCAtCatchStmt(const ObjCAtCatchStmt *OACS)
Definition: JSONNodeDumper.cpp:1516
clang::JSONNodeDumper::VisitCompoundAssignOperator
void VisitCompoundAssignOperator(const CompoundAssignOperator *CAO)
Definition: JSONNodeDumper.cpp:1227
Node
DynTypedNode Node
Definition: ASTMatchFinder.cpp:67
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:683
clang::JSONNodeDumper::VisitObjCTypeParamDecl
void VisitObjCTypeParamDecl(const ObjCTypeParamDecl *D)
Definition: JSONNodeDumper.cpp:976
clang::JSONNodeDumper::VisitPackExpansionType
void VisitPackExpansionType(const PackExpansionType *PET)
Definition: JSONNodeDumper.cpp:717
clang::JSONNodeDumper::VisitCharacterLiteral
void VisitCharacterLiteral(const CharacterLiteral *CL)
Definition: JSONNodeDumper.cpp:1462
clang::JSONNodeDumper::VisitObjCCompatibleAliasDecl
void VisitObjCCompatibleAliasDecl(const ObjCCompatibleAliasDecl *D)
Definition: JSONNodeDumper.cpp:1039
clang::JSONNodeDumper::VisitObjCPropertyImplDecl
void VisitObjCPropertyImplDecl(const ObjCPropertyImplDecl *D)
Definition: JSONNodeDumper.cpp:1084
clang::ASTContext
Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...
Definition: ASTContext.h:211
clang::ASTNodeTraverser
ASTNodeTraverser traverses the Clang AST for dumping purposes.
Definition: ASTNodeTraverser.h:61
Depth
int Depth
Definition: ASTDiff.cpp:191
ASTDumperUtils.h
clang::TemplateArgument
Represents a template argument.
Definition: TemplateBase.h:62
clang::JSONNodeDumper::VisitObjCProtocolExpr
void VisitObjCProtocolExpr(const ObjCProtocolExpr *OPE)
Definition: JSONNodeDumper.cpp:1151
clang::JSONNodeDumper::VisitIntegerLiteral
void VisitIntegerLiteral(const IntegerLiteral *IL)
Definition: JSONNodeDumper.cpp:1456
clang::JSONNodeDumper::VisitCXXBindTemporaryExpr
void VisitCXXBindTemporaryExpr(const CXXBindTemporaryExpr *BTE)
Definition: JSONNodeDumper.cpp:1400
clang::JSONNodeDumper::VisitObjCInterfaceDecl
void VisitObjCInterfaceDecl(const ObjCInterfaceDecl *D)
Definition: JSONNodeDumper.cpp:1020
clang::comments::FullComment
A full comment attached to a declaration, contains block content.
Definition: Comment.h:1091
clang::JSONNodeDumper::VisitIfStmt
void VisitIfStmt(const IfStmt *IS)
Definition: JSONNodeDumper.cpp:1487
Type.h
clang::JSONNodeDumper::VisitNonTypeTemplateParmDecl
void VisitNonTypeTemplateParmDecl(const NonTypeTemplateParmDecl *D)
Definition: JSONNodeDumper.cpp:904
clang::JSONNodeDumper::VisitExprWithCleanups
void VisitExprWithCleanups(const ExprWithCleanups *EWC)
Definition: JSONNodeDumper.cpp:1380
ASTContext.h
clang::JSONNodeDumper::VisitMaterializeTemporaryExpr
void VisitMaterializeTemporaryExpr(const MaterializeTemporaryExpr *MTE)
Definition: JSONNodeDumper.cpp:1408
clang::JSONNodeDumper::VisitElaboratedType
void VisitElaboratedType(const ElaboratedType *ET)
Definition: JSONNodeDumper.cpp:722
clang::JSONNodeDumper::VisitObjCEncodeExpr
void VisitObjCEncodeExpr(const ObjCEncodeExpr *OEE)
Definition: JSONNodeDumper.cpp:1099
clang::TSK_ExplicitInstantiationDefinition
@ TSK_ExplicitInstantiationDefinition
This template specialization was instantiated from a template due to an explicit instantiation defini...
Definition: Specifiers.h:182
clang::JSONNodeDumper::VisitTypeAliasDecl
void VisitTypeAliasDecl(const TypeAliasDecl *TAD)
Definition: JSONNodeDumper.cpp:760
clang::JSONNodeDumper::VisitObjCCategoryDecl
void VisitObjCCategoryDecl(const ObjCCategoryDecl *D)
Definition: JSONNodeDumper.cpp:992
clang::JSONNodeDumper::VisitCaseStmt
void VisitCaseStmt(const CaseStmt *CS)
Definition: JSONNodeDumper.cpp:1498
clang::JSONNodeDumper::visitVerbatimBlockComment
void visitVerbatimBlockComment(const comments::VerbatimBlockComment *C, const comments::FullComment *)
Definition: JSONNodeDumper.cpp:1670
clang::TypeVisitor
An operation on a type.
Definition: TypeVisitor.h:64
ExprCXX.h
clang::JSONNodeDumper::VisitArrayType
void VisitArrayType(const ArrayType *AT)
Definition: JSONNodeDumper.cpp:600
Label
std::string Label
Definition: UsingDeclarationsSorter.cpp:69
clang::JSONNodeDumper::VisitRecordDecl
void VisitRecordDecl(const RecordDecl *RD)
Definition: JSONNodeDumper.cpp:868
clang::JSONNodeDumper::VisitNullPtrTemplateArgument
void VisitNullPtrTemplateArgument(const TemplateArgument &TA)
Definition: JSONNodeDumper.cpp:1533
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:544
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:418
clang::JSONNodeDumper::VisitTemplateSpecializationType
void VisitTemplateSpecializationType(const TemplateSpecializationType *TST)
Definition: JSONNodeDumper.cpp:698
clang::JSONNodeDumper::JSONNodeDumper
JSONNodeDumper(raw_ostream &OS, const SourceManager &SrcMgr, ASTContext &Ctx, const PrintingPolicy &PrintPolicy, const comments::CommandTraits *Traits)
Definition: JSONNodeDumper.h:187
clang::AccessSpecifier
AccessSpecifier
A C++ access specifier (public, private, protected), plus the special value "none" which means differ...
Definition: Specifiers.h:99
clang::JSONNodeDumper::VisitCXXBoolLiteralExpr
void VisitCXXBoolLiteralExpr(const CXXBoolLiteralExpr *BLE)
Definition: JSONNodeDumper.cpp:1483
clang::JSONNodeDumper::VisitFixedPointLiteral
void VisitFixedPointLiteral(const FixedPointLiteral *FPL)
Definition: JSONNodeDumper.cpp:1469
clang::CXXRecordDecl
Represents a C++ struct/union/class.
Definition: DeclCXX.h:255
clang::NodeStreamer
Definition: JSONNodeDumper.h:33
clang::JSONNodeDumper::VisitObjCInterfaceType
void VisitObjCInterfaceType(const ObjCInterfaceType *OIT)
Definition: JSONNodeDumper.cpp:713
clang::JSONDumper::VisitFunctionTemplateDecl
void VisitFunctionTemplateDecl(const FunctionTemplateDecl *FTD)
Definition: JSONNodeDumper.h:425
clang::JSONNodeDumper::VisitVectorType
void VisitVectorType(const VectorType *VT)
Definition: JSONNodeDumper.cpp:630
clang::JSONNodeDumper::VisitBinaryOperator
void VisitBinaryOperator(const BinaryOperator *BO)
Definition: JSONNodeDumper.cpp:1223
clang::JSONNodeDumper::Visit
void Visit(const Attr *A)
Definition: JSONNodeDumper.cpp:22
clang::ClassTemplateDecl
Declaration of a class template.
Definition: DeclTemplate.h:2243
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:431
clang::JSONNodeDumper::VisitUsingDirectiveDecl
void VisitUsingDirectiveDecl(const UsingDirectiveDecl *UDD)
Definition: JSONNodeDumper.cpp:773
clang::JSONNodeDumper::VisitUnresolvedUsingType
void VisitUnresolvedUsingType(const UnresolvedUsingType *UUT)
Definition: JSONNodeDumper.cpp:659
clang::JSONNodeDumper::visitHTMLStartTagComment
void visitHTMLStartTagComment(const comments::HTMLStartTagComment *C, const comments::FullComment *)
Definition: JSONNodeDumper.cpp:1600
clang::TemplateDecl
The base class of all kinds of template declarations (e.g., class, function, etc.).
Definition: DeclTemplate.h:399
clang::JSONNodeDumper::VisitUsingShadowDecl
void VisitUsingShadowDecl(const UsingShadowDecl *USD)
Definition: JSONNodeDumper.cpp:798
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:1235
Value
Value
Definition: UninitializedValues.cpp:102
clang::Decl
Decl - This represents one declaration (or definition), e.g.
Definition: DeclBase.h:89
clang::JSONNodeDumper::VisitVarDecl
void VisitVarDecl(const VarDecl *VD)
Definition: JSONNodeDumper.cpp:802
clang::JSONNodeDumper::VisitUnresolvedLookupExpr
void VisitUnresolvedLookupExpr(const UnresolvedLookupExpr *ULE)
Definition: JSONNodeDumper.cpp:1307
clang::JSONNodeDumper::visitInlineCommandComment
void visitInlineCommandComment(const comments::InlineCommandComment *C, const comments::FullComment *)
Definition: JSONNodeDumper.cpp:1570
clang::JSONNodeDumper::VisitTemplateTemplateArgument
void VisitTemplateTemplateArgument(const TemplateArgument &TA)
Definition: JSONNodeDumper.cpp:1539
clang::JSONNodeDumper::VisitCXXDeleteExpr
void VisitCXXDeleteExpr(const CXXDeleteExpr *DE)
Definition: JSONNodeDumper.cpp:1264
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:174
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:1094
clang::JSONNodeDumper::VisitObjCSubscriptRefExpr
void VisitObjCSubscriptRefExpr(const ObjCSubscriptRefExpr *OSRE)
Definition: JSONNodeDumper.cpp:1172
clang::JSONNodeDumper::VisitTypedefDecl
void VisitTypedefDecl(const TypedefDecl *TD)
Definition: JSONNodeDumper.cpp:755
clang::JSONNodeDumper::VisitFunctionType
void VisitFunctionType(const FunctionType *T)
Definition: JSONNodeDumper.cpp:535
clang::JSONNodeDumper::visitTParamCommandComment
void visitTParamCommandComment(const comments::TParamCommandComment *C, const comments::FullComment *FC)
Definition: JSONNodeDumper.cpp:1655
clang::JSONNodeDumper::VisitAddrLabelExpr
void VisitAddrLabelExpr(const AddrLabelExpr *ALE)
Definition: JSONNodeDumper.cpp:1318
clang::JSONNodeDumper::VisitLabelStmt
void VisitLabelStmt(const LabelStmt *LS)
Definition: JSONNodeDumper.cpp:1502
clang::JSONNodeDumper::VisitConstantExpr
void VisitConstantExpr(const ConstantExpr *CE)
Definition: JSONNodeDumper.cpp:1333
clang::JSONNodeDumper::VisitInitListExpr
void VisitInitListExpr(const InitListExpr *ILE)
Definition: JSONNodeDumper.cpp:1338
clang::JSONNodeDumper::VisitGotoStmt
void VisitGotoStmt(const GotoStmt *GS)
Definition: JSONNodeDumper.cpp:1507
clang::interp::NE
bool NE(InterpState &S, CodePtr OpPC)
Definition: Interp.h:225
clang::NodeStreamer::NodeStreamer
NodeStreamer(raw_ostream &OS)
Definition: JSONNodeDumper.h:108
clang::JSONNodeDumper::VisitCastExpr
void VisitCastExpr(const CastExpr *CE)
Definition: JSONNodeDumper.cpp:1276
clang
Definition: CalledOnceCheck.h:17
clang::JSONNodeDumper::VisitRValueReferenceType
void VisitRValueReferenceType(const ReferenceType *RT)
Definition: JSONNodeDumper.cpp:596
clang::JSONNodeDumper::VisitGenericSelectionExpr
void VisitGenericSelectionExpr(const GenericSelectionExpr *GSE)
Definition: JSONNodeDumper.cpp:1343
clang::JSONNodeDumper::VisitSwitchStmt
void VisitSwitchStmt(const SwitchStmt *SS)
Definition: JSONNodeDumper.cpp:1494
clang::JSONNodeDumper::visitVerbatimBlockLineComment
void visitVerbatimBlockLineComment(const comments::VerbatimBlockLineComment *C, const comments::FullComment *)
Definition: JSONNodeDumper.cpp:1676
clang::Stmt
Stmt - This represents one statement.
Definition: Stmt.h:68
clang::JSONNodeDumper::VisitPackTemplateArgument
void VisitPackTemplateArgument(const TemplateArgument &TA)
Definition: JSONNodeDumper.cpp:1552
clang::JSONNodeDumper
Definition: JSONNodeDumper.h:116
clang::JSONNodeDumper::VisitMacroQualifiedType
void VisitMacroQualifiedType(const MacroQualifiedType *MQT)
Definition: JSONNodeDumper.cpp:733
clang::JSONNodeDumper::VisitRequiresExpr
void VisitRequiresExpr(const RequiresExpr *RE)
Definition: JSONNodeDumper.cpp:1451
clang::CXXBaseSpecifier
Represents a base class of a C++ class.
Definition: DeclCXX.h:147
clang::Attr
Attr - This represents one attribute.
Definition: Attr.h:46
clang::JSONNodeDumper::visitBlockCommandComment
void visitBlockCommandComment(const comments::BlockCommandComment *C, const comments::FullComment *)
Definition: JSONNodeDumper.cpp:1620
clang::JSONNodeDumper::VisitTagType
void VisitTagType(const TagType *TT)
Definition: JSONNodeDumper.cpp:671
clang::JSONNodeDumper::VisitObjCCategoryImplDecl
void VisitObjCCategoryImplDecl(const ObjCCategoryImplDecl *D)
Definition: JSONNodeDumper.cpp:1004
clang::JSONNodeDumper::VisitObjCPropertyDecl
void VisitObjCPropertyDecl(const ObjCPropertyDecl *D)
Definition: JSONNodeDumper.cpp:1045
clang::JSONNodeDumper::VisitCXXTypeidExpr
void VisitCXXTypeidExpr(const CXXTypeidExpr *CTE)
Definition: JSONNodeDumper.cpp:1323
clang::JSONNodeDumper::VisitEnumConstantDecl
void VisitEnumConstantDecl(const EnumConstantDecl *ECD)
Definition: JSONNodeDumper.cpp:863
AttrVisitor.h
clang::JSONNodeDumper::VisitCallExpr
void VisitCallExpr(const CallExpr *CE)
Definition: JSONNodeDumper.cpp:1292
clang::JSONNodeDumper::VisitCXXRecordDecl
void VisitCXXRecordDecl(const CXXRecordDecl *RD)
Definition: JSONNodeDumper.cpp:873
CommentVisitor.h
Mangle.h
clang::JSONNodeDumper::VisitTemplateTemplateParmDecl
void VisitTemplateTemplateParmDecl(const TemplateTemplateParmDecl *D)
Definition: JSONNodeDumper.cpp:920
clang::JSONNodeDumper::VisitNamespaceAliasDecl
void VisitNamespaceAliasDecl(const NamespaceAliasDecl *NAD)
Definition: JSONNodeDumper.cpp:778
clang::PresumedLoc
Represents an unpacked "presumed" location which can be presented to the user.
Definition: SourceLocation.h:304
clang::JSONNodeDumper::VisitEnumDecl
void VisitEnumDecl(const EnumDecl *ED)
Definition: JSONNodeDumper.cpp:855
clang::JSONNodeDumper::VisitConstantArrayType
void VisitConstantArrayType(const ConstantArrayType *CAT)
Definition: JSONNodeDumper.cpp:617
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:428
clang::VarTemplateDecl
Declaration of a variable template.
Definition: DeclTemplate.h:3075
SM
#define SM(sm)
Definition: Cuda.cpp:78
clang::JSONNodeDumper::visitHTMLEndTagComment
void visitHTMLEndTagComment(const comments::HTMLEndTagComment *C, const comments::FullComment *)
Definition: JSONNodeDumper.cpp:1615
clang::JSONNodeDumper::VisitObjCMethodDecl
void VisitObjCMethodDecl(const ObjCMethodDecl *D)
Definition: JSONNodeDumper.cpp:969
clang::TSK_ImplicitInstantiation
@ TSK_ImplicitInstantiation
This template specialization was implicitly instantiated from a template.
Definition: Specifiers.h:170
clang::CastExpr
CastExpr - Base class for type casts, including both implicit casts (ImplicitCastExpr) and explicit c...
Definition: Expr.h:3473
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:907
clang::JSONNodeDumper::VisitNullTemplateArgument
void VisitNullTemplateArgument(const TemplateArgument &TA)
Definition: JSONNodeDumper.cpp:1523
clang::JSONNodeDumper::VisitCXXThisExpr
void VisitCXXThisExpr(const CXXThisExpr *TE)
Definition: JSONNodeDumper.cpp:1272
clang::JSONNodeDumper::VisitObjCImplementationDecl
void VisitObjCImplementationDecl(const ObjCImplementationDecl *D)
Definition: JSONNodeDumper.cpp:1032
clang::JSONNodeDumper::VisitFunctionDecl
void VisitFunctionDecl(const FunctionDecl *FD)
Definition: JSONNodeDumper.cpp:837
clang::JSONNodeDumper::VisitStringLiteral
void VisitStringLiteral(const StringLiteral *SL)
Definition: JSONNodeDumper.cpp:1477