diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2008-08-22 15:38:55 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2008-08-22 15:38:55 +0000 |
commit | 857fcc2f8ee0f6d0e43d3e14b382684c1466e188 (patch) | |
tree | ec77e0c9452a294106f427cc7695c97d1b0a82b0 /clang/lib/AST/StmtPrinter.cpp | |
parent | 5a872657756a3a089046f208d967bc5dbc8c21d6 (diff) | |
download | bcm5719-llvm-857fcc2f8ee0f6d0e43d3e14b382684c1466e188.tar.gz bcm5719-llvm-857fcc2f8ee0f6d0e43d3e14b382684c1466e188.zip |
Add support for C++'s "type-specifier ( expression-list )" expression:
-The Parser calls a new "ActOnCXXTypeConstructExpr" action.
-Sema, depending on the type and expressions number:
-If the type is a class, it will treat it as a class constructor. [TODO]
-If there's only one expression (i.e. "int(0.5)" ), creates a new "CXXFunctionalCastExpr" Expr node
-If there are no expressions (i.e "int()" ), creates a new "CXXZeroInitValueExpr" Expr node.
llvm-svn: 55177
Diffstat (limited to 'clang/lib/AST/StmtPrinter.cpp')
-rw-r--r-- | clang/lib/AST/StmtPrinter.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/clang/lib/AST/StmtPrinter.cpp b/clang/lib/AST/StmtPrinter.cpp index 5b4c0ec7ce3..a76506007d6 100644 --- a/clang/lib/AST/StmtPrinter.cpp +++ b/clang/lib/AST/StmtPrinter.cpp @@ -818,6 +818,17 @@ void StmtPrinter::VisitCXXDefaultArgExpr(CXXDefaultArgExpr *Node) { // Nothing to print: we picked up the default argument } +void StmtPrinter::VisitCXXFunctionalCastExpr(CXXFunctionalCastExpr *Node) { + OS << Node->getType().getAsString(); + OS << "("; + PrintExpr(Node->getSubExpr()); + OS << ")"; +} + +void StmtPrinter::VisitCXXZeroInitValueExpr(CXXZeroInitValueExpr *Node) { + OS << Node->getType().getAsString() << "()"; +} + // Obj-C void StmtPrinter::VisitObjCStringLiteral(ObjCStringLiteral *Node) { |