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 2014/10/31 17:50:45 UTC

[11/14] git commit: [flex-falcon] [refs/heads/develop] - Added and updated VF2JS tests and test files

Added and updated VF2JS tests and test files

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/bd111dd4
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/bd111dd4
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/bd111dd4

Branch: refs/heads/develop
Commit: bd111dd430283ef20c554c5ff35d7dffaf3d2d53
Parents: 2b12a20
Author: Erik de Bruin <er...@ixsoftware.nl>
Authored: Fri Oct 31 17:43:53 2014 +0100
Committer: Erik de Bruin <er...@ixsoftware.nl>
Committed: Fri Oct 31 17:44:04 2014 +0100

----------------------------------------------------------------------
 .../codegen/js/vf2js/TestVF2JSClass.java        | 109 +++++++++++++++---
 .../codegen/js/vf2js/TestVF2JSFile.java         |  18 +++
 .../codegen/js/vf2js/TestVF2JSProject.java      |  15 +++
 .../codegen/js/vf2js/TestVF2JSStatements.java   |  11 +-
 .../mxml/vf2js/TestVF2JSMXMLApplication.java    |   3 +
 .../test-files/vf2js/files/Version.as           |   7 ++
 .../projects/interfaces/classes/B_result.js     |   3 +-
 .../projects/interfaces/classes/C_result.js     |   3 +-
 .../vf2js/projects/sdk/SomeSDKClass.as          |  68 +++++++++++
 .../vf2js/projects/sdk/SomeSDKClass_result.js   | 114 +++++++++++++++++++
 .../vf2js/projects/sdk/bases/HelperBaseClass.as |  33 ++++++
 .../sdk/bases/HelperBaseClass_result.js         |  46 ++++++++
 .../simpleMXML/src/SimpleMXML_Project_result.js |   2 +-
 .../test-files/vf2js/projects/super/Base.as     |   8 ++
 .../vf2js/projects/super/Base_result.js         |  37 +++++-
 .../vf2js/projects/super/Super_result.js        |   3 +-
 compiler.jx/downloads.xml                       |  16 +--
 17 files changed, 464 insertions(+), 32 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/bd111dd4/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/vf2js/TestVF2JSClass.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/vf2js/TestVF2JSClass.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/vf2js/TestVF2JSClass.java
index 8998868..1e6b546 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/vf2js/TestVF2JSClass.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/vf2js/TestVF2JSClass.java
@@ -33,6 +33,47 @@ public class TestVF2JSClass extends TestGoogClass
 
     @Override
     @Test
+    public void testSimple()
+    {
+        IClassNode node = getClassNode("public class A{}");
+        asBlockWalker.visitClass(node);
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() {};");
+    }
+
+    @Override
+    @Test
+    public void testSimpleInternal()
+    {
+        // (erikdebruin) the AS compiler will enforce 'internal' namespace, 
+        //               in JS we ignore it
+        IClassNode node = getClassNode("internal class A{}");
+        asBlockWalker.visitClass(node);
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() {};");
+    }
+
+    @Override
+    @Test
+    public void testSimpleFinal()
+    {
+        // (erikdebruin) the AS compiler will enforce the 'final' keyword, 
+        //               in JS we ignore it
+        IClassNode node = getClassNode("public final class A{}");
+        asBlockWalker.visitClass(node);
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() {};");
+    }
+
+    @Override
+    @Test
+    public void testSimpleDynamic()
+    {
+        // (erikdebruin) all JS objects are 'dynamic' by design
+        IClassNode node = getClassNode("public dynamic class A{}");
+        asBlockWalker.visitClass(node);
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() {};");
+    }
+
+    @Override
+    @Test
     public void testConstructor_super()
     {
         IClassNode node = getClassNode("public class A {public function A() { super(); }}");
@@ -51,6 +92,24 @@ public class TestVF2JSClass extends TestGoogClass
 
     @Override
     @Test
+    public void testSimpleImplements()
+    {
+        IClassNode node = getClassNode("public class A implements IEventDispatcher {public function A() {}}");
+        asBlockWalker.visitClass(node);
+        assertOut("/**\n * @constructor\n * @implements {flash.events.IEventDispatcher}\n */\norg.apache.flex.A = function() {};");
+    }
+
+    @Override
+    @Test
+    public void testSimpleImplementsMultiple()
+    {
+        IClassNode node = getClassNode("public class A implements IEventDispatcher, ILogger {public function A() {}}");
+        asBlockWalker.visitClass(node);
+        assertOut("/**\n * @constructor\n * @implements {flash.events.IEventDispatcher}\n * @implements {mx.logging.ILogger}\n */\norg.apache.flex.A = function() {};");
+    }
+
+    @Override
+    @Test
     public void testSimpleExtendsImplements()
     {
         IClassNode node = getClassNode("public class A extends Button implements IEventDispatcher {public function A() {}}");
@@ -87,6 +146,15 @@ public class TestVF2JSClass extends TestGoogClass
 
     @Override
     @Test
+    public void testConstructor()
+    {
+        IClassNode node = getClassNode("public class A {public function A() { }}");
+        asBlockWalker.visitClass(node);
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() {};");
+    }
+
+    @Override
+    @Test
     public void testExtendsConstructor_super()
     {
         IClassNode node = getClassNode("public class A extends spark.components.Button { public function A() { super('foo', 42);}}");
@@ -94,6 +162,15 @@ public class TestVF2JSClass extends TestGoogClass
         assertOut("/**\n * @constructor\n * @extends {spark.components.Button}\n */\norg.apache.flex.A = function() {\n  org.apache.flex.A.base(this, 'constructor', 'foo', 42);\n};\ngoog.inherits(org.apache.flex.A, spark.components.Button);");
     }
 
+    @Override
+    @Test
+    public void testConstructor_withArguments()
+    {
+        IClassNode node = getClassNode("public class A {public function A(arg1:String, arg2:int) {}}");
+        asBlockWalker.visitClass(node);
+        assertOut("/**\n * @constructor\n * @param {string} arg1\n * @param {number} arg2\n */\norg.apache.flex.A = function(arg1, arg2) {};");
+    }
+
     @Test
     public void testConstructor_withArgumentNameMatchingMemberName()
     {
@@ -108,7 +185,7 @@ public class TestVF2JSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() {}; public var button:Button = new Button(); public function foo():String {return button.label;};}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg.apache.flex.B = function() {\n};\n\n\n/**\n * @type {spark.components.Button}\n */\norg.apache.flex.B.prototype.button = new spark.components.Button();\n\n\n/**\n * @expose\n * @return {string}\n */\norg.apache.flex.B.prototype.foo = function() {\n  return this.button.get_label();\n};";
+        String expected = "/**\n * @constructor\n */\norg.apache.flex.B = function() {\n  this.button = new spark.components.Button();\n};\n\n\n/**\n * @type {spark.components.Button}\n */\norg.apache.flex.B.prototype.button;\n\n\n/**\n * @expose\n * @return {string}\n */\norg.apache.flex.B.prototype.foo = function() {\n  return this.button.get_label();\n};";
         assertOut(expected);
     }
 
@@ -117,7 +194,7 @@ public class TestVF2JSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() {}; public function foo():void {};}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg.apache.flex.B = function() {\n};\n\n\n/**\n * @expose\n */\norg.apache.flex.B.prototype.foo = function() {\n};";
+        String expected = "/**\n * @constructor\n */\norg.apache.flex.B = function() {};\n\n\n/**\n * @expose\n */\norg.apache.flex.B.prototype.foo = function() {\n};";
         assertOut(expected);
     }
 
