Dear all abc experts,
I have a problem when I try to compile the following simple hierarchy with
their respectively aspects:
public interface I {
public void m(int x);
}
}
public class C implements I{
public void m(int x) {
}
}
public privileged aspect Aspect_I {
private boolean I.m$I(int x) {
return true;
}
}
public privileged aspect Aspect_C {
private boolean C.m$C(int x) {
return (m$I(x)); --> *probably the root of error*!!!
}
}
The error is the following:
Buildfile:
C:\Java\Eclipse-Workspace\PhD\Experimentos\J2SE\TestABCWeaver\build.xml
compile-abc-files:
[java] Exception in thread "main" polyglot.util.InternalCompilerError:
unhandled exception during weaving/optimisation
[java] at
abc.main.CompileSequence.runSequence(CompileSequence.java:142)
[java] at abc.main.Main.run(Main.java:406)
[java] at abc.main.Main.main(Main.java:144)
[java] Caused by: polyglot.util.InternalCompilerError: Exception while
processing <C: boolean accessor$m$I$6(int)>
[java] at abc.main.CompileSequence.weave(CompileSequence.java:414)
[java] at
abc.main.CompileSequence.runSequence(CompileSequence.java:115)
[java] ... 2 more
[java] Caused by: java.lang.NullPointerException
[java] at soot.AbstractValueBox.setValue(AbstractValueBox.java:42)
[java] at
soot.jimple.internal.JimpleLocalBox.<init>(JimpleLocalBox.java:39)
[java] at soot.jimple.Jimple.newLocalBox(Jimple.java:850)
[java] at
soot.jimple.internal.JInterfaceInvokeExpr.<init>(JInterfaceInvokeExpr.java:42)
[java] at
soot.jimple.Jimple.newInterfaceInvokeExpr(Jimple.java:463)
[java] at
abc.soot.util.MethodAccessorMethodSource.getBody(MethodAccessorMethodSource.java:100)
[java] at
soot.SootMethod.getBodyFromMethodSource(SootMethod.java:82)
[java] at soot.SootMethod.retrieveActiveBody(SootMethod.java:329)
[java] at abc.main.CompileSequence.weave(CompileSequence.java:410)
[java] ... 3 more
[java] Java Result: 1
BUILD SUCCESSFUL
Total time: 6 seconds
When I compile just the Interface with its aspect, the compilation has no
problem... But when I put the above scenario, the above error occurs. I
tested and I figure out when I call the inherited intertype method m$I(x)
within the intertype declared in C (m$C(int x)), the problem happens!
Can someone show me how to tackle this problem? The above scenario is just
a illustration, in fact, I use several other applications, but all of them
rely on the above
scenario!
It's important to note that such a problem does not occur when I employ the
ajc weaver!!
Regards,
Henrique
-- Henrique Rebêlo, Centro de Informática, UFPE http://www.cin.ufpe.br/~hemrReceived on Mon May 18 2009 - 19:05:00 BST
This archive was generated by hypermail 2.2.0 : Tue May 19 2009 - 12:50:11 BST