first try to init ints with 0

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

Branch: refs/heads/develop
Commit: a7fac3f3194fe5e3cdda9692db05b596c6fdf145
Parents: a069c04
Author: Alex Harui <aha...@apache.org>
Authored: Sat Sep 17 23:53:07 2016 -0700
Committer: Alex Harui <aha...@apache.org>
Committed: Wed Sep 21 15:22:29 2016 -0700

----------------------------------------------------------------------
 .../internal/codegen/js/jx/FieldEmitter.java    | 10 +++++++++
 .../codegen/js/jx/VarDeclarationEmitter.java    | 22 ++++++++++++++++++++
 .../codegen/js/flexjs/TestFlexJSClass.java      |  2 +-
 .../js/flexjs/TestFlexJSFieldMembers.java       |  8 +++----
 .../codegen/js/flexjs/TestFlexJSStatements.java | 12 ++++++++++-
 5 files changed, 48 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/a7fac3f3/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/FieldEmitter.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/FieldEmitter.java
 
b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/FieldEmitter.java
index 16d7994..8ce17c0 100644
--- 
a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/FieldEmitter.java
+++ 
b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/FieldEmitter.java
@@ -108,6 +108,16 @@ public class FieldEmitter extends JSSubEmitter implements
             endMapping(node);
             getEmitter().getWalker().walk(vnode);
         }
+        if (vnode == null && def != null)
+        {
+            String defName = def.getQualifiedName();
+               if (defName.equals("int") || defName.equals("uint"))
+               {
+                write(ASEmitterTokens.SPACE);
+                writeToken(ASEmitterTokens.EQUAL);
+                write("0");
+               }
+        }
 
         if (!(node instanceof ChainedVariableNode))
         {

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/a7fac3f3/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/VarDeclarationEmitter.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/VarDeclarationEmitter.java
 
b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/VarDeclarationEmitter.java
index 56c3fe9..3d66f97 100644
--- 
a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/VarDeclarationEmitter.java
+++ 
b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/VarDeclarationEmitter.java
@@ -145,6 +145,28 @@ public class VarDeclarationEmitter extends JSSubEmitter 
implements
             if (coercion.length() > 0)
                write(")");
         }
+        if (avnode == null)
+        {
+            IDefinition typedef = null;
+            IExpressionNode enode = 
node.getVariableTypeNode();//getAssignedValueNode();
+            if (enode != null)
+                typedef = enode.resolveType(getWalker().getProject());
+            if (typedef != null)
+            {
+                       String defName = typedef.getQualifiedName();
+                       if (defName.equals("int") || defName.equals("uint"))
+                       {
+                               if (node.getParent() != null &&
+                                               node.getParent().getParent() != 
null &&
+                                               
node.getParent().getParent().getNodeID() != ASTNodeID.Op_InID)
+                               {
+                                   write(ASEmitterTokens.SPACE);
+                                   writeToken(ASEmitterTokens.EQUAL);
+                                   write("0");
+                               }
+                       }
+            }
+        }
 
         if (!(node instanceof ChainedVariableNode))
         {

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/a7fac3f3/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
index 8297df3..18dad33 100644
--- 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
+++ 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
@@ -204,7 +204,7 @@ public class TestFlexJSClass extends TestGoogClass
         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}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() 
{\n};\n\n\n/**\n * @export\n * @type {Object}\n 
*/\norg.apache.flex.A.prototype.a;\n\n\n/**\n * @protected\n * @type {string}\n 
*/\norg.apache.flex.A.prototype.b;\n\n\n/**\n * @private\n * @type {number}\n 
*/\norg.apache.flex.A.prototype.c;\n\n\n/**\n * @export\n * @type {number}\n 
*/\norg.apache.flex.A.prototype.d;\n\n\n/**\n * @export\n * @type {number}\n 
*/\norg.apache.flex.A.prototype.e;");
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() 
{\n};\n\n\n/**\n * @export\n * @type {Object}\n 
*/\norg.apache.flex.A.prototype.a;\n\n\n/**\n * @protected\n * @type {string}\n 
*/\norg.apache.flex.A.prototype.b;\n\n\n/**\n * @private\n * @type {number}\n 
*/\norg.apache.flex.A.prototype.c = 0;\n\n\n/**\n * @export\n * @type 
{number}\n */\norg.apache.flex.A.prototype.d = 0;\n\n\n/**\n * @export\n * 
@type {number}\n */\norg.apache.flex.A.prototype.e;");
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/a7fac3f3/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSFieldMembers.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSFieldMembers.java
 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSFieldMembers.java
