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.
......
...@@ -6083,7 +6083,8 @@ tsubst (t, args, in_decl) ...@@ -6083,7 +6083,8 @@ tsubst (t, args, in_decl)
But, such constructs have already been resolved by this But, such constructs have already been resolved by this
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