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
> 

Reply via email to