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
This commit is contained in:
Mark Mitchell 1999-02-01 17:25:51 +00:00 committed by Mark Mitchell
parent 1328d92f81
commit 5326f06d7f
3 changed files with 32 additions and 1 deletions

View File

@ -1,3 +1,8 @@
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>
* input.c (inline): Don't define, its handled by system.h.

View File

@ -6083,7 +6083,8 @@ tsubst (t, args, in_decl)
But, such constructs have already been resolved by this
point, so here CTX really should have complete type, unless
it's a partial instantiation. */
if (!uses_template_parms (ctx)
if (!uses_template_parms (ctx)
&& !TYPE_BEING_DEFINED (ctx)
&& !complete_type_or_else (ctx))
return error_mark_node;

View File

@ -0,0 +1,25 @@
// 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>;