Is there a simple test case?

On 5/28/16, 2:18 PM, "Josh Tynjala" <[email protected]> wrote:

>Does anyone know a better solution to this?
>
>For some reason, static getters and setters weren't being called properly
>in a release build with ADVANCED_OPTIMIZATIONS. We included @export for
>the
>static properties, which seems to work fine for non-static getters and
>setters. However, for static getters and setters, Closure compiler was
>collapsing the property down to a global variable instead. I switched back
>to @expose, and it started working properly.
>
>The problem is that @expose is deprecated by Closure compiler. Obviously,
>I'd prefer not to use it, but I can't seem to find a working alternative.
>According to the docs [1], @nocollapse is supposed to stop a property from
>being collapsed into a variable. I tried replacing @export with
>@nocollapse, and I tried using both @export and @nocollapse, but it just
>didn't seem to work.
>
>[1] https://developers.google.com/closure/compiler/docs/js-for-compiler
>
>- Josh
>
>On Sat, May 28, 2016 at 2:08 PM, <[email protected]> wrote:
>
>> Repository: flex-falcon
>> Updated Branches:
>>   refs/heads/develop b3708662c -> fc4e3af9f
>>
>>
>> compiler-jx: static getters and setters use @expose instead of @export
>> because @export does not work in the release build with
>> ADVANCED_OPTIMIZATIONS
>>
>>
>> Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
>> Commit: 
>>http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/fc4e3af9
>> Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/fc4e3af9
>> Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/fc4e3af9
>>
>> Branch: refs/heads/develop
>> Commit: fc4e3af9f772ab586a75950afce9cc284878c3ff
>> Parents: b370866
>> Author: Josh Tynjala <[email protected]>
>> Authored: Sat May 28 14:08:08 2016 -0700
>> Committer: Josh Tynjala <[email protected]>
>> Committed: Sat May 28 14:08:08 2016 -0700
>>
>> ----------------------------------------------------------------------
>>  .../flex/compiler/internal/codegen/js/jx/AccessorEmitter.java  | 6
>>+++++-
>>  .../internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java  | 4 ++--
>>  2 files changed, 7 insertions(+), 3 deletions(-)
>> ----------------------------------------------------------------------
>>
>>
>>
>> 
>>http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/fc4e3af9/compiler
>>-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/Accesso
>>rEmitter.java
>> ----------------------------------------------------------------------
>> diff --git
>> 
>>a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/
>>jx/AccessorEmitter.java
>> 
>>b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/
>>jx/AccessorEmitter.java
>> index 7440462..5e7aa50 100644
>> ---
>> 
>>a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/
>>jx/AccessorEmitter.java
>> +++
>> 
>>b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/
>>jx/AccessorEmitter.java
>> @@ -340,7 +340,11 @@ public class AccessorEmitter extends JSSubEmitter
>> implements
>>                          propName);
>>                  IGetterNode getterNode = p.getter;
>>                  ISetterNode setterNode = p.setter;
>> -                writeNewline("/** @export */");
>> +                // @expose is supposed to be deprecated, so this isn't
>> ideal,
>> +                // but @export and/or @nocollapse were not working in a
>> release
>> +                // build with ADVANCED_OPTIMIZATIONS, so I don't know
>> what else
>> +                // to do. maybe it's a bug in closure compiler... -JT
>> +                writeNewline("/** @expose */");
>>                  if (getterNode != null)
>>                  {
>>                      startMapping(getterNode);
>>
>>
>> 
>>http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/fc4e3af9/compiler
>>-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/Tes
>>tFlexJSAccessorMembers.java
>> ----------------------------------------------------------------------
>> diff --git
>> 
>>a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/
>>flexjs/TestFlexJSAccessorMembers.java
>> 
>>b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/
>>flexjs/TestFlexJSAccessorMembers.java
>> index 58769fe..b00d31e 100644
>> ---
>> 
>>a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/
>>flexjs/TestFlexJSAccessorMembers.java
>> +++
>> 
>>b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/
>>flexjs/TestFlexJSAccessorMembers.java
>> @@ -86,7 +86,7 @@ public class TestFlexJSAccessorMembers extends
>> TestGoogAccessorMembers
>>         IClassNode node = (IClassNode) getNode("public static function
>>get
>> foo():int{return -1;}",
>>                         IClassNode.class, WRAP_LEVEL_CLASS);
>>          asBlockWalker.visitClass(node);
>> -        assertOut("/**\n * @constructor\n */\nFalconTest_A = function()
>> {\n};Object.defineProperties(FalconTest_A, /** @lends {FalconTest_A} */
>> {\n/** @export */\nfoo: {\nget: function() {\n  return -1;\n}}}\n);");
>> +        assertOut("/**\n * @constructor\n */\nFalconTest_A = function()
>> {\n};Object.defineProperties(FalconTest_A, /** @lends {FalconTest_A} */
>> {\n/** @expose */\nfoo: {\nget: function() {\n  return -1;\n}}}\n);");
>>      }
>>
>>      @Override
>> @@ -136,7 +136,7 @@ public class TestFlexJSAccessorMembers extends
>> TestGoogAccessorMembers
>>         IClassNode node = (IClassNode) getNode("public static function
>>set
>> foo(value:int):void{}",
>>                         IClassNode.class, WRAP_LEVEL_CLASS);
>>          asBlockWalker.visitClass(node);
>> -        assertOut("/**\n * @constructor\n */\nFalconTest_A = function()
>> {\n};Object.defineProperties(FalconTest_A, /** @lends {FalconTest_A} */
>> {\n/** @export */\nfoo: {\nset: function(value) {\n}}}\n);");
>> +        assertOut("/**\n * @constructor\n */\nFalconTest_A = function()
>> {\n};Object.defineProperties(FalconTest_A, /** @lends {FalconTest_A} */
>> {\n/** @expose */\nfoo: {\nset: function(value) {\n}}}\n);");
>>      }
>>
>>      @Test
>>
>>

Reply via email to