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