diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2013-05-24 16:11:44 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2013-05-24 16:11:44 +0000 |
commit | 6f6f3c4e38e136e28891e388329be02025ffb11b (patch) | |
tree | c446356a0bc1a47c78813af5aee6d6a4e1057fab | |
parent | 780593580f131c6796a6e3c93ed0c281fb7b7d60 (diff) | |
download | bcm5719-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.cpp | 2 | ||||
-rw-r--r-- | clang/test/SemaCXX/ast-print.cpp | 5 |
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); |