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 | 04421087832a031c90bd58f128c7c0e741db8dd2 (patch) | |
tree | c80c38dcc7ecb4d31cf5c10faa49e00fc373ea81 /lib/AST/StmtSerialization.cpp | |
parent | 5db17c9b5edb43e12196e565389b73e91a4fcb65 (diff) |
Add support for C++ default arguments, and rework Parse-Sema
interaction for function parameters, fixing PR2046.
Patch by Doug Gregor!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49369 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/StmtSerialization.cpp')
-rw-r--r-- | lib/AST/StmtSerialization.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/AST/StmtSerialization.cpp b/lib/AST/StmtSerialization.cpp index 41569df8f2..7058c0ce2f 100644 --- a/lib/AST/StmtSerialization.cpp +++ b/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); +} |