/cp
2014-03-13 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/60383
* pt.c (maybe_process_partial_specialization): Check return value
of check_specialization_namespace.
/testsuite
2014-03-13 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/60383
* g++.dg/template/crash118.C: New.
* g++.dg/template/crash95.C: Adjust.
From-SVN: r208550
+2014-03-13 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/60383
+ * pt.c (maybe_process_partial_specialization): Check return value
+ of check_specialization_namespace.
+
2014-03-13 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/60254
if (CLASSTYPE_IMPLICIT_INSTANTIATION (type)
&& !COMPLETE_TYPE_P (type))
{
- check_specialization_namespace (CLASSTYPE_TI_TEMPLATE (type));
+ if (!check_specialization_namespace (CLASSTYPE_TI_TEMPLATE (type))
+ && !at_namespace_scope_p ())
+ return error_mark_node;
SET_CLASSTYPE_TEMPLATE_SPECIALIZATION (type);
DECL_SOURCE_LOCATION (TYPE_MAIN_DECL (type)) = input_location;
if (processing_template_decl)
+2014-03-13 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/60383
+ * g++.dg/template/crash118.C: New.
+ * g++.dg/template/crash95.C: Adjust.
+
2014-03-13 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/57189
--- /dev/null
+// PR c++/60383
+
+template<int> struct A
+{
+ template<typename> struct B
+ {
+ template<typename T> struct B<T*> {}; // { dg-error "specialization" }
+ };
+};
+
+A<0>::B<char*> b;
};
};
-S < int > s(0); // { dg-error "incomplete type" }
+S < int > s(0); // { dg-error "no matching" }