@@ -126,7 +203,7 @@ public class TestVF2JSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() {}; override public function foo():void {};}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg.apache.flex.B = function() {\n};\n\n\n/**\n * @expose\n * @override\n */\norg.apache.flex.B.prototype.foo = function() {\n};";
+        String expected = "/**\n * @constructor\n */\norg.apache.flex.B = function() {};\n\n\n/**\n * @expose\n * @override\n */\norg.apache.flex.B.prototype.foo = function() {\n};";
         assertOut(expected);
     }
 
@@ -135,7 +212,7 @@ public class TestVF2JSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() {}; override public function foo(value:Object):void {baz = ''};}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg.apache.flex.B = function() {\n};\n\n\n/**\n * @expose\n * @param {Object} value\n * @override\n */\norg.apache.flex.B.prototype.foo = function(value) {\n  baz = '';\n};";
+        String expected = "/**\n * @constructor\n */\norg.apache.flex.B = function() {};\n\n\n/**\n * @expose\n * @param {Object} value\n * @override\n */\norg.apache.flex.B.prototype.foo = function(value) {\n  baz = '';\n};";
         assertOut(expected);
     }
 
@@ -144,7 +221,7 @@ public class TestVF2JSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() {}; override public function foo():void {super.foo();};}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg.apache.flex.B = function() {\n};\n\n\n/**\n * @expose\n * @override\n */\norg.apache.flex.B.prototype.foo = function() {\n  org.apache.flex.B.base(this, 'foo');\n};";
+        String expected = "/**\n * @constructor\n */\norg.apache.flex.B = function() {};\n\n\n/**\n * @expose\n * @override\n */\norg.apache.flex.B.prototype.foo = function() {\n  org.apache.flex.B.base(this, 'foo');\n};";
         assertOut(expected);
     }
 
@@ -153,7 +230,7 @@ public class TestVF2JSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() {}; public function set baz(value:Object):void {}; public function set foo(value:Object):void {baz = value;};}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg.apache.flex.B = function() {\n};\n\n\n/**\n * @expose\n * @param {Object} value\n */\norg.apache.flex.B.prototype.set_baz = function(value) {\n};\n\n\n/**\n * @expose\n * @param {Object} value\n */\norg.apache.flex.B.prototype.set_foo = function(value) {\n  this.set_baz(value);\n};";
+        String expected = "/**\n * @constructor\n */\norg.apache.flex.B = function() {};\n\n\n/**\n * @expose\n * @param {Object} value\n */\norg.apache.flex.B.prototype.set_baz = function(value) {\n};\n\n\n/**\n * @expose\n * @param {Object} value\n */\norg.apache.flex.B.prototype.set_foo = function(value) {\n  this.set_baz(value);\n};";
         assertOut(expected);
     }
 
@@ -162,7 +239,7 @@ public class TestVF2JSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() {}; override public function set foo(value:Object):void {super.foo = value;};}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg.apache.flex.B = function() {\n};\n\n\n/**\n * @expose\n * @param {Object} value\n * @override\n */\norg.apache.flex.B.prototype.set_foo = function(value) {\n  org.apache.flex.B.base(this, 'set_foo', value);\n};";
+        String expected = "/**\n * @constructor\n */\norg.apache.flex.B = function() {};\n\n\n/**\n * @expose\n * @param {Object} value\n * @override\n */\norg.apache.flex.B.prototype.set_foo = function(value) {\n  org.apache.flex.B.base(this, 'set_foo', value);\n};";
         assertOut(expected);
     }
 
@@ -182,7 +259,7 @@ public class TestVF2JSClass 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 * @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 * @type {number}\n */\norg.apache.flex.A.prototype.d;\n\n\n/**\n * @type {number}\n */\norg.apache.flex.A.prototype.e;");
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() {};\n\n\n/**\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 * @type {number}\n */\norg.apache.flex.A.prototype.d;\n\n\n/**\n * @type {number}\n */\norg.apache.flex.A.prototype.e;");
     }
 
     @Test
