summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorKadir Cetinkaya <kadircet@google.com>2019-04-12 10:09:14 +0000
committerKadir Cetinkaya <kadircet@google.com>2019-04-12 10:09:14 +0000
commita80a52283cb7d8ee4d44c08030c44c39b3481d36 (patch)
tree94f5736d88a8e3c97d64f1e771c84c108d4ce00a /clang
parent2446f843aeeae6c0fff3620b90bab9cdcc47ec8a (diff)
downloadbcm5719-llvm-a80a52283cb7d8ee4d44c08030c44c39b3481d36.tar.gz
bcm5719-llvm-a80a52283cb7d8ee4d44c08030c44c39b3481d36.zip
[clangd] Print template arguments helper
Summary: Prepares ground for printing template arguments as written in the source code, part of re-landing rC356541 with D59599 applied. Reviewers: ioeric, ilya-biryukov Subscribers: mgorny, MaskRay, jkorous, arphaman, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D59639 llvm-svn: 358272
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/AST/TypePrinter.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/clang/lib/AST/TypePrinter.cpp b/clang/lib/AST/TypePrinter.cpp
index ebcc01aa46d..82a2fa09c76 100644
--- a/clang/lib/AST/TypePrinter.cpp
+++ b/clang/lib/AST/TypePrinter.cpp
@@ -1632,6 +1632,19 @@ static const TemplateArgument &getArgument(const TemplateArgumentLoc &A) {
return A.getArgument();
}
+static void printArgument(const TemplateArgument &A, const PrintingPolicy &PP,
+ llvm::raw_ostream &OS) {
+ A.print(PP, OS);
+}
+
+static void printArgument(const TemplateArgumentLoc &A,
+ const PrintingPolicy &PP, llvm::raw_ostream &OS) {
+ const TemplateArgument::ArgKind &Kind = A.getArgument().getKind();
+ if (Kind == TemplateArgument::ArgKind::Type)
+ return A.getTypeSourceInfo()->getType().print(OS, PP);
+ return A.getArgument().print(PP, OS);
+}
+
template<typename TA>
static void printTo(raw_ostream &OS, ArrayRef<TA> Args,
const PrintingPolicy &Policy, bool SkipBrackets) {
@@ -1653,7 +1666,8 @@ static void printTo(raw_ostream &OS, ArrayRef<TA> Args,
} else {
if (!FirstArg)
OS << Comma;
- Argument.print(Policy, ArgOS);
+ // Tries to print the argument with location info if exists.
+ printArgument(Arg, Policy, ArgOS);
}
StringRef ArgString = ArgOS.str();
OpenPOWER on IntegriCloud