r186631 - Fix crash-on-invalid with inheriting constructor.

Eli Friedman eli.friedman at gmail.com
Thu Jul 18 16:59:50 PDT 2013


Author: efriedma
Date: Thu Jul 18 18:59:50 2013
New Revision: 186631

URL: http://llvm.org/viewvc/llvm-project?rev=186631&view=rev
Log:
Fix crash-on-invalid with inheriting constructor.

Fixes PR16656.

Modified:
    cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
    cfe/trunk/test/CXX/special/class.inhctor/p8.cpp

Modified: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td?rev=186631&r1=186630&r2=186631&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td (original)
+++ cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td Thu Jul 18 18:59:50 2013
@@ -3422,7 +3422,7 @@ def err_redefinition : Error<"redefiniti
 def err_definition_of_implicitly_declared_member : Error<
   "definition of implicitly declared %select{default constructor|copy "
   "constructor|move constructor|copy assignment operator|move assignment "
-  "operator|destructor}1">;
+  "operator|destructor|function}1">;
 def err_definition_of_explicitly_defaulted_member : Error<
   "definition of explicitly defaulted %select{default constructor|copy "
   "constructor|move constructor|copy assignment operator|move assignment "

Modified: cfe/trunk/test/CXX/special/class.inhctor/p8.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/special/class.inhctor/p8.cpp?rev=186631&r1=186630&r2=186631&view=diff
==============================================================================
--- cfe/trunk/test/CXX/special/class.inhctor/p8.cpp (original)
+++ cfe/trunk/test/CXX/special/class.inhctor/p8.cpp Thu Jul 18 18:59:50 2013
@@ -1,6 +1,5 @@
 // RUN: %clang_cc1 -std=c++11 -verify %s
 
-// expected-no-diagnostics
 struct A {
   constexpr A(const int&) : rval(false) {}
   constexpr A(const int&&) : rval(true) {}
@@ -28,3 +27,6 @@ struct D : C {
   using C::C;
 };
 static_assert(D(123).v == 123, "");
+
+// FIXME: This diagnostic sucks.
+template<typename T> constexpr D::D(T t) : C(t) {} // expected-error {{definition of implicitly declared function}}





More information about the cfe-commits mailing list