Author: rsmith
Date: Sun Feb 15 22:42:59 2015
New Revision: 229353
URL: http://llvm.org/viewvc/llvm-project?rev=229353&view=rev
Log:
DR1467: If aggregate initialization encounters an initializer list for which
subobject initialization is not possible, be sure to note the overall
initialization as having failed so that overload resolution knows that the
relevant candidate is not viable.
Modified:
cfe/trunk/lib/Sema/SemaInit.cpp
cfe/trunk/test/CXX/drs/dr14xx.cpp
Modified: cfe/trunk/lib/Sema/SemaInit.cpp
URL:
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaInit.cpp?rev=229353&r1=229352&r2=229353&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaInit.cpp (original)
+++ cfe/trunk/lib/Sema/SemaInit.cpp Sun Feb 15 22:42:59 2015
@@ -1015,7 +1015,8 @@ void InitListChecker::CheckSubElementTyp
UpdateStructuredListElement(StructuredList, StructuredIndex,
Result.getAs<Expr>());
- }
+ } else if (!Seq)
+ hadError = true;
++Index;
return;
}
Modified: cfe/trunk/test/CXX/drs/dr14xx.cpp
URL:
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/drs/dr14xx.cpp?rev=229353&r1=229352&r2=229353&view=diff
==============================================================================
--- cfe/trunk/test/CXX/drs/dr14xx.cpp (original)
+++ cfe/trunk/test/CXX/drs/dr14xx.cpp Sun Feb 15 22:42:59 2015
@@ -327,6 +327,13 @@ namespace dr1467 { // dr1467: 3.7 c++11
struct NestedInit { int a, b, c; };
NestedInit ni[1] = {{NestedInit{1, 2, 3}}};
+
+ namespace NestedInit2 {
+ struct Pair { int a, b; };
+ struct TwoPairs { TwoPairs(Pair, Pair); };
+ struct Value { Value(Pair); Value(TwoPairs); };
+ void f() { Value{{{1,2},{3,4}}}; }
+ }
} // dr1467
namespace dr1490 { // dr1490: 3.7 c++11
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits