diff options
| author | Douglas Gregor <dgregor@apple.com> | 2009-12-20 21:10:58 +0000 | 
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2009-12-20 21:10:58 +0000 | 
| commit | 1b6d10555ff70efcc44b8bf25d4755d88a15d48c (patch) | |
| tree | 2de7de289e383a86ac23ec394e155079334997ef /clang/lib/Sema/SemaDecl.cpp | |
| parent | b752f1e25caeb08f2b6dde8a3890c6ac1ef5d012 (diff) | |
| download | llvm-1b6d10555ff70efcc44b8bf25d4755d88a15d48c.zip llvm-1b6d10555ff70efcc44b8bf25d4755d88a15d48c.tar.gz llvm-1b6d10555ff70efcc44b8bf25d4755d88a15d48c.tar.bz2  | |
Revert accidental commit
llvm-svn: 91795
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 31 | 
1 files changed, 20 insertions, 11 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index a80d62a..c873f39 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -3745,19 +3745,28 @@ void Sema::ActOnUninitializedDecl(DeclPtrTy dcl,            InitType->isRecordType() && !InitType->isDependentType()) {          if (!RequireCompleteType(Var->getLocation(), InitType,                                   diag::err_invalid_incomplete_type_use)) { -          InitializedEntity Entity -            = InitializedEntity::InitializeVariable(Var); -          InitializationKind Kind -            = InitializationKind::CreateDefault(Var->getLocation()); - -          InitializationSequence InitSeq(*this, Entity, Kind, 0, 0); -          OwningExprResult Init = InitSeq.Perform(*this, Entity, Kind, -                                                  MultiExprArg(*this, 0, 0)); -          if (Init.isInvalid()) +          ASTOwningVector<&ActionBase::DeleteExpr> ConstructorArgs(*this); + +          CXXConstructorDecl *Constructor +            = PerformInitializationByConstructor(InitType,  +                                                 MultiExprArg(*this, 0, 0), +                                                 Var->getLocation(), +                                               SourceRange(Var->getLocation(), +                                                           Var->getLocation()), +                                                 Var->getDeclName(), +                         InitializationKind::CreateDefault(Var->getLocation()), +                                                 ConstructorArgs); +           +          // FIXME: Location info for the variable initialization? +          if (!Constructor)              Var->setInvalidDecl();            else { -            Var->setInit(Context,  -                       MaybeCreateCXXExprWithTemporaries(Init.takeAs<Expr>())); +            // FIXME: Cope with initialization of arrays +            if (!Constructor->isTrivial() && +                InitializeVarWithConstructor(Var, Constructor,  +                                             move_arg(ConstructorArgs))) +              Var->setInvalidDecl(); +                          FinalizeVarWithDestructor(Var, InitType);            }          } else {  | 
