forked from OSchip/llvm-project
Fix AST pretty-printing for C++ new expressions with placement arguments with default values.
Based on patch by Grzegorz Jablonski. llvm-svn: 166226
This commit is contained in:
parent
9909415181
commit
a6fdfaa595
|
@ -1415,10 +1415,12 @@ void StmtPrinter::VisitCXXNewExpr(CXXNewExpr *E) {
|
|||
OS << "::";
|
||||
OS << "new ";
|
||||
unsigned NumPlace = E->getNumPlacementArgs();
|
||||
if (NumPlace > 0) {
|
||||
if (NumPlace > 0 && !isa<CXXDefaultArgExpr>(E->getPlacementArg(0))) {
|
||||
OS << "(";
|
||||
PrintExpr(E->getPlacementArg(0));
|
||||
for (unsigned i = 1; i < NumPlace; ++i) {
|
||||
if (isa<CXXDefaultArgExpr>(E->getPlacementArg(i)))
|
||||
break;
|
||||
OS << ", ";
|
||||
PrintExpr(E->getPlacementArg(i));
|
||||
}
|
||||
|
|
|
@ -30,3 +30,14 @@ void f()
|
|||
switch (int a = 1) { }
|
||||
}
|
||||
|
||||
// CHECK: new (1) int;
|
||||
void *operator new (typeof(sizeof(1)), int, int = 2);
|
||||
void f2() {
|
||||
new (1) int;
|
||||
}
|
||||
|
||||
// CHECK: new X;
|
||||
struct X {
|
||||
void *operator new (typeof(sizeof(1)), int = 2);
|
||||
};
|
||||
void f2() { new X; }
|
||||
|
|
Loading…
Reference in New Issue