@@ -190,7 +267,7 @@ public class TestVF2JSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A {[Embed(source=\"LuminosityMaskFilter.pbj\", mimeType=\"application/octet-stream\")]\nprivate static var ShaderClass:Class;}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() {\n};\n\n\n/**\n * @private\n * @type {Object}\n */\norg.apache.flex.A.ShaderClass;");
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() {};\n\n\n/**\n * @private\n * @type {Object}\n */\norg.apache.flex.A.ShaderClass;");
     }
     
     @Test
@@ -198,7 +275,7 @@ public class TestVF2JSClass extends TestGoogClass
     {
     	IClassNode node = getClassNode("public class A {private var controlBarGroupProperties:Object = { visible: true }; private var _visible:Boolean; public function get visible():Boolean { return _visible; }; public function set visible(value:Boolean):void { _visible = value; };}");
     	asBlockWalker.visitClass(node);
-    	assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() {\n};\n\n\n/**\n * @private\n * @type {Object}\n */\norg.apache.flex.A.prototype.controlBarGroupProperties = {visible:true};\n\n\n/**\n * @private\n * @type {boolean}\n */\norg.apache.flex.A.prototype._visible;\n\n\n/**\n * @expose\n * @return {boolean}\n */\norg.apache.flex.A.prototype.get_visible = function() {\n  return this._visible;\n};\n\n\n/**\n * @expose\n * @param {boolean} value\n */\norg.apache.flex.A.prototype.set_visible = function(value) {\n  this._visible = value;\n};");
+    	assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() {};\n\n\n/**\n * @private\n * @type {Object}\n */\norg.apache.flex.A.prototype.controlBarGroupProperties = {visible:true};\n\n\n/**\n * @private\n * @type {boolean}\n */\norg.apache.flex.A.prototype._visible;\n\n\n/**\n * @expose\n * @return {boolean}\n */\norg.apache.flex.A.prototype.get_visible = function() {\n  return this._visible;\n};\n\n\n/**\n * @expose\n * @param {boolean} value\n */\norg.apache.flex.A.prototype.set_visible = function(value) {\n  this._visible = value;\n};");
     }
 
     @Override
@@ -211,7 +288,7 @@ public class TestVF2JSClass extends TestGoogClass
                 + "private static const C:Number = 42;"
                 + "foo_bar static const C:String = 'me' + 'you';");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() {\n};\n\n\n/**\n * @const\n * @type {number}\n */\norg.apache.flex.A.A = 42;\n\n\n/**\n * @protected\n * @const\n * @type {number}\n */\norg.apache.flex.A.B = 42;\n\n\n/**\n * @private\n * @const\n * @type {number}\n */\norg.apache.flex.A.C = 42;\n\n\n/**\n * @const\n * @type {string}\n */\norg.apache.flex.A.C = 'me' + 'you';");
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() {\n  org.apache.flex.A.C = 'me' + 'you';\n};\n\n\n/**\n * @const\n * @type {number}\n */\norg.apache.flex.A.A = 42;\n\n\n/**\n * @protected\n * @const\n * @type {number}\n */\norg.apache.flex.A.B = 42;\n\n\n/**\n * @private\n * @const\n * @type {number}\n */\norg.apache.flex.A.C = 42;\n\n\n/**\n * @const\n * @type {string}\n */\norg.apache.flex.A.C;");
     }
 
     @Override
@@ -230,7 +307,7 @@ public class TestVF2JSClass extends TestGoogClass
                 + "foo_bar function get foo6():Object{return null;}"
                 + "foo_bar function set foo6(value:Object):void{}" + "}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() {\n};\n\n\n/**\n * @expose\n * @return {Object}\n */\norg.apache.flex.A.prototype.get_foo1 = function() {\n  return null;\n};\n\n\n/**\n * @expose\n * @param {Object} value\n */\norg.apache.flex.A.prototype.set_foo1 = function(value) {\n};\n\n\n/**\n * @protected\n * @return {Object}\n */\norg.apache.flex.A.prototype.get_foo2 = function() {\n  return null;\n};\n\n\n/**\n * @protected\n * @param {Object} value\n */\norg.apache.flex.A.prototype.set_foo2 = function(value) {\n};\n\n\n/**\n * @private\n * @return {Object}\n */\norg.apache.flex.A.prototype.get_foo3 = function() {\n  return null;\n};\n\n\n/**\n * @private\n * @param {Object} value\n */\norg.apache.flex.A.prototype.set_foo3 = function(value) {\n};\n\n\n/**\n * @return {Object}\n */\norg.apache.flex.A.prototype.get_foo5 = function() {\n  return null;\n};\n\n\n/**\n * @param {Object} value\n */\norg.apache.flex.A.prototype.set_foo5 = function(value) 
 {\n};\n\n\n/**\n * @return {Object}\n */\norg.apache.flex.A.prototype.get_foo6 = function() {\n  return null;\n};\n\n\n/**\n * @param {Object} value\n */\norg.apache.flex.A.prototype.set_foo6 = function(value) {\n};");
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() {};\n\n\n/**\n * @expose\n * @return {Object}\n */\norg.apache.flex.A.prototype.get_foo1 = function() {\n  return null;\n};\n\n\n/**\n * @expose\n * @param {Object} value\n */\norg.apache.flex.A.prototype.set_foo1 = function(value) {\n};\n\n\n/**\n * @protected\n * @return {Object}\n */\norg.apache.flex.A.prototype.get_foo2 = function() {\n  return null;\n};\n\n\n/**\n * @protected\n * @param {Object} value\n */\norg.apache.flex.A.prototype.set_foo2 = function(value) {\n};\n\n\n/**\n * @private\n * @return {Object}\n */\norg.apache.flex.A.prototype.get_foo3 = function() {\n  return null;\n};\n\n\n/**\n * @private\n * @param {Object} value\n */\norg.apache.flex.A.prototype.set_foo3 = function(value) {\n};\n\n\n/**\n * @return {Object}\n */\norg.apache.flex.A.prototype.get_foo5 = function() {\n  return null;\n};\n\n\n/**\n * @param {Object} value\n */\norg.apache.flex.A.prototype.set_foo5 = function(value) {\
 n};\n\n\n/**\n * @return {Object}\n */\norg.apache.flex.A.prototype.get_foo6 = function() {\n  return null;\n};\n\n\n/**\n * @param {Object} value\n */\norg.apache.flex.A.prototype.set_foo6 = function(value) {\n};");
     }
 
     @Override
