Commit ba3307c0 by Nathan Sidwell Committed by Nathan Sidwell

re PR c++/5507 (Overzealous implicit typename warning)

cp:
        PR c++/5507
        * decl.c (make_typename_type): Remove implicit typenameness.
testsuite:
        PR c++/5507
        * g++.dg/template/typename2.C: New test.

From-SVN: r52124
parent d4bb3dd7
2002-04-10 Nathan Sidwell <nathan@codesourcery.com>
PR c++/5507
* decl.c (make_typename_type): Remove implicit typenameness.
2002-04-09 Jason Merrill <jason@redhat.com>
PR optimization/6189
......
......@@ -5699,6 +5699,17 @@ make_typename_type (context, name, complain)
{
if (DECL_ARTIFICIAL (t) || !(complain & tf_keep_type_decl))
t = TREE_TYPE (t);
if (IMPLICIT_TYPENAME_P (t))
{
/* Lookup found an implicit typename that we had
injected into the current scope. Doing things
properly would have located the exact same type,
so there is no error here. We must remove the
implicitness so that we do not warn about it. */
t = copy_node (t);
TREE_TYPE (t) = NULL_TREE;
}
return t;
}
}
......
2002-04-10 Nathan Sidwell <nathan@codesourcery.com>
PR c++/5507
* g++.dg/template/typename2.C: New test.
2002-04-10 Alan Modra <amodra@bigpond.net.au>
* gcc.c-torture/execute/loop-12.c: New.
......
// { dg-do compile }
// { dg-options "" }
// Copyright (C) 2001 Free Software Foundation, Inc.
// Contributed by Nathan Sidwell 21 Mar 2002 <nathan@codesourcery.com>
// PR 5507. Overzealous implicit typename warning
template<typename _CharT>
class __ctype_abstract_base
{
typedef int mask;
};
template<typename _CharT>
class ctype : public __ctype_abstract_base<_CharT>
{
typedef typename ctype::mask mask;
};
template<typename _CharT>
class ctype2 : public __ctype_abstract_base<_CharT>
{
typedef mask mask; // { dg-warning "(`typename )|(implicit typename)" "" }
};
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