Skip to content

Commit 5528fa8

Browse files
debug: Add helper functions for debugging (#134)
1 parent 8ef7454 commit 5528fa8

File tree

2 files changed

+38
-1
lines changed

2 files changed

+38
-1
lines changed

indexer/DebugHelpers.cc

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "spdlog/fmt/fmt.h"
22

33
#include "clang/AST/Decl.h"
4+
#include "clang/AST/Type.h"
45
#include "clang/Basic/FileEntry.h"
56
#include "clang/Basic/SourceManager.h"
67
#include "clang/Lex/PPCallbacks.h"
@@ -157,5 +158,33 @@ std::string formatDecl(const clang::Decl *decl) {
157158
return buf;
158159
}
159160

161+
std::string formatTemplateNameKind(const clang::TemplateName::NameKind kind) {
162+
#define HANDLE_KIND(kind_) \
163+
case clang::TemplateName::NameKind::kind_: \
164+
return #kind_;
165+
switch (kind) {
166+
HANDLE_KIND(Template)
167+
HANDLE_KIND(OverloadedTemplate)
168+
HANDLE_KIND(AssumedTemplate)
169+
HANDLE_KIND(QualifiedTemplate)
170+
HANDLE_KIND(DependentTemplate)
171+
HANDLE_KIND(SubstTemplateTemplateParm)
172+
HANDLE_KIND(SubstTemplateTemplateParmPack)
173+
HANDLE_KIND(UsingTemplate)
174+
}
175+
#undef HANDLE_KIND
176+
}
177+
178+
std::string formatTypeInternals(const clang::QualType &qualType,
179+
const clang::ASTContext &astContext) {
180+
if (qualType.isNull()) {
181+
return "<null>";
182+
}
183+
std::string buf;
184+
llvm::raw_string_ostream os(buf);
185+
qualType.dump(os, astContext);
186+
return buf;
187+
}
188+
160189
} // namespace debug
161190
} // namespace scip_clang

indexer/DebugHelpers.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,17 @@
33

44
#include <string>
55

6+
#include "clang/AST/TemplateName.h"
67
#include "clang/Basic/FileEntry.h"
78
#include "clang/Basic/SourceManager.h"
89
#include "clang/Lex/PPCallbacks.h"
910
#include "llvm/ADT/StringRef.h"
1011

1112
namespace clang {
13+
class ASTContext;
1214
class Decl;
13-
}
15+
class QualType;
16+
} // namespace clang
1417

1518
namespace scip_clang {
1619
namespace debug {
@@ -31,6 +34,11 @@ std::string formatRange(const clang::SourceManager &,
3134

3235
std::string formatDecl(const clang::Decl *);
3336

37+
std::string formatTemplateNameKind(clang::TemplateName::NameKind);
38+
39+
std::string formatTypeInternals(const clang::QualType &,
40+
const clang::ASTContext &);
41+
3442
} // namespace debug
3543
} // namespace scip_clang
3644

0 commit comments

Comments
 (0)