Commit 86e4b1e4 by Tom Tromey Committed by Tom Tromey

expr.c (pop_type_0): Return `Object' if trying to merge two interface types.

	* expr.c (pop_type_0): Return `Object' if trying to merge two
	interface types.
	* verify.c (merge_types): Don't return `TYPE_UNKNOWN' for
	interface types; `Object' is always a valid supertype.

From-SVN: r36378
parent d19cbcb5
2000-09-12 Tom Tromey <tromey@cygnus.com>
* expr.c (pop_type_0): Return `Object' if trying to merge two
interface types.
* verify.c (merge_types): Don't return `TYPE_UNKNOWN' for
interface types; `Object' is always a valid supertype.
2000-09-12 Tom Tromey <tromey@cygnus.com>
Fix for PR gcj/33:
* jv-scan.c (help): Document --encoding.
(options): Added `encoding' entry.
......
......@@ -320,9 +320,8 @@ pop_type_0 (type)
/* This is a kludge, but matches what Sun's verifier does.
It can be tricked, but is safe as long as type errors
(i.e. interface method calls) are caught at run-time. */
else if (CLASS_INTERFACE (TYPE_NAME (TREE_TYPE (type)))
&& t == object_ptr_type_node)
return t;
/* FIXME: this is worse than a kludge, probably. */
return object_ptr_type_node;
}
return NULL_TREE;
}
......
......@@ -173,6 +173,8 @@ merge_types (type1, type2)
if (CLASS_INTERFACE (TYPE_NAME (tt1)))
{
/* FIXME: should see if two interfaces have a common
superinterface. */
if (CLASS_INTERFACE (TYPE_NAME (tt2)))
{
/* This is a kludge, but matches what Sun's verifier does.
......@@ -185,7 +187,7 @@ merge_types (type1, type2)
if (can_widen_reference_to (tt2, tt1))
return type1;
else
return TYPE_UNKNOWN;
return object_ptr_type_node;
}
}
else if (CLASS_INTERFACE (TYPE_NAME (tt2)))
......@@ -193,7 +195,7 @@ merge_types (type1, type2)
if (can_widen_reference_to (tt1, tt2))
return type2;
else
return TYPE_UNKNOWN;
return object_ptr_type_node;
}
type1 = tt1;
......
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