@@ -248,7 +325,7 @@ public class TestVF2JSClass extends TestGoogClass
                 + "public static function foo7(value:Object):void{}"
                 + "foo_bar static function foo7(value:Object):void{}" + "}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() {\n};\n\n\n/**\n * @expose\n * @return {Object}\n */\norg.apache.flex.A.prototype.foo1 = function() {\n  return null;\n};\n\n\n/**\n * @expose\n * @return {Object}\n */\norg.apache.flex.A.prototype.foo1a = function() {\n  return null;\n};\n\n\n/**\n * @expose\n * @return {Object}\n * @override\n */\norg.apache.flex.A.prototype.foo1b = function() {\n  return org.apache.flex.A.base(this, 'foo1b');\n};\n\n\n/**\n * @protected\n * @param {Object} value\n */\norg.apache.flex.A.prototype.foo2 = function(value) {\n};\n\n\n/**\n * @private\n * @param {Object} value\n */\norg.apache.flex.A.prototype.foo3 = function(value) {\n};\n\n\n/**\n * @param {Object} value\n */\norg.apache.flex.A.prototype.foo5 = function(value) {\n};\n\n\n/**\n * @param {Object} value\n */\norg.apache.flex.A.prototype.foo6 = function(value) {\n};\n\n\n/**\n * @expose\n * @param {Object} value\n */\norg.apache.flex.A.foo7 = function(value) {\n
 };\n\n\n/**\n * @param {Object} value\n */\norg.apache.flex.A.foo7 = function(value) {\n};");
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() {};\n\n\n/**\n * @expose\n * @return {Object}\n */\norg.apache.flex.A.prototype.foo1 = function() {\n  return null;\n};\n\n\n/**\n * @expose\n * @return {Object}\n */\norg.apache.flex.A.prototype.foo1a = function() {\n  return null;\n};\n\n\n/**\n * @expose\n * @return {Object}\n * @override\n */\norg.apache.flex.A.prototype.foo1b = function() {\n  return org.apache.flex.A.base(this, 'foo1b');\n};\n\n\n/**\n * @protected\n * @param {Object} value\n */\norg.apache.flex.A.prototype.foo2 = function(value) {\n};\n\n\n/**\n * @private\n * @param {Object} value\n */\norg.apache.flex.A.prototype.foo3 = function(value) {\n};\n\n\n/**\n * @param {Object} value\n */\norg.apache.flex.A.prototype.foo5 = function(value) {\n};\n\n\n/**\n * @param {Object} value\n */\norg.apache.flex.A.prototype.foo6 = function(value) {\n};\n\n\n/**\n * @expose\n * @param {Object} value\n */\norg.apache.flex.A.foo7 = function(value) {\n};
 \n\n\n/**\n * @param {Object} value\n */\norg.apache.flex.A.foo7 = function(value) {\n};");
     }
 
     @Test
@@ -259,7 +336,7 @@ public class TestVF2JSClass extends TestGoogClass
                 + "public function foo2():Object{function bar2(param1:Object):Object {return null;}; return bar2('foo');}"
                 + "}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.flex.B = function() {\n};\n\n\n/**\n * @expose\n * @return {Object}\n */\norg.apache.flex.B.prototype.foo1 = function() {\n  function bar1() {\n    return null;\n  };\n  return goog.bind(bar1, this)();\n};\n\n\n/**\n * @expose\n * @return {Object}\n */\norg.apache.flex.B.prototype.foo2 = function() {\n  function bar2(param1) {\n    return null;\n  };\n  return goog.bind(bar2, this)('foo');\n};");
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.B = function() {};\n\n\n/**\n * @expose\n * @return {Object}\n */\norg.apache.flex.B.prototype.foo1 = function() {\n  function bar1() {\n    return null;\n  };\n  return goog.bind(bar1, this)();\n};\n\n\n/**\n * @expose\n * @return {Object}\n */\norg.apache.flex.B.prototype.foo2 = function() {\n  function bar2(param1) {\n    return null;\n  };\n  return goog.bind(bar2, this)('foo');\n};");
     }
 
     @Test
@@ -271,7 +348,7 @@ public class TestVF2JSClass extends TestGoogClass
                 + "public function foo2():String{function bar2(param1:String):String {return param1 + baz1;}; return bar2('foo');}"
                 + "}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.flex.B = function() {\n};\n\n\n/**\n * @type {string}\n */\norg.apache.flex.B.prototype.baz1;\n\n\n/**\n * @expose\n * @return {string}\n */\norg.apache.flex.B.prototype.foo1 = function() {\n  function bar1() {\n    return this.baz1;\n  };\n  return goog.bind(bar1, this)();\n};\n\n\n/**\n * @expose\n * @return {string}\n */\norg.apache.flex.B.prototype.foo2 = function() {\n  function bar2(param1) {\n    return param1 + this.baz1;\n  };\n  return goog.bind(bar2, this)('foo');\n};");
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.B = function() {};\n\n\n/**\n * @type {string}\n */\norg.apache.flex.B.prototype.baz1;\n\n\n/**\n * @expose\n * @return {string}\n */\norg.apache.flex.B.prototype.foo1 = function() {\n  function bar1() {\n    return this.baz1;\n  };\n  return goog.bind(bar1, this)();\n};\n\n\n/**\n * @expose\n * @return {string}\n */\norg.apache.flex.B.prototype.foo2 = function() {\n  function bar2(param1) {\n    return param1 + this.baz1;\n  };\n  return goog.bind(bar2, this)('foo');\n};");
     }
 
     @Test
