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 << "::";
|
||||||
OS << "new ";
|
OS << "new ";
|
||||||
unsigned NumPlace = E->getNumPlacementArgs();
|
unsigned NumPlace = E->getNumPlacementArgs();
|
||||||
if (NumPlace > 0) {
|
if (NumPlace > 0 && !isa<CXXDefaultArgExpr>(E->getPlacementArg(0))) {
|
||||||
OS << "(";
|
OS << "(";
|
||||||
PrintExpr(E->getPlacementArg(0));
|
PrintExpr(E->getPlacementArg(0));
|
||||||
for (unsigned i = 1; i < NumPlace; ++i) {
|
for (unsigned i = 1; i < NumPlace; ++i) {
|
||||||
|
if (isa<CXXDefaultArgExpr>(E->getPlacementArg(i)))
|
||||||
|
break;
|
||||||
OS << ", ";
|
OS << ", ";
|
||||||
PrintExpr(E->getPlacementArg(i));
|
PrintExpr(E->getPlacementArg(i));
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,3 +30,14 @@ void f()
|
||||||
switch (int a = 1) { }
|
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