When set to decompile a program whose bytecodes have
been optimised (e.g. with Soot), the decompiler seems
to get confused.
Same source code as previous bug report; optimised
bytecodes as per attached sample.zip. Only Main.class
is optimised. The decompilation for f has the following
errors:
public static void f(short i)
{
Drawable drawable;
if (i > 10) {
Rectangle rectangle = new Rectangle; //
Error: should be combined with the below
rectangle(i , i); // Error: not assigned
to anything
i = rectangle.isFat(); // Error:
overwrites parameter (separate live ranges)
rectangle = rectangle; // Should assign
to drawable
}
else {
drawable = new Circle; // Error: should
be combined with the below call
drawable(i); // Error: not assigned to
anything
i = drawable.isFat(); // Error: wrong
type (live ranges)
drawable = drawable; // Error: no effect
}
if (i == 0) // Error: should be boolean
local, not parameter (separate live ranges)
drawable.draw();
return;
}
Contains 4 .class files; Main.class is optimised