So, this is only an issue for static functions and vars? Constants should be fine. Right?
On Oct 5, 2016, at 9:08 PM, Alex Harui <aha...@adobe.com> wrote: > > > On 10/5/16, 10:43 AM, "Harbs" <harbs.li...@gmail.com> wrote: > >> I have not been following this discussion very well, so I’m not sure I >> got the issue, but will this prevent optimization of minimized code which >> accesses static properties? > > I think I have discovered that static getters/setters were never getting > renamed anyway. That's because if you have: > > public class Foo { > public static function get bar():String > > It becomes: > > Object.defineProperty(Foo, { bar : function ... } > > And thus "bar" is a key in an Object and GCC doesn't try to rename those. > > Josh tried using @expose, which also prevented renaming as well, but we > want to avoid using deprecated jsdoc tags. > > So, I think the final minified code in js-release is the same whether we > are using @expose or this proposed change, but if you work with the > js-debug code you will see: > > Foo["bar"] > > instead of > > Foo.bar > > FWIW, with just plain @export, the problem is that when setting up the > renamed list for a class, GCC seems to only look at the code that looks > like: > > /** > * @type {string} > */ > Foo.someOtherStaticProperty; > > and doesn't understand the Object.defineProperty call, so it doesn't think > there is a "bar" property on Foo at all. So then, it optimizes > > Foo.bar > > to just a global like: > > xx > > HTH, > -Alex >