diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-12-10 17:56:55 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-12-10 17:56:55 +0000 |
commit | d87b61f6398bab21176f73818a8d11ca1c3632c8 (patch) | |
tree | 305875a6bec9e66a12b8c7957854db3a514706a7 /lib/Sema/SemaDecl.cpp | |
parent | 9f54ad4381370c6b771424b53d219e661d6d6706 (diff) |
Move initialization via initializer list over to InitializationSequences.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91050 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaDecl.cpp')
-rw-r--r-- | lib/Sema/SemaDecl.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index 3fa7e6558b..a171217073 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -3499,7 +3499,8 @@ void Sema::AddInitializerToDecl(DeclPtrTy dcl, ExprArg init, bool DirectInit) { Diag(VDecl->getLocation(), diag::err_block_extern_cant_init); VDecl->setInvalidDecl(); } else if (!VDecl->isInvalidDecl()) { - if (VDecl->getType()->isReferenceType()) { + if (VDecl->getType()->isReferenceType() + || isa<InitListExpr>(Init)) { InitializedEntity Entity = InitializedEntity::InitializeVariable(VDecl); @@ -3513,7 +3514,8 @@ void Sema::AddInitializerToDecl(DeclPtrTy dcl, ExprArg init, bool DirectInit) { InitializationSequence InitSeq(*this, Entity, Kind, &Init, 1); if (InitSeq) { OwningExprResult Result = InitSeq.Perform(*this, Entity, Kind, - MultiExprArg(*this, (void**)&Init, 1)); + MultiExprArg(*this, (void**)&Init, 1), + &DclT); if (Result.isInvalid()) { VDecl->setInvalidDecl(); return; @@ -3524,8 +3526,7 @@ void Sema::AddInitializerToDecl(DeclPtrTy dcl, ExprArg init, bool DirectInit) { InitSeq.Diagnose(*this, Entity, Kind, &Init, 1); VDecl->setInvalidDecl(); return; - } - + } } else if (CheckInitializerTypes(Init, DclT, VDecl->getLocation(), VDecl->getDeclName(), DirectInit)) VDecl->setInvalidDecl(); |