You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by jo...@apache.org on 2016/12/09 22:46:13 UTC

git commit: [flex-falcon] [refs/heads/develop] - compiler-jx: LiteralEmitter treats JSX ref attribute as a special case that should not be renamed

Repository: flex-falcon
Updated Branches:
  refs/heads/develop 0be066f5d -> acde07cdc


compiler-jx: LiteralEmitter treats JSX ref attribute as a special case that should not be renamed


Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/acde07cd
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/acde07cd
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/acde07cd

Branch: refs/heads/develop
Commit: acde07cdc6ca9152cbf4c16863a77cc940b61be0
Parents: 0be066f
Author: Josh Tynjala <jo...@gmail.com>
Authored: Fri Dec 9 14:46:07 2016 -0800
Committer: Josh Tynjala <jo...@gmail.com>
Committed: Fri Dec 9 14:46:07 2016 -0800

----------------------------------------------------------------------
 .../internal/codegen/js/jx/LiteralEmitter.java      |  7 +++++--
 .../internal/codegen/js/flexjs/TestFlexJSJSX.java   | 16 ++++++++++++++++
 2 files changed, 21 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/acde07cd/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/LiteralEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/LiteralEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/LiteralEmitter.java
index 12c0925..876e995 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/LiteralEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/LiteralEmitter.java
@@ -385,9 +385,12 @@ public class LiteralEmitter extends JSSubEmitter implements
             {
                 writeToken(ASEmitterTokens.BLOCK_OPEN);
             }
-            if (isHTML)
+            attributeName = attributeName.trim();
+            //if it's HTML, we don't want anything to be renamed by Closure
+            //compiler. if the attribute is "ref", it's a special built-in
+            //attribute that we never want to be renamed.
+            if (isHTML || attributeName.equals("ref"))
             {
-                attributeName = attributeName.trim();
                 emitJSXText(attributeName);
             }
             else

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/acde07cd/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSJSX.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSJSX.java b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSJSX.java
index f3b8720..f2484fe 100644
--- a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSJSX.java
+++ b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSJSX.java
@@ -346,6 +346,22 @@ public class TestFlexJSJSX extends ASTestBase
         assertOut("FalconTest_A.prototype.foo = function() {\n  return React.createElement(flash.events.EventDispatcher, null);\n}");
     }
 
+    @Test
+    public void tesClassWithAttribute()
+    {
+        IFunctionNode node = getMethod("[JSX]\nfunction foo() {\n  import flash.events.EventDispatcher;\n  return <EventDispatcher id=\"hello\"/>;\n}");
+        asBlockWalker.visitFunction(node);
+        assertOut("FalconTest_A.prototype.foo = function() {\n  return React.createElement(flash.events.EventDispatcher, { id: 'hello' });\n}");
+    }
+
+    @Test
+    public void tesClassWithRef()
+    {
+        IFunctionNode node = getMethod("[JSX]\nfunction foo() {\n  import flash.events.EventDispatcher;\n  return <EventDispatcher ref=\"hello\"/>;\n}");
+        asBlockWalker.visitFunction(node);
+        assertOut("FalconTest_A.prototype.foo = function() {\n  return React.createElement(flash.events.EventDispatcher, { 'ref': 'hello' });\n}");
+    }
+
     @Override
     protected IBackend createBackend()
     {