[cfe-commits] r167506 - in /cfe/trunk: lib/Sema/SemaTemplateDeduction.cpp test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp

Eli Friedman eli.friedman at gmail.com
Tue Nov 6 15:56:42 PST 2012


Author: efriedma
Date: Tue Nov  6 17:56:42 2012
New Revision: 167506

URL: http://llvm.org/viewvc/llvm-project?rev=167506&view=rev
Log:
Fix assertion failure with auto and nested initializer list; PR14272.


Modified:
    cfe/trunk/lib/Sema/SemaTemplateDeduction.cpp
    cfe/trunk/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp

Modified: cfe/trunk/lib/Sema/SemaTemplateDeduction.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaTemplateDeduction.cpp?rev=167506&r1=167505&r2=167506&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaTemplateDeduction.cpp (original)
+++ cfe/trunk/lib/Sema/SemaTemplateDeduction.cpp Tue Nov  6 17:56:42 2012
@@ -3649,10 +3649,11 @@
       return DAR_Failed;
   }
 
-  QualType DeducedType = Deduced[0].getAsType();
-  if (DeducedType.isNull())
+  if (Deduced[0].getKind() != TemplateArgument::Type)
     return DAR_Failed;
 
+  QualType DeducedType = Deduced[0].getAsType();
+
   if (InitList) {
     DeducedType = BuildStdInitializerList(DeducedType, Loc);
     if (DeducedType.isNull())

Modified: cfe/trunk/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp?rev=167506&r1=167505&r2=167506&view=diff
==============================================================================
--- cfe/trunk/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp (original)
+++ cfe/trunk/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp Tue Nov  6 17:56:42 2012
@@ -187,3 +187,7 @@
     XCtorInit xc = { xi, xi };
   }
 }
+
+namespace PR14272 {
+  auto x { { 0, 0 } }; // expected-error {{cannot deduce actual type for variable 'x' with type 'auto' from initializer list}}
+}





More information about the cfe-commits mailing list