Commit 9d703598 by Jason Merrill Committed by Jason Merrill

* decl.c (make_implicit_typename): Lose useless code.

From-SVN: r18719
parent 4d50dd69
Thu Mar 19 11:51:58 1998 Jason Merrill <jason@yorick.cygnus.com> Thu Mar 19 11:51:58 1998 Jason Merrill <jason@yorick.cygnus.com>
* decl.c (make_implicit_typename): Lose useless code.
* call.c (standard_conversion): Handle A* -> const A* properly. * call.c (standard_conversion): Handle A* -> const A* properly.
* pt.c (get_bindings_real): Rename from get_bindings. Add * pt.c (get_bindings_real): Rename from get_bindings. Add
......
...@@ -4575,8 +4575,7 @@ make_typename_type (context, name) ...@@ -4575,8 +4575,7 @@ make_typename_type (context, name)
} }
/* Given a TYPE_DECL T looked up in CONTEXT, return a TYPENAME_TYPE /* Given a TYPE_DECL T looked up in CONTEXT, return a TYPENAME_TYPE
where the scope is either CONTEXT or the first base of CONTEXT along the where the scope is CONTEXT. Also remember what type T refers to.
inheritance chain to T that depends on template parameters.
Called from lookup_name_real to implement the implicit typename Called from lookup_name_real to implement the implicit typename
extension. */ extension. */
...@@ -4585,29 +4584,7 @@ static tree ...@@ -4585,29 +4584,7 @@ static tree
make_implicit_typename (context, t) make_implicit_typename (context, t)
tree context, t; tree context, t;
{ {
tree retval; tree retval = make_typename_type (context, DECL_NAME (t));
if (TREE_CODE (context) != TYPENAME_TYPE
&& uses_template_parms (DECL_CONTEXT (t))
&& DECL_CONTEXT (t) != context)
{
tree binfo = get_binfo (DECL_CONTEXT (t), context, 0);
while (binfo)
{
tree next = BINFO_INHERITANCE_CHAIN (binfo);
if (! uses_template_parms (BINFO_TYPE (next))
|| BINFO_TYPE (next) == context)
break;
binfo = next;
}
if (binfo)
retval = make_typename_type (BINFO_TYPE (binfo), DECL_NAME (t));
else
/* FIXME: find the enclosing class whose base t comes from. */
retval = make_typename_type (DECL_CONTEXT (t), DECL_NAME (t));
}
else
retval = make_typename_type (context, DECL_NAME (t));
if (TREE_CODE (retval) == TYPENAME_TYPE) if (TREE_CODE (retval) == TYPENAME_TYPE)
TREE_TYPE (retval) = TREE_TYPE (t); TREE_TYPE (retval) = TREE_TYPE (t);
......
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