You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by er...@apache.org on 2013/04/09 14:37:33 UTC

git commit: Minor code cleanup

Updated Branches:
  refs/heads/develop 612357a52 -> a86993ea4


Minor code cleanup

- cleaned up the emitting of "goog.bind" and accessors
- cleaned up the emitting of "goog.provide" and "goog.require"

Signed-off-by: Erik de Bruin <er...@ixsoftware.nl>


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

Branch: refs/heads/develop
Commit: a86993ea4e4da4b928689aaf3a57b10ba8b54721
Parents: 612357a
Author: Erik de Bruin <er...@ixsoftware.nl>
Authored: Tue Apr 9 14:36:46 2013 +0200
Committer: Erik de Bruin <er...@ixsoftware.nl>
Committed: Tue Apr 9 14:36:46 2013 +0200

----------------------------------------------------------------------
 .../codegen/js/flexjs/JSFlexJSEmitter.java         |   36 ++++--
 .../codegen/js/goog/JSGoogEmitterTokens.java       |    1 +
 .../codegen/mxml/flexjs/MXMLFlexJSEmitter.java     |   85 +++++++++------
 3 files changed, 75 insertions(+), 47 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/a86993ea/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
index 0c711ce..a3914f2 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
@@ -285,8 +285,8 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
         boolean emitName = true;
 
         // FIXME (erikdebruin) I desperately needed a way to bypass the addition
-        //                   of the 'self' prefix when running the tests... Or 
-        //                   I'd have to put the prefix in ~150 asserts!
+        //                     of the 'self' prefix when running the tests... Or 
+        //                     I'd have to put the prefix in ~150 asserts!
         boolean isRunningInTestMode = cnode != null
                 && cnode.getQualifiedName().equalsIgnoreCase("A");
 
@@ -296,7 +296,8 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
 
             if (useGoogBind)
             {
-                write("goog.bind(");
+                write(JSGoogEmitterTokens.GOOG_BIND);
+                write(ASEmitterTokens.PAREN_OPEN);
             }
 
             if (writeThis)
@@ -308,7 +309,10 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
             if (useGoogBind)
             {
                 write(node.getName());
-                write(", self)");
+                
+                writeToken(ASEmitterTokens.COMMA);
+                write(JSGoogEmitterTokens.SELF);
+                write(ASEmitterTokens.PAREN_CLOSE);
 
                 emitName = false;
             }
@@ -323,7 +327,7 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
                     && (pnode.equals(anode.getChild(0)) || node.equals(anode
                             .getChild(0)));
 
-            write((anode != null && isLeftSide) ? "set_" : "get_");
+            writeGetSetPrefix(!(anode != null && isLeftSide));
             write(node.getName());
             write(ASEmitterTokens.PAREN_OPEN);
 
@@ -399,11 +403,9 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
         {
             writeToken(ASEmitterTokens.COMMA);
             write(ASEmitterTokens.SINGLE_QUOTE);
-            if (fnode.getNodeID() == ASTNodeID.GetterID)
-                write("get_");
-            else if (fnode.getNodeID() == ASTNodeID.SetterID)
-                write("set_");
-
+            if (fnode.getNodeID() == ASTNodeID.GetterID
+                    || fnode.getNodeID() == ASTNodeID.SetterID)
+                writeGetSetPrefix(fnode.getNodeID() == ASTNodeID.GetterID);
             write(fnode.getName());
             write(ASEmitterTokens.SINGLE_QUOTE);
         }
@@ -446,7 +448,7 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
             write(ASEmitterTokens.SEMICOLON);
         }
     }
-
+    
     @Override
     public void emitBinaryOperator(IBinaryOperatorNode node)
     {
@@ -536,7 +538,7 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
         }
 
         write(ASEmitterTokens.MEMBER_ACCESS);
-        write((node instanceof IGetterNode) ? "get_" : "set_");
+        writeGetSetPrefix(node instanceof IGetterNode);
         writeToken(node.getName());
         writeToken(ASEmitterTokens.EQUAL);
         write(ASEmitterTokens.FUNCTION);
@@ -544,4 +546,14 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
         //writeNewline();
         emitMethodScope(node.getScopedNode());
     }
