[kaffe] KJC bug report: inner class cannot find the enclosing class's method

Guilhem Lavaux guilhem at kaffe.org
Wed Aug 13 06:03:02 PDT 2003


Ito Kazumitsu wrote:

>Hi,
>
>I think this is a bug of KJC.
>
>While trying to build the CVS verion of HSQLDB
>(http://hsqldb.sourceforge.net/), I found some
>code which kjc cannot compile while both Sun's javac
>and gcj can.
>
>Simplified programs to show this bug are as follows.
>
>bash$ cat a/A.java
>package a;
>public class A {
>  protected void foo() {
>    System.out.println("This is foo.");
>  }
>}
>bash$ cat b/B.java
>package b;
>import a.A;
>public class B extends A {
>  public static void main(String[] args) {
>    (new B()).go();
>  }
>  private void go() {
>    (new B1()).bar();
>  }
>  class B1 {
>    private void bar() {
>      B.this.foo();
>    }
>  }
>}
>bash$ CLASSPATH=kjc.jar java at.dms.kjc.Main a/A.java b/B.java 
>b\B.java:12: error:Cannot find method "b.B.foo()"
>bash$ javac a/A.java b/B.java 
>bash$ java b.B
>This is foo.
>bash$ 
>
I have found where the bug lies ! In CMethod, the test for accessibility 
forget to check whether the calling
context is nested into an authorized class. I have attached the real 
simple patch with this mail.

Cheers,
Guilhem.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: method_access_nested_patch
Url: http://kaffe.org/pipermail/kaffe/attachments/20030813/524ba4b3/attachment-0002.txt 


More information about the kaffe mailing list