From: Douglas Gregor Date: Tue, 31 Jul 2012 22:15:04 +0000 (+0000) Subject: When testing whether we can perform copy or move initialization, be X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3c394c54511b27be0ff6968f159bba3521ab3c3e;p=clang When testing whether we can perform copy or move initialization, be sure to supply an initialization location. Fixes . git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161084 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaInit.cpp b/lib/Sema/SemaInit.cpp index 0e5a02f342..cab7661898 100644 --- a/lib/Sema/SemaInit.cpp +++ b/lib/Sema/SemaInit.cpp @@ -6179,8 +6179,8 @@ Sema::CanPerformCopyInitialization(const InitializedEntity &Entity, Expr *InitE = Init.get(); assert(InitE && "No initialization expression"); - InitializationKind Kind = InitializationKind::CreateCopy(SourceLocation(), - SourceLocation()); + InitializationKind Kind + = InitializationKind::CreateCopy(InitE->getLocStart(), SourceLocation()); InitializationSequence Seq(*this, Entity, Kind, &InitE, 1); return !Seq.Failed(); } diff --git a/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp b/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp index 7384309f97..f11e19ae6f 100644 --- a/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp +++ b/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp @@ -175,3 +175,15 @@ namespace PR12436 { X x({}, 17); } + +namespace rdar11948732 { + template struct X {}; + + struct XCtorInit { + XCtorInit(std::initializer_list>); + }; + + void f(X &xi) { + XCtorInit xc = { xi, xi }; + } +}