public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* libgcj/5641: Verifier ICE on reference to inherited method
@ 2002-02-09 2:06 ebb9
0 siblings, 0 replies; only message in thread
From: ebb9 @ 2002-02-09 2:06 UTC (permalink / raw)
To: gcc-gnats
>Number: 5641
>Category: libgcj
>Synopsis: Verifier ICE on reference to inherited method
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: ice-on-legal-code
>Submitter-Id: net
>Arrival-Date: Sat Feb 09 02:06:00 PST 2002
>Closed-Date:
>Last-Modified:
>Originator: Eric Blake
>Release: unknown-1.0
>Organization:
>Environment:
cygwin
>Description:
>From the Classpath mailing list:
http://mail.gnu.org/pipermail/classpath/2002-February/001881.html
Note in verify-jikes.gcj that the verifier chokes like this:
java/net/Socket.java: In class `java.net.Socket':
java/net/Socket.java: In method `java.net.Socket.getLocalAddress()':
java/net/Socket.java:296: class 'java.net.SocketImpl' has no method named 'getOption' matching signature '(I)Ljava/lang/Object;'
java/net/Socket.java: In method `java.net.Socket.setTcpNoDelay(boolean)':
java/net/Socket.java:388: class 'java.net.SocketImpl' has no method named 'setOption' matching signature '(ILjava/lang/Object;)V'
java/net/Socket.java: In method `java.net.Socket.getTcpNoDelay()':
java/net/Socket.java:403: Internal compiler error in gen_lowpart, at emit-rtl.c:1183
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
>How-To-Repeat:
I think this simplification will show the same problem (but I'm on cygwin, and can't check this):
interface I
{
void m();
}
abstract class C implements I {}
class Foo
{
void Bar(C c)
{
c.m();
}
void blah(C c)
{
c.m();
}
}
>Fix:
The verifier must track abstract methods inherited from interfaces.
Meanwhile, there are two workarounds in Java source code:
1) In class C, redeclare m:
abstract class C implements I
{
public abstract void m();
}
2) In class Foo, change the method qualifier to a class which declares the method:
class Foo
{
void Bar(C c)
{
((I) c).m();
}
void blah(C c)
{
((I) c).m();
}
}
>Release-Note:
>Audit-Trail:
>Unformatted:
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2002-02-09 10:06 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-02-09 2:06 libgcj/5641: Verifier ICE on reference to inherited method ebb9
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).