[fpc-devel] FPC-JVM: Breaking up a cycle

Jonas Maebe jonas.maebe at elis.ugent.be
Sun Aug 28 23:19:28 CEST 2011


On 28 Aug 2011, at 21:59, Sven Barth wrote:

> Here it is:
> 
> === output begin ===
> 
> Compiled from "FileObserver.java"
> public abstract class android.os.FileObserver extends java.lang.Object{
>    public static final int ACCESS;
>    public static final int MODIFY;
>    public static final int ATTRIB;
>    public static final int CLOSE_WRITE;
>    public static final int CLOSE_NOWRITE;
>    public static final int OPEN;
>    public static final int MOVED_FROM;
>    public static final int MOVED_TO;
>    public static final int CREATE;
>    public static final int DELETE;
>    public static final int DELETE_SELF;
>    public static final int MOVE_SELF;
>    public static final int ALL_EVENTS;
>    public android.os.FileObserver(java.lang.String);
>    public android.os.FileObserver(java.lang.String, int);
>    protected void finalize();
>    public void startWatching();
>    public void stopWatching();
>    public abstract void onEvent(int, java.lang.String);
> }

It's caused by the fact that javapp calls all constructors to "create". It then notices that the method name "create" conflicts with the constant CREATE, and tries to solve it by renaming the constructor to its original name + '_' (and setting the external name to the original name). Internally, the name of the constructor in class files is "<init>", so that gets changed into "<init>_" and as a result the filter afterwards to translate "<init>" to "create" isn't triggered anymore.

I can fix that, but then the constructor will still be called "Create_" rather than "Create" :/


Jonas


More information about the fpc-devel mailing list