2016-04-13 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/70635
* pt.c (resolve_typename_type): Fix typos in infinite recursion
avoidance mechanism.
/testsuite
2016-04-13 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/70635
* g++.dg/parse/pr70635.C: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@234953
138bc75d-0d04-0410-961f-
82ee72b054a4
+2016-04-13 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/70635
+ * pt.c (resolve_typename_type): Fix typos in infinite recursion
+ avoidance mechanism.
+
2016-04-13 Jason Merrill <jason@redhat.com>
PR c++/70634
{
/* Ill-formed programs can cause infinite recursion here, so we
must catch that. */
- TYPENAME_IS_RESOLVING_P (type) = 1;
+ TYPENAME_IS_RESOLVING_P (result) = 1;
result = resolve_typename_type (result, only_current_p);
- TYPENAME_IS_RESOLVING_P (type) = 0;
+ TYPENAME_IS_RESOLVING_P (result) = 0;
}
/* Qualify the resulting type. */
+2016-04-13 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/70635
+ * g++.dg/parse/pr70635.C: New.
+
2016-04-13 Marek Polacek <polacek@redhat.com>
PR c++/70639
--- /dev/null
+// PR c++/70635
+// { dg-options "-fpermissive -w" }
+
+template < typename T >
+struct A
+{
+ struct B;
+ typedef typename B::type type;
+};
+
+template < typename T >
+struct A < T >::B
+{
+ typedef typename A < type >::type type; // { dg-error "type" }
+ type Foo ();
+};
+
+template < typename T >
+typename A < T >::B::type
+A < T >::B::Foo ()
+{
+ return 0;
+}
+
+template class A<int>;