diff options
| author | Chris Lattner <sabre@nondot.org> | 2008-04-08 04:40:51 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2008-04-08 04:40:51 +0000 |
| commit | aa9c7aed0fd2cc29afae9875bab70d1c25345625 (patch) | |
| tree | 4402f923c782e1acf48aea09d8098226bb2af5ef /clang/lib/AST/StmtSerialization.cpp | |
| parent | 2163265b533250ffa695fbfaa4d3a34f3b07a7b5 (diff) | |
| download | bcm5719-llvm-aa9c7aed0fd2cc29afae9875bab70d1c25345625.tar.gz bcm5719-llvm-aa9c7aed0fd2cc29afae9875bab70d1c25345625.zip | |
Add support for C++ default arguments, and rework Parse-Sema
interaction for function parameters, fixing PR2046.
Patch by Doug Gregor!
llvm-svn: 49369
Diffstat (limited to 'clang/lib/AST/StmtSerialization.cpp')
| -rw-r--r-- | clang/lib/AST/StmtSerialization.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/clang/lib/AST/StmtSerialization.cpp b/clang/lib/AST/StmtSerialization.cpp index 41569df8f21..7058c0ce2f1 100644 --- a/clang/lib/AST/StmtSerialization.cpp +++ b/clang/lib/AST/StmtSerialization.cpp @@ -13,6 +13,7 @@ //===----------------------------------------------------------------------===// #include "clang/AST/Expr.h" +#include "clang/AST/ExprCXX.h" #include "llvm/Bitcode/Serialize.h" #include "llvm/Bitcode/Deserialize.h" @@ -185,6 +186,13 @@ Stmt* Stmt::Create(Deserializer& D, ASTContext& C) { case ObjCStringLiteralClass: return ObjCStringLiteral::CreateImpl(D, C); + + //==--------------------------------------==// + // C++ + //==--------------------------------------==// + case CXXDefaultArgExprClass: + return CXXDefaultArgExpr::CreateImpl(D, C); + } } @@ -1002,3 +1010,16 @@ ObjCStringLiteral* ObjCStringLiteral::CreateImpl(Deserializer& D, ASTContext& C) StringLiteral* String = cast<StringLiteral>(D.ReadOwnedPtr<Stmt>(C)); return new ObjCStringLiteral(String,T,L); } + +//===----------------------------------------------------------------------===// +// C++ Serialization +//===----------------------------------------------------------------------===// +void CXXDefaultArgExpr::EmitImpl(Serializer& S) const { + S.EmitPtr(Param); +} + +CXXDefaultArgExpr *CXXDefaultArgExpr::CreateImpl(Deserializer& D, ASTContext& C) { + ParmVarDecl* Param = 0; + D.ReadPtr(Param, false); + return new CXXDefaultArgExpr(Param); +} |

