diff options
| author | Anders Carlsson <andersca@mac.com> | 2009-05-27 16:10:08 +0000 |
|---|---|---|
| committer | Anders Carlsson <andersca@mac.com> | 2009-05-27 16:10:08 +0000 |
| commit | 98cee2fde03ced3ba1272463c4697102a04a529f (patch) | |
| tree | cf28d2db054787842ebb7e7d5586f73f5b507d83 /clang/lib/Sema/SemaInit.cpp | |
| parent | 10a71da05a5765ff15bb71a0dbd6d1986d6b0f12 (diff) | |
| download | bcm5719-llvm-98cee2fde03ced3ba1272463c4697102a04a529f.tar.gz bcm5719-llvm-98cee2fde03ced3ba1272463c4697102a04a529f.zip | |
Create CXXConstructExprs when constructing via copy initialization.
llvm-svn: 72474
Diffstat (limited to 'clang/lib/Sema/SemaInit.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaInit.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp index d880c236d2d..3fae86d19d2 100644 --- a/clang/lib/Sema/SemaInit.cpp +++ b/clang/lib/Sema/SemaInit.cpp @@ -18,6 +18,7 @@ #include "Sema.h" #include "clang/Parse/Designator.h" #include "clang/AST/ASTContext.h" +#include "clang/AST/ExprCXX.h" #include "clang/AST/ExprObjC.h" #include <map> using namespace clang; @@ -116,7 +117,7 @@ static void CheckStringInit(Expr *Str, QualType &DeclT, Sema &S) { bool Sema::CheckInitializerTypes(Expr *&Init, QualType &DeclType, SourceLocation InitLoc, DeclarationName InitEntity, - bool DirectInit) { + bool DirectInit, VarDecl *VD) { if (DeclType->isDependentType() || Init->isTypeDependent() || Init->isValueDependent()) return false; @@ -160,7 +161,14 @@ bool Sema::CheckInitializerTypes(Expr *&Init, QualType &DeclType, InitLoc, Init->getSourceRange(), InitEntity, DirectInit? IK_Direct : IK_Copy); - return Constructor == 0; + if (!Constructor) + return true; + + // FIXME: What do do if VD is null here? + assert(VD && "Must have a var decl to construct into!"); + Init = CXXConstructExpr::Create(Context, VD, DeclType, Constructor, + false, &Init, 1); + return false; } // -- Otherwise (i.e., for the remaining copy-initialization |

