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" +