@@ -291,7 +368,7 @@ public class TestVF2JSClass extends TestGoogClass
                 + "public function clone():B { return new B() }"
                 + "}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.flex.B = function() {\n};\n\n\n/**\n * @expose\n * @return {org.apache.flex.B}\n */\norg.apache.flex.B.prototype.clone = function() {\n  return new org.apache.flex.B();\n};");
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.B = function() {};\n\n\n/**\n * @expose\n * @return {org.apache.flex.B}\n */\norg.apache.flex.B.prototype.clone = function() {\n  return new org.apache.flex.B();\n};");
     }
 
     protected IBackend createBackend()

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/bd111dd4/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/vf2js/TestVF2JSFile.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/vf2js/TestVF2JSFile.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/vf2js/TestVF2JSFile.java
index 66a591d..56bb290 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/vf2js/TestVF2JSFile.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/vf2js/TestVF2JSFile.java
@@ -56,6 +56,24 @@ public class TestVF2JSFile extends VF2JSTestBase
         assertOut(getCodeFromFile(fileName + "_result", true,
                 "vf2js" + File.separator + "files"));
     }
+	
+    @Test
+    public void testVersion()
+    {
+        String fileName = "Version";
+
+        IFileNode node = compileAS(fileName, true,
+                "test-files"
+                        + File.separator + "vf2js" + File.separator + "files",
+                false);
+        
+        asBlockWalker.visitFile(node);
+        
+        //writeResultToFile(writer.toString(), fileName);
+        
+        assertOut(getCodeFromFile(fileName + "_result", true,
+                "vf2js" + File.separator + "files"));
+    }
 
     @Override
     protected void addSourcePaths(List<File> sourcePaths)

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/bd111dd4/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/vf2js/TestVF2JSProject.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/vf2js/TestVF2JSProject.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/vf2js/TestVF2JSProject.java
index 06984bd..5160272 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/vf2js/TestVF2JSProject.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/vf2js/TestVF2JSProject.java
@@ -69,6 +69,18 @@ public class TestVF2JSProject extends TestGoogProject
     }
 
     @Test
+    public void test_SDKTricks()
+    {
+        String testDirPath = projectDirPath + "/sdk";
+
+        String fileName = "SomeSDKClass";
+
+        List<String> compiledFileNames = compileProject(fileName, testDirPath);
+
+        assertProjectOut(compiledFileNames, testDirPath);
+    }
+
+    @Test
     public void test_Super()
     {
         String testDirPath = projectDirPath + "/super";
@@ -87,6 +99,9 @@ public class TestVF2JSProject extends TestGoogProject
                 + File.separator + projectDirPath + "/interfaces")));
 
         sourcePaths.add(new File(FilenameNormalization.normalize("test-files"
+                + File.separator + projectDirPath + "/sdk")));
+
+        sourcePaths.add(new File(FilenameNormalization.normalize("test-files"
                 + File.separator + projectDirPath + "/super")));
 
         super.addSourcePaths(sourcePaths);

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/bd111dd4/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/vf2js/TestVF2JSStatements.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/vf2js/TestVF2JSStatements.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/vf2js/TestVF2JSStatements.java
index 648666f..061be59 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/vf2js/TestVF2JSStatements.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/vf2js/TestVF2JSStatements.java
@@ -135,6 +135,15 @@ public class TestVF2JSStatements extends TestGoogStatements
         asBlockWalker.visitForLoop(node);
         assertOut("for (var /** @type {number} */ i = 0; i < len; i++)\n  break;");
     }
+    
+    @Test
+    public void testVisitFor_1c()
+    {
+    	IForLoopNode node = (IForLoopNode) getNode(
+    			"for (var i:int = 0, j:int = 3; i < j; i++) break;", IForLoopNode.class);
+    	asBlockWalker.visitForLoop(node);
+    	assertOut("for (var /** @type {number} */ i = 0, /** @type {number} */ j = 3; i < j; i++)\n  break;");
+    }
 
     @Override
     @Test
@@ -516,7 +525,7 @@ public class TestVF2JSStatements extends TestGoogStatements
                         + "foo: for each(var i:int in obj) break foo;",
                 IFileNode.class);
         asBlockWalker.visitFile(node);
-        assertOut("/**\n * FalconTest_A\n *\n * @fileoverview\n *\n * @suppress {checkTypes}\n */\n\ngoog.provide('FalconTest_A');\n\n\n\n/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\nFalconTest_A.prototype.falconTest_a = function() {\n  try {\n    a;\n  } catch (e) {\n    if (a) {\n      if (b) {\n        if (c)\n          b;\n        else if (f)\n          a;\n        else\n          e;\n      }\n    }\n  } finally {\n  }\n  if (d)\n    for (var /** @type {number} */ i = 0; i < len; i++)\n      break;\n  if (a) {\n    with (ab) {\n      c();\n    }\n    do {\n      a++;\n      do\n        a++;\n      while (a > b);\n    } while (c > d);\n  }\n  if (b) {\n    try {\n      a;\n      throw new Error('foo');\n    } catch (e) {\n      switch (i) {\n        case 1:\n          break;\n        default:\n          return;\n      }\n    } finally {\n      d;\n      var /** @type {Object} */ a = function(foo, bar) {\n        bar = typeof bar !== 'undefined' ? bar : 'goo';\n
         return -1;\n      };\n      eee.dd;\n      eee.dd;\n      eee.dd;\n      eee.dd;\n    }\n  }\n  foo : for (var foreachiter0 in obj) \n  {\n  var i = obj[foreachiter0];\n  \n    break foo;}\n  ;\n};\n\n\n/**\n * Metadata\n *\n * @type {Object.<string, Array.<Object>>}\n */\nFalconTest_A.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'FalconTest_A', qName: 'FalconTest_A'}] };\n");