index 151c628..76edcd1 100644
--- 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSFieldMembers.java
+++ 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSFieldMembers.java
@@ -61,7 +61,7 @@ public class TestFlexJSFieldMembers extends 
TestGoogFieldMembers
     {
         IVariableNode node = getField("var foo:int;");
         asBlockWalker.visitVariable(node);
-        assertOut("/**\n * @export\n * @type {number}\n 
*/\nFalconTest_A.prototype.foo");
+        assertOut("/**\n * @export\n * @type {number}\n 
*/\nFalconTest_A.prototype.foo = 0");
     }
 
     @Override
@@ -141,7 +141,7 @@ public class TestFlexJSFieldMembers extends 
TestGoogFieldMembers
     {
         IVariableNode node = getField("static var foo:int;");
         asBlockWalker.visitVariable(node);
-        assertOut("/**\n * @export\n * @type {number}\n */\nFalconTest_A.foo");
+        assertOut("/**\n * @export\n * @type {number}\n */\nFalconTest_A.foo = 
0");
     }
 
     @Test
@@ -233,7 +233,7 @@ public class TestFlexJSFieldMembers extends 
TestGoogFieldMembers
     {
         IVariableNode node = getField("static const foo:int;");
         asBlockWalker.visitVariable(node);
-        assertOut("/**\n * @export\n * @const\n * @type {number}\n 
*/\nFalconTest_A.foo");
+        assertOut("/**\n * @export\n * @const\n * @type {number}\n 
*/\nFalconTest_A.foo = 0");
     }
 
     @Test
@@ -241,7 +241,7 @@ public class TestFlexJSFieldMembers extends 
TestGoogFieldMembers
     {
         IVariableNode node = getField("const foo:int;");
         asBlockWalker.visitVariable(node);
-        assertOut("/**\n * @export\n * @const\n * @type {number}\n 
*/\nFalconTest_A.prototype.foo");
+        assertOut("/**\n * @export\n * @const\n * @type {number}\n 
*/\nFalconTest_A.prototype.foo = 0");
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/a7fac3f3/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSStatements.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSStatements.java
 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSStatements.java
index d8e4db8..aaab841 100644
--- 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSStatements.java
+++ 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSStatements.java
@@ -65,6 +65,16 @@ public class TestFlexJSStatements extends TestGoogStatements
         assertOut("var /** @type {string} */ a = \"\\n\"");
     }
 
+    @Override
+    @Test
+    public void testVarDeclaration_withType()
+    {
+        IVariableNode node = (IVariableNode) getNode("var a:int;",
+                IVariableNode.class);
+        asBlockWalker.visitVariable(node);
+        assertOut("var /** @type {number} */ a = 0");
+    }
+
     //----------------------------------
     // const declaration
     //----------------------------------
@@ -514,7 +524,7 @@ public class TestFlexJSStatements extends TestGoogStatements
                                      "  } finally {\n" +
                                      "  }\n" +
                                      "  if (d) {\n" +
-                                     "    var /** @type {number} */ len;\n" +
+                                     "    var /** @type {number} */ len = 
0;\n" +
                                      "    for (var /** @type {number} */ i = 
0; i < len; i++)\n" +
                                      "      break;\n" +
                                      "  }\n" +

Reply via email to