+
+    private void writeGetSetPrefix(boolean isGet)
+    {
+        if (isGet)
+            write(ASEmitterTokens.GET);
+        else
+            write(ASEmitterTokens.SET);
+        write("_");
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/a86993ea/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitterTokens.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitterTokens.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitterTokens.java
index d97fb46..5229395 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitterTokens.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitterTokens.java
@@ -7,6 +7,7 @@ public enum JSGoogEmitterTokens implements IEmitterTokens
     AS3("__AS3__"),
     GOOG_ARRAY_FOREACH("goog.array.forEach"),
     GOOG_BASE("goog.base"),
+    GOOG_BIND("goog.bind"),
     GOOG_INHERITS("goog.inherits"),
     GOOG_PROVIDE("goog.provide"),
     GOOG_REQUIRE("goog.require"),

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/a86993ea/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
index f9effde..5db7405 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
@@ -95,14 +95,14 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
 
         if (isMainFile)
         {
-            // fake a 'root' node, like 'mxmlContent'
+            // fake root node; the main file doesn't have 'mxmlContent' as root 
             MXMLDescriptorSpecifier fakeRoot = new MXMLDescriptorSpecifier();
             fakeRoot.name = "mxmlContent";
             descriptorTree.add(fakeRoot);
             currentInstances.add(fakeRoot);
         }
 
-        // visit tags
+        // visit MXML
         final int len = node.getChildCount();
         for (int i = 0; i < len; i++)
         {
@@ -110,29 +110,9 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
         }
 
         String cname = node.getFileNode().getName();
-        emitHeaderDoc(cname, "provide");
-
-        writeNewline();
-        emitHeaderDoc(node.getBaseClassName(), "require");
-        ArrayList<String> writtenInstances = new ArrayList<String>();
-        for (MXMLDescriptorSpecifier instance : instances)
-        {
-            String name = instance.name;
-            if (writtenInstances.indexOf(name) == -1)
-            {
-                emitHeaderDoc(name, "require");
-                writtenInstances.add(name);
-            }
-        }
-        for (String name : imports)
-        {
-            if (writtenInstances.indexOf(name) == -1)
-            {
-                emitHeaderDoc(name, "require");
-                writtenInstances.add(name);
-            }
-        }
-
+        
+        emitHeader(node);
+        
         writeNewline();
         writeNewline("/**");
         writeNewline(" * @constructor");
@@ -251,7 +231,6 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
             }
         }
 
-        // top level is 'mxmlContent', skip it...
         MXMLDescriptorSpecifier root = descriptorTree.get(0);
         root.isTopNodeInMainFile = isMainFile;
 
@@ -560,21 +539,44 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
     }
 
     //--------------------------------------------------------------------------
-    //    Utils
+    //    JS output
     //--------------------------------------------------------------------------
 
-    @Override
-    protected void emitAttributeValue(IASNode node)
+    private void emitHeader(IMXMLDocumentNode node)
     {
-        IMXMLLiteralNode cnode = (IMXMLLiteralNode) node.getChild(0);
-
-        if (cnode.getValue() != null)
-            getMXMLWalker().walk((IASNode) cnode); // Literal
+        String cname = node.getFileNode().getName();
+        
+        emitHeaderLine(cname, true);
+        writeNewline();
+        emitHeaderLine(node.getBaseClassName());
+        ArrayList<String> writtenInstances = new ArrayList<String>();
+        for (MXMLDescriptorSpecifier instance : instances)
+        {
+            String name = instance.name;
+            if (writtenInstances.indexOf(name) == -1)
+            {
+                emitHeaderLine(name);
+                writtenInstances.add(name);
+            }
+        }
+        for (String name : imports) // imports from fx:script tags
+        {
+            if (writtenInstances.indexOf(name) == -1)
+            {
+                emitHeaderLine(name);
+                writtenInstances.add(name);
+            }
+        }
+    }
+    
+    private void emitHeaderLine(String qname)
+    {
+        emitHeaderLine(qname, false);
     }
 
-    private void emitHeaderDoc(String qname, String type)
+    private void emitHeaderLine(String qname, boolean isProvide)
     {
-        write((type == "provide") ? JSGoogEmitterTokens.GOOG_PROVIDE
+        write((isProvide) ? JSGoogEmitterTokens.GOOG_PROVIDE
                 : JSGoogEmitterTokens.GOOG_REQUIRE);
         write(ASEmitterTokens.PAREN_OPEN);
         write(ASEmitterTokens.SINGLE_QUOTE);
@@ -584,6 +586,19 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
         writeNewline(ASEmitterTokens.SEMICOLON);
     }
 
+    //--------------------------------------------------------------------------
+    //    Utils
+    //--------------------------------------------------------------------------
+
+    @Override
+    protected void emitAttributeValue(IASNode node)
+    {
+        IMXMLLiteralNode cnode = (IMXMLLiteralNode) node.getChild(0);
+
+        if (cnode.getValue() != null)
+            getMXMLWalker().walk((IASNode) cnode); // Literal
+    }
+    
     private MXMLDescriptorSpecifier getCurrentDescriptor(String type)
     {
         MXMLDescriptorSpecifier currentDescriptor = null;