+        assertOut("/**\n * FalconTest_A\n *\n * @fileoverview\n *\n * @suppress {checkTypes}\n */\n\ngoog.provide('FalconTest_A');\n\n\n\n/**\n * @constructor\n */\nFalconTest_A = function() {};\n\n\nFalconTest_A.prototype.falconTest_a = function() {\n  try {\n    a;\n  } catch (e) {\n    if (a) {\n      if (b) {\n        if (c)\n          b;\n        else if (f)\n          a;\n        else\n          e;\n      }\n    }\n  } finally {\n  }\n  if (d)\n    for (var /** @type {number} */ i = 0; i < len; i++)\n      break;\n  if (a) {\n    with (ab) {\n      c();\n    }\n    do {\n      a++;\n      do\n        a++;\n      while (a > b);\n    } while (c > d);\n  }\n  if (b) {\n    try {\n      a;\n      throw new Error('foo');\n    } catch (e) {\n      switch (i) {\n        case 1:\n          break;\n        default:\n          return;\n      }\n    } finally {\n      d;\n      var /** @type {Object} */ a = function(foo, bar) {\n        bar = typeof bar !== 'undefined' ? bar : 'goo';\n  
       return -1;\n      };\n      eee.dd;\n      eee.dd;\n      eee.dd;\n      eee.dd;\n    }\n  }\n  foo : for (var foreachiter0 in obj) \n  {\n  var i = obj[foreachiter0];\n  \n    break foo;}\n  ;\n};\n\n\n/**\n * Metadata\n *\n * @type {Object.<string, Array.<Object>>}\n */\nFalconTest_A.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'FalconTest_A', qName: 'FalconTest_A'}] };\n");
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/bd111dd4/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/mxml/vf2js/TestVF2JSMXMLApplication.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/mxml/vf2js/TestVF2JSMXMLApplication.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/mxml/vf2js/TestVF2JSMXMLApplication.java
index 376e95d..4aa4856 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/mxml/vf2js/TestVF2JSMXMLApplication.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/mxml/vf2js/TestVF2JSMXMLApplication.java
@@ -66,6 +66,9 @@ public class TestVF2JSMXMLApplication extends VF2JSMXMLTestBase
 
         List<String> compiledFileNames = compileProject(fileName, testDirPath);
 
+        // ToDo (erikdebruin): MXML property initialized with a FunctionCall
+        //                     are not included in the output (the assignment 
+        //                     should be handled in the constructor, like in AS
         assertProjectOut(compiledFileNames, testDirPath);
     }
 

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/bd111dd4/compiler.jx.tests/test-files/vf2js/files/Version.as
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/vf2js/files/Version.as b/compiler.jx.tests/test-files/vf2js/files/Version.as
new file mode 100644
index 0000000..322d76b
--- /dev/null
+++ b/compiler.jx.tests/test-files/vf2js/files/Version.as
@@ -0,0 +1,7 @@
+import mx.core.mx_internal;
+
+/**
+ *  @private
+ *  Version string for this class.
+ */
+mx_internal static const VERSION:String = "4.14.0.0";

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/bd111dd4/compiler.jx.tests/test-files/vf2js/projects/interfaces/classes/B_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/vf2js/projects/interfaces/classes/B_result.js b/compiler.jx.tests/test-files/vf2js/projects/interfaces/classes/B_result.js
index 2fef89c..d8e3b89 100644
--- a/compiler.jx.tests/test-files/vf2js/projects/interfaces/classes/B_result.js
+++ b/compiler.jx.tests/test-files/vf2js/projects/interfaces/classes/B_result.js
@@ -26,8 +26,7 @@ goog.provide('classes.B');
 /**
  * @constructor
  */
-classes.B = function() {
-};
+classes.B = function() {};
 
 
 /**

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/bd111dd4/compiler.jx.tests/test-files/vf2js/projects/interfaces/classes/C_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/vf2js/projects/interfaces/classes/C_result.js b/compiler.jx.tests/test-files/vf2js/projects/interfaces/classes/C_result.js
index 729cda3..c3b72f4 100644
--- a/compiler.jx.tests/test-files/vf2js/projects/interfaces/classes/C_result.js
+++ b/compiler.jx.tests/test-files/vf2js/projects/interfaces/classes/C_result.js
@@ -26,8 +26,7 @@ goog.provide('classes.C');
 /**
  * @constructor
  */
-classes.C = function() {
-};
+classes.C = function() {};
 
 
 /**

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/bd111dd4/compiler.jx.tests/test-files/vf2js/projects/sdk/SomeSDKClass.as
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/vf2js/projects/sdk/SomeSDKClass.as b/compiler.jx.tests/test-files/vf2js/projects/sdk/SomeSDKClass.as
new file mode 100644
index 0000000..52541c2
--- /dev/null
+++ b/compiler.jx.tests/test-files/vf2js/projects/sdk/SomeSDKClass.as
@@ -0,0 +1,68 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//	Licensed to the Apache Software Foundation (ASF) under one or more
+//	contributor license agreements.	See the NOTICE file distributed with
+//	this work for additional information regarding copyright ownership.
+//	The ASF licenses this file to You under the Apache License, Version 2.0
+//	(the "License"); you may not use this file except in compliance with
+//	the License.	You may obtain a copy of the License at
+//
+//			http://www.apache.org/licenses/LICENSE-2.0
+//
+//	Unless required by applicable law or agreed to in writing, software
+//	distributed under the License is distributed on an "AS IS" BASIS,
+//	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//	See the License for the specific language governing permissions and
+//	limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package
+{
+
+import mx.core.mx_internal;
+
+import bases.HelperBaseClass;
+
+use namespace mx_internal;
+
+public class SomeSDKClass
+{
+	public function SomeSDKClass() {}; 
+
+	private var number:Number = 'Got it: ' + this.getString(); 
+
+	public function getString():String
+	{
+		return Helper.helperFunction();
+	}
+
+	public function someFunction():String
+	{
+		helperBaseClass.doSomething();
+	}
+
+	mx_internal var helperBaseClass:HelperBaseClass = new HelperBaseClass();
+}
+
+}
+
+import bases.HelperBaseClass;
+
+class Helper extends HelperBaseClass
+{
+
+	public static function helperFunction():String {
+		return "Hello world";
+	}
+	
+	public function Helper(url:String) {
+	  url_ = url;
+	}
+	
+	private var url_:String;
+	
+	public function get url():String {
+		return url_;
+	}
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/bd111dd4/compiler.jx.tests/test-files/vf2js/projects/sdk/SomeSDKClass_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/vf2js/projects/sdk/SomeSDKClass_result.js b/compiler.jx.tests/test-files/vf2js/projects/sdk/SomeSDKClass_result.js
new file mode 100644
index 0000000..a622dc1
--- /dev/null
+++ b/compiler.jx.tests/test-files/vf2js/projects/sdk/SomeSDKClass_result.js
@@ -0,0 +1,114 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/**
+ * SomeSDKClass
+ *
+ * @fileoverview
+ *
+ * @suppress {checkTypes}
+ */
+
+goog.provide('SomeSDKClass');
+
+goog.require('mx.core.mx_internal');
+goog.require('bases.HelperBaseClass');
+goog.require('org.apache.flex.utils.Language');
+
+
+
+/**
+ * @constructor
+ */
+SomeSDKClass = function() {
+  this.number = 'Got it: ' + this.getString();
+
+  this.helperBaseClass = new bases.HelperBaseClass();
+};
+
+
+/**
+ * @private
+ * @type {number}
+ */
+SomeSDKClass.prototype.number;
+
+
+/**
+ * @expose
+ * @return {string}
+ */
+SomeSDKClass.prototype.getString = function() {
+  return Helper.helperFunction();
+};
+
+
+/**
+ * @expose
+ * @return {string}
+ */
+SomeSDKClass.prototype.someFunction = function() {
+  this.helperBaseClass.doSomething();
+};
+
+
+/**
+ * @type {bases.HelperBaseClass}
+ */
+SomeSDKClass.prototype.helperBaseClass;
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+SomeSDKClass.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'SomeSDKClass', qName: 'SomeSDKClass'}] };
+
+
+
+/**
+ * @constructor
+ * @extends {bases.HelperBaseClass}
+ * @param {string} url
+ */
+Helper = function(url) {
+  Helper.base(this, 'constructor', url);
+  this.url_ = url;
+};
+goog.inherits(Helper, bases.HelperBaseClass);
+
+
+/**
+ * @expose
+ * @return {string}
+ */
+Helper.helperFunction = function() {
+  return "Hello world";
+};
+
+
+/**
+ * @private
+ * @type {string}
+ */
+Helper.prototype.url_;
+
+
+/**
+ * @expose
+ * @return {string}
+ */
+Helper.prototype.get_url = function() {
+  return this.url_;
+};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/bd111dd4/compiler.jx.tests/test-files/vf2js/projects/sdk/bases/HelperBaseClass.as
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/vf2js/projects/sdk/bases/HelperBaseClass.as b/compiler.jx.tests/test-files/vf2js/projects/sdk/bases/HelperBaseClass.as
new file mode 100644
index 0000000..487990a
--- /dev/null
+++ b/compiler.jx.tests/test-files/vf2js/projects/sdk/bases/HelperBaseClass.as
@@ -0,0 +1,33 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//	Licensed to the Apache Software Foundation (ASF) under one or more
+//	contributor license agreements.	See the NOTICE file distributed with
+//	this work for additional information regarding copyright ownership.
+//	The ASF licenses this file to You under the Apache License, Version 2.0
+//	(the "License"); you may not use this file except in compliance with
+//	the License.	You may obtain a copy of the License at
+//
+//			http://www.apache.org/licenses/LICENSE-2.0
+//
+//	Unless required by applicable law or agreed to in writing, software
+//	distributed under the License is distributed on an "AS IS" BASIS,
+//	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//	See the License for the specific language governing permissions and
+//	limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package bases
+{
+
+public class HelperBaseClass
+{
+	
+	public function HelperBaseClass() {};
+	
+	public function doSomething():String {
+		return 'doneSomething';
+	}
+
+}
+
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/bd111dd4/compiler.jx.tests/test-files/vf2js/projects/sdk/bases/HelperBaseClass_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/vf2js/projects/sdk/bases/HelperBaseClass_result.js b/compiler.jx.tests/test-files/vf2js/projects/sdk/bases/HelperBaseClass_result.js
new file mode 100644
index 0000000..9d18b3d
--- /dev/null
+++ b/compiler.jx.tests/test-files/vf2js/projects/sdk/bases/HelperBaseClass_result.js
@@ -0,0 +1,46 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/**
+ * bases.HelperBaseClass
+ *
+ * @fileoverview
+ *
+ * @suppress {checkTypes}
+ */
+
+goog.provide('bases.HelperBaseClass');
+
+
+
+/**
+ * @constructor
+ */
+bases.HelperBaseClass = function() {};
+
+
+/**
+ * @expose
+ * @return {string}
+ */
+bases.HelperBaseClass.prototype.doSomething = function() {
+  return 'doneSomething';
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+bases.HelperBaseClass.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'HelperBaseClass', qName: 'bases.HelperBaseClass'}] };
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/bd111dd4/compiler.jx.tests/test-files/vf2js/projects/simpleMXML/src/SimpleMXML_Project_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/vf2js/projects/simpleMXML/src/SimpleMXML_Project_result.js b/compiler.jx.tests/test-files/vf2js/projects/simpleMXML/src/SimpleMXML_Project_result.js
index aaad9b6..2ad1ea6 100644
--- a/compiler.jx.tests/test-files/vf2js/projects/simpleMXML/src/SimpleMXML_Project_result.js
+++ b/compiler.jx.tests/test-files/vf2js/projects/simpleMXML/src/SimpleMXML_Project_result.js
@@ -50,7 +50,7 @@ SimpleMXML_Project.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'SimpleMXML_P
  * @private
  * @type {example.Component}
  */
