Commit 5326f06d by Mark Mitchell Committed by Mark Mitchell

pt.c (tsubst, [...]): Check TYPE_BEING_DEFINED before calling complete_type_or_else.

	* pt.c (tsubst, case TYPENAME_TYPE): Check TYPE_BEING_DEFINED
	before calling complete_type_or_else.

From-SVN: r24958
parent 1328d92f
1999-02-01 Mark Mitchell <mark@markmitchell.com>
* pt.c (tsubst, case TYPENAME_TYPE): Check TYPE_BEING_DEFINED
before calling complete_type_or_else.
Mon Feb 1 09:49:52 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> Mon Feb 1 09:49:52 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* input.c (inline): Don't define, its handled by system.h. * input.c (inline): Don't define, its handled by system.h.
......
...@@ -6084,6 +6084,7 @@ tsubst (t, args, in_decl) ...@@ -6084,6 +6084,7 @@ tsubst (t, args, in_decl)
point, so here CTX really should have complete type, unless point, so here CTX really should have complete type, unless
it's a partial instantiation. */ it's a partial instantiation. */
if (!uses_template_parms (ctx) if (!uses_template_parms (ctx)
&& !TYPE_BEING_DEFINED (ctx)
&& !complete_type_or_else (ctx)) && !complete_type_or_else (ctx))
return error_mark_node; return error_mark_node;
......
// Build don't link:
template <class T>
struct S1 {
friend bool f<>(const S1&);
typedef T X;
};
template <class T>
struct S2 {
};
template <class T>
struct S2<S1<T> > {
typedef typename S1<T>::X Y;
};
template <class T>
bool f(T);
template <class T>
typename S2<S1<T> >::Y
f(const S1<T>&);
template struct S1<int>;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment