You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ms...@apache.org on 2012/12/21 21:34:28 UTC

svn commit: r1425130 - in /incubator/flex/whiteboard/mschmalle/falconjx: compiler.jx.tests/src/org/apache/flex/js/internal/driver/TestClass.java compiler.jx/src/org/apache/flex/compiler/internal/js/codgen/ASBlockWalker.java

Author: mschmalle
Date: Fri Dec 21 20:34:28 2012
New Revision: 1425130

URL: http://svn.apache.org/viewvc?rev=1425130&view=rev
Log:
Flex:FalconJx
- Class member(constant, field, accessor, constructor, method) production with newlines and semi-colons

Modified:
    incubator/flex/whiteboard/mschmalle/falconjx/compiler.jx.tests/src/org/apache/flex/js/internal/driver/TestClass.java
    incubator/flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/js/codgen/ASBlockWalker.java

Modified: incubator/flex/whiteboard/mschmalle/falconjx/compiler.jx.tests/src/org/apache/flex/js/internal/driver/TestClass.java
URL: http://svn.apache.org/viewvc/incubator/flex/whiteboard/mschmalle/falconjx/compiler.jx.tests/src/org/apache/flex/js/internal/driver/TestClass.java?rev=1425130&r1=1425129&r2=1425130&view=diff
==============================================================================
--- incubator/flex/whiteboard/mschmalle/falconjx/compiler.jx.tests/src/org/apache/flex/js/internal/driver/TestClass.java (original)
+++ incubator/flex/whiteboard/mschmalle/falconjx/compiler.jx.tests/src/org/apache/flex/js/internal/driver/TestClass.java Fri Dec 21 20:34:28 2012
@@ -50,7 +50,7 @@ public class TestClass extends TestWalke
         visitor.visitClass(node);
         assertOut("internal class A {\n}");
     }
-    
+
     @Test
     public void testSimpleFinal()
     {
@@ -114,7 +114,90 @@ public class TestClass extends TestWalke
         visitor.visitClass(node);
         assertOut("public class A extends goo.B implements foo.bar.IA, goo.foo.IB, baz.boo.IC {\n}");
     }
+
+    @Test
+    public void testConstructor()
+    {
+        IClassNode node = getClassNode("public class A {public function A(){super('foo', 42);}}");
+        visitor.visitClass(node);
+        assertOut("public class A {\n\tpublic function A() {\n\t\tsuper('foo', 42);\n\t}\n}");
+    }
+    
+    @Test
+    public void testFields()
+    {
+        IClassNode node = getClassNode("public class A {public var a:Object;protected var b:String; "
+                + "private var c:int; internal var d:uint; var e:Number}");
+        visitor.visitClass(node);
+        assertOut("public class A {\n\tpublic var a:Object;\n\tprotected var b:String;"
+                + "\n\tprivate var c:int;\n\tvar d:uint;\n\tvar e:Number;\n}");
+    }
+
+    @Test
+    public void testConstants()
+    {
+        IClassNode node = getClassNode("public class A {" +
+        		"public static const A:int = 42;" +
+        		"protected static const B:Number = 42;" +
+                "private static const C:Number = 42;" +
+                "foo_bar static const C:String = 'me' + 'you';");
+        visitor.visitClass(node);
+        assertOut("public class A {\n\tpublic static const A:int = 42;\n\t" +
+        		"protected static const B:Number = 42;\n\tprivate static const " +
+        		"C:Number = 42;\n\tfoo_bar static const C:String = 'me' + 'you';\n}");
+    }
     
+    @Test
+    public void testAccessors()
+    {
+        IClassNode node = getClassNode("public class A {"
+                + "public function get foo1():Object{return null;}"
+                + "public function set foo1(value:Object):void{}"
+                + "protected function get foo2():Object{return null;}"
+                + "protected function set foo2(value:Object):void{}"
+                + "private function get foo3():Object{return null;}"
+                + "private function set foo3(value:Object):void{}"
+                + "internal function get foo5():Object{return null;}"
+                + "internal function set foo5(value:Object):void{}"
+                + "foo_bar function get foo6():Object{return null;}"
+                + "foo_bar function set foo6(value:Object):void{}" + "}");
+        visitor.visitClass(node);
+        assertOut("public class A {\n\tpublic function get foo1():Object {"
+                + "\n\t\treturn null;\n\t}\n\tpublic function set foo1(value:Object)"
+                + ":void {\n\t}\n\tprotected function get foo2():Object {\n\t\treturn "
+                + "null;\n\t}\n\tprotected function set foo2(value:Object):void "
+                + "{\n\t}\n\tprivate function get foo3():Object {\n\t\treturn null;"
+                + "\n\t}\n\tprivate function set foo3(value:Object):void {\n\t}\n\t"
+                + "function get foo5():Object {\n\t\treturn null;\n\t}\n\tfunction set "
+                + "foo5(value:Object):void {\n\t}\n\tfoo_bar function get foo6():Object "
+                + "{\n\t\treturn null;\n\t}\n\tfoo_bar function set "
+                + "foo6(value:Object):void {\n\t}\n}");
+    }
+
+    @Test
+    public void testMethods()
+    {
+        IClassNode node = getClassNode("public class A {"
+                + "public function foo1():Object{return null;}"
+                + "public final function foo1a():Object{return null;}"
+                + "override public function foo1b():Object{return super.foo1b();}"
+                + "protected function foo2(value:Object):void{}"
+                + "private function foo3(value:Object):void{}"
+                + "internal function foo5(value:Object):void{}"
+                + "foo_bar function foo6(value:Object):void{}"
+                + "public static function foo7(value:Object):void{}"
+                + "foo_bar static function foo7(value:Object):void{}" + "}");
+        visitor.visitClass(node);
+        assertOut("public class A {\n\tpublic function foo1():Object {\n\t\treturn "
+                + "null;\n\t}\n\tpublic final function foo1a():Object {\n\t\treturn "
+                + "null;\n\t}\n\tpublic override function foo1b():Object {\n\t\treturn "
+                + "super.foo1b();\n\t}\n\tprotected function foo2(value:Object):void "
+                + "{\n\t}\n\tprivate function foo3(value:Object):void {\n\t}\n\tfunction "
+                + "foo5(value:Object):void {\n\t}\n\tfoo_bar function foo6(value:Object"
+                + "):void {\n\t}\n\tpublic static function foo7(value:Object):void {\n\t}"
+                + "\n\tfoo_bar static function foo7(value:Object):void {\n\t}\n}");
+    }
+
     protected IClassNode getClassNode(String code)
     {
         String source = "package {" + code + "}";

Modified: incubator/flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/js/codgen/ASBlockWalker.java
URL: http://svn.apache.org/viewvc/incubator/flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/js/codgen/ASBlockWalker.java?rev=1425130&r1=1425129&r2=1425130&view=diff
==============================================================================
--- incubator/flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/js/codgen/ASBlockWalker.java (original)
+++ incubator/flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/js/codgen/ASBlockWalker.java Fri Dec 21 20:34:28 2012
@@ -338,18 +338,38 @@ public class ASBlockWalker implements IA
         {
             emitter.indentPush();
             emitter.write("\n");
-            
+
             // there is always an implicit constructor if not explicit
             currentConstructor = getConstructor(members);
             if (currentConstructor == null)
             {
                 // TODO (mschmalle) handle null constructor
             }
-            
+
             // TODO (mschmalle) Check to see if the node order is the order of member parsed
+            final int len = members.length;
+            int i = 0;
             for (IDefinitionNode mnode : members)
             {
                 walk(mnode);
+                if (mnode.getNodeID() == ASTNodeID.VariableID)
+                {
+                    emitter.write(";");
+                    if (i < len - 1)
+                        emitter.write("\n");
+                }
+                else if (mnode.getNodeID() == ASTNodeID.FunctionID)
+                {
+                    if (i < len - 1)
+                        emitter.write("\n");
+                }
+                else if (mnode.getNodeID() == ASTNodeID.GetterID
+                        || mnode.getNodeID() == ASTNodeID.SetterID)
+                {
+                    if (i < len - 1)
+                        emitter.write("\n");
+                }
+                i++;
             }
 
             emitter.indentPop();
@@ -367,15 +387,15 @@ public class ASBlockWalker implements IA
     {
         debug("visitInterface()");
         typeDefinition = node.getDefinition();
-        
+
         emitter.write(node.getNamespace());
         emitter.write(" ");
-        
+
         emitter.write("interface");
         emitter.write(" ");
         walk(node.getNameExpressionNode());
         emitter.write(" ");
-        
+
         IExpressionNode[] inodes = node.getExtendedInterfaceNodes();
         final int ilen = inodes.length;
         if (ilen != 0)
@@ -393,15 +413,15 @@ public class ASBlockWalker implements IA
             }
             emitter.write(" ");
         }
-        
+
         emitter.write("{");
-        
+
         final IDefinitionNode[] members = node.getAllMemberDefinitionNodes();
         if (members.length > 0)
         {
             emitter.indentPush();
             emitter.write("\n");
-            
+
             // TODO (mschmalle) Check to see if the node order is the order of member parsed
             for (IDefinitionNode mnode : members)
             {
@@ -410,10 +430,10 @@ public class ASBlockWalker implements IA
 
             emitter.indentPop();
         }
-        
+
         emitter.write("\n");
         emitter.write("}");
-        
+
         typeDefinition = null;
     }
 
@@ -521,9 +541,9 @@ public class ASBlockWalker implements IA
     {
         if (inContext(TraverseContext.SUPER_ARGUMENTS))
         {
-            emitter.write("this");
-            if (nodes.length > 0)
-                emitter.write(", ");
+            //emitter.write("this");
+            //if (nodes.length > 0)
+            //    emitter.write(", ");
         }
 
         int len = nodes.length;