summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2013-05-24 16:11:44 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2013-05-24 16:11:44 +0000
commit6f6f3c4e38e136e28891e388329be02025ffb11b (patch)
treec446356a0bc1a47c78813af5aee6d6a4e1057fab
parent780593580f131c6796a6e3c93ed0c281fb7b7d60 (diff)
downloadbcm5719-llvm-6f6f3c4e38e136e28891e388329be02025ffb11b.tar.gz
bcm5719-llvm-6f6f3c4e38e136e28891e388329be02025ffb11b.zip
Fix printing CXXTemporaryObjectExpr with default args.
Patch by Will Wilson. llvm-svn: 182651
-rw-r--r--clang/lib/AST/StmtPrinter.cpp2
-rw-r--r--clang/test/SemaCXX/ast-print.cpp5
2 files changed, 7 insertions, 0 deletions
diff --git a/clang/lib/AST/StmtPrinter.cpp b/clang/lib/AST/StmtPrinter.cpp
index 2edb078442f..467413bfb20 100644
--- a/clang/lib/AST/StmtPrinter.cpp
+++ b/clang/lib/AST/StmtPrinter.cpp
@@ -1339,6 +1339,8 @@ void StmtPrinter::VisitCXXTemporaryObjectExpr(CXXTemporaryObjectExpr *Node) {
for (CXXTemporaryObjectExpr::arg_iterator Arg = Node->arg_begin(),
ArgEnd = Node->arg_end();
Arg != ArgEnd; ++Arg) {
+ if (Arg->isDefaultArgument())
+ break;
if (Arg != Node->arg_begin())
OS << ", ";
PrintExpr(*Arg);
diff --git a/clang/test/SemaCXX/ast-print.cpp b/clang/test/SemaCXX/ast-print.cpp
index 921f7d8baaa..8e945bde7d6 100644
--- a/clang/test/SemaCXX/ast-print.cpp
+++ b/clang/test/SemaCXX/ast-print.cpp
@@ -103,6 +103,7 @@ int test11() {
struct DefaultArgClass
{
DefaultArgClass(int a = 1) {}
+ DefaultArgClass(int a, int b, int c = 1) {}
};
struct NoArgClass
@@ -124,6 +125,8 @@ struct ConstrWithCleanupsClass
// CHECK: test12
// CHECK-NEXT: DefaultArgClass useDefaultArg;
// CHECK-NEXT: DefaultArgClass overrideDefaultArg(1);
+// CHECK-NEXT: DefaultArgClass(1, 2);
+// CHECK-NEXT: DefaultArgClass(1, 2, 3);
// CHECK-NEXT: NoArgClass noArg;
// CHECK-NEXT: ConstrWithCleanupsClass cwcNoArg;
// CHECK-NEXT: ConstrWithCleanupsClass cwcOverrideArg(48);
@@ -131,6 +134,8 @@ struct ConstrWithCleanupsClass
void test12() {
DefaultArgClass useDefaultArg;
DefaultArgClass overrideDefaultArg(1);
+ DefaultArgClass tempWithDefaultArg = DefaultArgClass(1, 2);
+ DefaultArgClass tempWithExplictArg = DefaultArgClass(1, 2, 3);
NoArgClass noArg;
ConstrWithCleanupsClass cwcNoArg;
ConstrWithCleanupsClass cwcOverrideArg(48);
OpenPOWER on IntegriCloud