-SimpleMXML_Project.prototype.myComponent = new example.Component();
+SimpleMXML_Project.prototype.myComponent;
 
 
 /**

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/bd111dd4/compiler.jx.tests/test-files/vf2js/projects/super/Base.as
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/vf2js/projects/super/Base.as b/compiler.jx.tests/test-files/vf2js/projects/super/Base.as
index 8dccc35..3cc5462 100644
--- a/compiler.jx.tests/test-files/vf2js/projects/super/Base.as
+++ b/compiler.jx.tests/test-files/vf2js/projects/super/Base.as
@@ -22,11 +22,19 @@ package
 
 	public class Base extends Super
 	{
+		public static var myClassConst:String = new Number();
+		
 		public function Base() 
 		{
 			super();
 		}; 
 
+		private var number:Number = this.getNumber(); 
+		
+		private var newText:String = this.text; 
+		
+		private var newTextAgain:String = text; 
+		
 		override public function get text():String 
 		{
 			return "A" + super.text;

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/bd111dd4/compiler.jx.tests/test-files/vf2js/projects/super/Base_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/vf2js/projects/super/Base_result.js b/compiler.jx.tests/test-files/vf2js/projects/super/Base_result.js
index cd666d4..b5063c6 100644
--- a/compiler.jx.tests/test-files/vf2js/projects/super/Base_result.js
+++ b/compiler.jx.tests/test-files/vf2js/projects/super/Base_result.js
@@ -31,12 +31,47 @@ goog.require('org.apache.flex.utils.Language');
  * @extends {Super}
  */
 Base = function() {
+  
+    Base.myClassConst = new Number();
+  
+    this.number = this.getNumber();
+  
+    this.newText = this.get_text();
+  
+    this.newTextAgain = this.get_text();
   Base.base(this, 'constructor');
 };
 goog.inherits(Base, Super);
 
 
 /**
+ * @type {string}
+ */
+Base.myClassConst;
+
+
+/**
+ * @private
+ * @type {number}
+ */
+Base.prototype.number;
+
+
+/**
+ * @private
+ * @type {string}
+ */
+Base.prototype.newText;
+
+
+/**
+ * @private
+ * @type {string}
+ */
+Base.prototype.newTextAgain;
+
+
+/**
  * @expose
  * @return {string}
  * @override
@@ -71,4 +106,4 @@ Base.prototype.getNumber = function() {
  *
  * @type {Object.<string, Array.<Object>>}
  */
-Base.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'Base', qName: 'Base'}] };
+Base.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'Base', qName: 'Base'}] };
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/bd111dd4/compiler.jx.tests/test-files/vf2js/projects/super/Super_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/vf2js/projects/super/Super_result.js b/compiler.jx.tests/test-files/vf2js/projects/super/Super_result.js
index 9082c3e..f4fdb42 100644
--- a/compiler.jx.tests/test-files/vf2js/projects/super/Super_result.js
+++ b/compiler.jx.tests/test-files/vf2js/projects/super/Super_result.js
@@ -26,8 +26,7 @@ goog.provide('Super');
 /**
  * @constructor
  */
-Super = function() {
-};
+Super = function() {};
 
 
 /**

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/bd111dd4/compiler.jx/downloads.xml
----------------------------------------------------------------------
diff --git a/compiler.jx/downloads.xml b/compiler.jx/downloads.xml
index f6f9150..2a57a71 100644
--- a/compiler.jx/downloads.xml
+++ b/compiler.jx/downloads.xml
@@ -81,16 +81,18 @@
 
     <!--  closure -->
     <property name="closure.name" value="compiler"/>
-    <property name="closure.version" value="20140625"/>
+    <property name="closure.version" value="20141023"/>
+    <!-- property name="closure.version" value="20140625"/ -->
     <!-- property name="closure.version" value="20140508"/ -->
     <property name="closure.dest.folder" value="google/closure-compiler"/>
     <property name="closure.dest.filename" value="${closure.name}.jar"/>
     <antcall target="download-dependency-closure">
       <param name="name" value="${closure.name}"/>
-      <param name="src.server" value="https://github.com"/>
-      <param name="src.folder" value="google/closure-compiler/archive"/>
-      <param name="src.filename" value="v${closure.version}.zip"/>
-      <param name="src.checksum" value="2cc65539b3ccaa1cf6f08c81fb7cdef3"/>
+      <param name="src.server" value="http://dl.google.com"/>
+      <param name="src.folder" value="closure-compiler"/>
+      <param name="src.filename" value="compiler-${closure.version}.zip"/>
+      <param name="src.checksum" value="91a73299a09ba5087c3bc5af5891219f"/>
+      <!-- param name="src.checksum" value="2cc65539b3ccaa1cf6f08c81fb7cdef3"/ --><!-- 20140625 -->
       <!-- param name="src.checksum" value="b4e4e20f32730b2aeb220e306f605236"/ --><!-- v20140508 -->
       <param name="dest.folder" value="${closure.dest.folder}"/>
       <param name="dest.filename" value="${closure.dest.filename}"/>
@@ -216,9 +218,9 @@
       <param name="checksum" value="${src.checksum}"/>
     </antcall>
 
-    <ant dir="${download.dir}/temp/closure-compiler-${closure.version}" inheritAll="false" />
+    <!-- ant dir="${download.dir}/temp/closure-compiler-${closure.version}" inheritAll="false" / -->
 
-    <copy file="${download.dir}/temp/closure-${closure.name}-${closure.version}/build/${closure.name}.jar" toFile="${lib.dir}/${closure.dest.folder}/${closure.dest.filename}" verbose="true"/>
+    <copy file="${download.dir}/temp/${closure.name}.jar" toFile="${lib.dir}/${closure.dest.folder}/${closure.dest.filename}" verbose="true"/>
   </target>
 
   <target name="download-dependency-jar" if="project.download.jar" description="Downloads a jar to the lib directory.">