+ update 2020: WARNING - support of the decompiler is now VERY LIMITED. There are no active developers. This means we will NOT develop new features and/or fix most of bugs. We left the tracker running in case somebody from community would like to work on it. Sorry for the inconvenience.
State: closed new: Initial state. As long as issue is in this state, the work on the issue has not yet begun. opened: Opened state means developer started working on the issue. Feature/Fix will probably be in the next release. postponed: This means developer is not working on it now, for some reason it cannot be implemented now. Issue may be opened again in the future. upgraded: Issue is in upgraded state when developer made changes to the program and new version was released. closed: This means the user is satisfied with issue results and no more changes are needed. invalid: These issues cannot be solved. ignored: Developer decided to take no action on this issue. returned: Program changes were made but user is not satisfied and returned the issue.
Try to open attached file and decompile class "things".
Interesting part at function move():
things.arr._yscale=register0=(things.arr._y + 20) / 3;
arr ._xscale = arr ._yscale = (arr ._y + 20) / 3;
The "things." prefix is OK I think as arr is static variable.
Register0 is there because it is chained assignment.
This is how FFDec currently decompiles chained assignments.
It is how it intended to be.
To decompile it as
things.arr._xscale=things.arr._yscale=(things.arr._y + 20) / 3;
I will need to find out whether the register is temporary only (not user elsewhere),
and if it is, then remove it.
I see.. would be great to see cleaner version in future, such code not so readable. And it
will not compile back (register0 is not declared):
things.as, Line 28 There is no property with the name 'register0'.