diff options
Diffstat (limited to 'lib/AST')
-rw-r--r-- | lib/AST/Expr.cpp | 13 | ||||
-rw-r--r-- | lib/AST/StmtPrinter.cpp | 4 |
2 files changed, 16 insertions, 1 deletions
diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp index c1c8084cd5..8a04198293 100644 --- a/lib/AST/Expr.cpp +++ b/lib/AST/Expr.cpp @@ -735,6 +735,8 @@ bool Expr::isConstantInitializer(ASTContext &Ctx) const { } return true; } + case ImplicitValueInitExprClass: + return true; case ParenExprClass: { return cast<ParenExpr>(this)->getSubExpr()->isConstantInitializer(Ctx); } @@ -1672,7 +1674,7 @@ Stmt::child_iterator InitListExpr::child_end() { return InitExprs.size() ? &InitExprs[0] + InitExprs.size() : 0; } -/// DesignatedInitExpr +// DesignatedInitExpr Stmt::child_iterator DesignatedInitExpr::child_begin() { char* Ptr = static_cast<char*>(static_cast<void *>(this)); Ptr += sizeof(DesignatedInitExpr); @@ -1683,6 +1685,15 @@ Stmt::child_iterator DesignatedInitExpr::child_end() { return child_iterator(&*child_begin() + NumSubExprs); } +// ImplicitValueInitExpr +Stmt::child_iterator ImplicitValueInitExpr::child_begin() { + return child_iterator(); +} + +Stmt::child_iterator ImplicitValueInitExpr::child_end() { + return child_iterator(); +} + // ObjCStringLiteral Stmt::child_iterator ObjCStringLiteral::child_begin() { return child_iterator(); diff --git a/lib/AST/StmtPrinter.cpp b/lib/AST/StmtPrinter.cpp index 7a558ab8dd..27bab206a4 100644 --- a/lib/AST/StmtPrinter.cpp +++ b/lib/AST/StmtPrinter.cpp @@ -906,6 +906,10 @@ void StmtPrinter::VisitDesignatedInitExpr(DesignatedInitExpr *Node) { PrintExpr(Node->getInit()); } +void StmtPrinter::VisitImplicitValueInitExpr(ImplicitValueInitExpr *Node) { + OS << "/*implicit*/" << Node->getType().getAsString() << "()"; +} + void StmtPrinter::VisitVAArgExpr(VAArgExpr *Node) { OS << "va_arg("; PrintExpr(Node->getSubExpr()); |