| [#455] | project: compiler | priority: low | category: bug | |
|---|---|---|---|---|
| submitter | assigned to | status | date submitted | |
| Iulian | Iulian | fixed | 2005-09-21 16:21:11.0 | |
| subject | IllegalAccessError on (some) method calls to Java inherited methods | |||
| code |
// A.java
package pA;
// package-level visibility
abstract class A {
public void doSomething() { System.out.println("A"); }
}
// B.java
package pA;
public class B extends A {
}
// bug.scala
package pB;
import pA._;
object Main with Application {
val b = new B;
b.doSomething();
}
|
|||
| what happened | |
|||
| what expected | The problem is that the code generator outputs code that references the 'owner' of the 'doSomething' method, which is class A. However, class 'A' lives in a different package and is not visible to object 'Main'. The code should reference the class of the receiver, in this case 'B' (which inherits the method, but does not 'own' it). This problem is difficult to reproduce, as the JVM seems to behave differently if the java classfiles (A and B) are packaged in a jar (if not, it runs without problems). | |||
| [back to overview] | ||||
| Iulian edited on 2006-08-22 15:41:15.0 |