move exportSymbol of the class earlier in the file so other @exports are added 
to the class export.  Otherwise the class export overwrites the object holding 
the other exports


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

Branch: refs/heads/develop
Commit: caf79f2a6480d8a7be069e136b50bed2748e1015
Parents: 203e769
Author: Alex Harui <[email protected]>
Authored: Wed Jul 12 23:08:39 2017 -0700
Committer: Alex Harui <[email protected]>
Committed: Wed Jul 12 23:08:39 2017 -0700

----------------------------------------------------------------------
 .../internal/codegen/js/jx/ClassEmitter.java    |  24 ++++
 .../codegen/js/jx/InterfaceEmitter.java         |  24 ++++
 .../codegen/js/jx/PackageFooterEmitter.java     |  23 ---
 .../codegen/mxml/flexjs/MXMLFlexJSEmitter.java  |  34 ++---
 .../js/flexjs/TestFlexJSAccessorMembers.java    |  24 ++--
 .../codegen/js/flexjs/TestFlexJSAccessors.java  |  14 +-
 .../codegen/js/flexjs/TestFlexJSClass.java      |  84 +++++------
 .../codegen/js/flexjs/TestFlexJSEmitter.java    |  48 +++----
 .../js/flexjs/TestFlexJSExpressions.java        |   2 +-
 .../js/flexjs/TestFlexJSFieldMembers.java       |  20 +--
 .../codegen/js/flexjs/TestFlexJSInterface.java  |  42 +++++-
 .../js/flexjs/TestFlexJSMethodMembers.java      |  12 +-
 .../codegen/js/flexjs/TestFlexJSPackage.java    | 144 +++----------------
 .../codegen/js/flexjs/TestFlexJSStatements.java |   8 +-
 .../mxml/flexjs/TestFlexJSMXMLApplication.java  |  72 +++++-----
 .../mxml/flexjs/TestFlexJSMXMLScript.java       |  36 ++---
 .../sourcemaps/TestSourceMapMXMLEvents.java     |   2 +-
 .../sourcemaps/TestSourceMapMXMLScript.java     |  14 +-
 .../flexjs/files/FlexJSTest_again_result.js     |  12 +-
 .../flexjs/files/LocalFunction_result.js        |  12 +-
 .../flexjs/files/MyInitialView_result.js        |  12 +-
 .../files/controllers/MyController_result.js    |  12 +-
 .../flexjs/files/models/MyModel_result.js       |  12 +-
 .../flexjs/files/wildcard_import_result.js      |  12 +-
 .../projects/bad_overrides/Test_result.js       |  12 +-
 .../projects/bad_overrides/classes/A_result.js  |  12 +-
 .../projects/bad_overrides/classes/B_result.js  |  12 +-
 .../projects/bad_overrides/classes/C_result.js  |  12 +-
 .../bad_overrides/interfaces/IA_result.js       |  12 +-
 .../bad_overrides/interfaces/IB_result.js       |  12 +-
 .../bad_overrides/interfaces/IC_result.js       |  12 +-
 .../flexjs/projects/circular/Base_result.js     |  12 +-
 .../flexjs/projects/circular/Super_result.js    |  12 +-
 .../flexjs/projects/circular_proto/A_result.js  |  12 +-
 .../flexjs/projects/circular_proto/B_result.js  |  12 +-
 .../flexjs/projects/circular_proto/C_result.js  |  12 +-
 .../flexjs/projects/circular_proto/D_result.js  |  12 +-
 .../flexjs/projects/circular_proto/E_result.js  |  12 +-
 .../flexjs/projects/circular_proto/F_result.js  |  12 +-
 .../flexjs/projects/interfaces/Test_result.js   |  12 +-
 .../projects/interfaces/classes/A_result.js     |  12 +-
 .../projects/interfaces/classes/B_result.js     |  12 +-
 .../projects/interfaces/classes/C_result.js     |  12 +-
 .../projects/interfaces/interfaces/IA_result.js |  12 +-
 .../projects/interfaces/interfaces/IC_result.js |  12 +-
 .../projects/interfaces/interfaces/ID_result.js |  12 +-
 .../projects/interfaces/interfaces/IE_result.js |  12 +-
 .../projects/internal/MainClass_result.js       |  24 ++--
 .../projects/internal/OtherClass_result.js      |  12 +-
 .../flexjs/projects/overrides/Test_result.js    |  12 +-
 .../projects/overrides/classes/A_result.js      |  12 +-
 .../projects/overrides/classes/B_result.js      |  12 +-
 .../projects/overrides/classes/C_result.js      |  12 +-
 .../projects/overrides/interfaces/IA_result.js  |  12 +-
 .../projects/overrides/interfaces/IB_result.js  |  12 +-
 .../projects/overrides/interfaces/IC_result.js  |  12 +-
 .../DifferentPackageAsConflict_result.js        |  12 +-
 .../Event_result.js                             |  12 +-
 .../mypackage/TestClass_result.js               |  12 +-
 .../otherpackage/Event_result.js                |  12 +-
 .../Event_result.js                             |  12 +-
 .../NoConflictNoWindow_result.js                |  12 +-
 .../mypackage/TestClass_result.js               |  12 +-
 .../Event_result.js                             |  12 +-
 .../NoConflictUseWindow_result.js               |  12 +-
 .../mypackage/TestClass_result.js               |  12 +-
 .../Event_result.js                             |  12 +-
 .../SamePackageAsConflict_result.js             |  12 +-
 .../mypackage/Event_result.js                   |  12 +-
 .../mypackage/TestClass_result.js               |  12 +-
 .../Event_result.js                             |  12 +-
 .../UseWindow_result.js                         |  12 +-
 .../mypackage/TestClass_result.js               |  12 +-
 .../otherpackage/Event_result.js                |  12 +-
 .../flexjs/projects/super/Base_result.js        |  12 +-
 .../flexjs/projects/super/Super_result.js       |  12 +-
 .../projects/xml_requires/XMLRequire_result.js  |  12 +-
 77 files changed, 647 insertions(+), 700 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/caf79f2a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java
 
b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java
index 9ee555e..4df1a21 100644
--- 
a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java
+++ 
b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java
@@ -27,7 +27,9 @@ import org.apache.flex.compiler.definitions.IDefinition;
 import org.apache.flex.compiler.definitions.IFunctionDefinition;
 import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
 import org.apache.flex.compiler.internal.codegen.js.JSSubEmitter;
+import org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSDocEmitter;
 import org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSEmitter;
+import 
org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSEmitterTokens;
 import org.apache.flex.compiler.internal.codegen.js.utils.DocEmitterUtils;
 import org.apache.flex.compiler.internal.codegen.js.utils.EmitterUtils;
 import org.apache.flex.compiler.internal.projects.FlexJSProject;
@@ -129,6 +131,28 @@ public class ClassEmitter extends JSSubEmitter implements
             }
         }
 
+           if (!getEmitter().getModel().isExterns)
+           {
+               JSFlexJSDocEmitter doc = (JSFlexJSDocEmitter) getEmitter()
+               .getDocEmitter();
+                   writeNewline();
+                   writeNewline();
+                   writeNewline();
+                   doc.begin();
+                   writeNewline(" * Prevent renaming of class. Needed for 
reflection.");
+                   doc.end();
+                   write(JSFlexJSEmitterTokens.GOOG_EXPORT_SYMBOL);
+                   write(ASEmitterTokens.PAREN_OPEN);
+                   write(ASEmitterTokens.SINGLE_QUOTE);
+                   
write(getEmitter().formatQualifiedName(node.getQualifiedName()));
+                   write(ASEmitterTokens.SINGLE_QUOTE);
+                   write(ASEmitterTokens.COMMA);
+                   write(ASEmitterTokens.SPACE);
+                   
write(getEmitter().formatQualifiedName(node.getQualifiedName()));
+                   write(ASEmitterTokens.PAREN_CLOSE);
+                   write(ASEmitterTokens.SEMICOLON);
+           }
+
         IDefinitionNode[] dnodes = node.getAllMemberNodes();
         for (IDefinitionNode dnode : dnodes)
         {

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/caf79f2a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/InterfaceEmitter.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/InterfaceEmitter.java
 
b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/InterfaceEmitter.java
index 626896f..3c15b64 100644
--- 
a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/InterfaceEmitter.java
+++ 
b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/InterfaceEmitter.java
@@ -26,7 +26,9 @@ import 
org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
 import org.apache.flex.compiler.internal.codegen.js.JSDocEmitterTokens;
 import org.apache.flex.compiler.internal.codegen.js.JSEmitterTokens;
 import org.apache.flex.compiler.internal.codegen.js.JSSubEmitter;
+import org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSDocEmitter;
 import org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSEmitter;
+import 
org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSEmitterTokens;
 import org.apache.flex.compiler.projects.ICompilerProject;
 import org.apache.flex.compiler.tree.ASTNodeID;
 import org.apache.flex.compiler.tree.as.IAccessorNode;
@@ -70,6 +72,28 @@ public class InterfaceEmitter extends JSSubEmitter implements
             write(ASEmitterTokens.SEMICOLON);
         }
 
+           if (!getEmitter().getModel().isExterns)
+           {
+               JSFlexJSDocEmitter doc = (JSFlexJSDocEmitter) getEmitter()
+               .getDocEmitter();
+                   writeNewline();
+                   writeNewline();
+                   writeNewline();
+                   doc.begin();
+                   writeNewline(" * Prevent renaming of class. Needed for 
reflection.");
+                   doc.end();
+                   write(JSFlexJSEmitterTokens.GOOG_EXPORT_SYMBOL);
+                   write(ASEmitterTokens.PAREN_OPEN);
+                   write(ASEmitterTokens.SINGLE_QUOTE);
+                   
write(getEmitter().formatQualifiedName(node.getQualifiedName()));
+                   write(ASEmitterTokens.SINGLE_QUOTE);
+                   write(ASEmitterTokens.COMMA);
+                   write(ASEmitterTokens.SPACE);
+                   
write(getEmitter().formatQualifiedName(node.getQualifiedName()));
+                   write(ASEmitterTokens.PAREN_CLOSE);
+                   write(ASEmitterTokens.SEMICOLON);
+           }
+           
         final IDefinitionNode[] members = node.getAllMemberDefinitionNodes();
         for (IDefinitionNode mnode : members)
         {

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/caf79f2a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
 
b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
index abfb297..5952352 100644
--- 
a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
+++ 
b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
@@ -172,29 +172,6 @@ public class PackageFooterEmitter extends JSSubEmitter 
implements
            write(ASEmitterTokens.SPACE);
            write(ASEmitterTokens.BLOCK_CLOSE);
            write(ASEmitterTokens.SEMICOLON);
-         // Removed this exclusion to support interface reflection (GD)
-      //  if (!(tnode instanceof IInterfaceNode))
-      //  {
-           if (!getEmitter().getModel().isExterns)
-           {
-                   writeNewline();
-                   writeNewline();
-                   writeNewline();
-                   doc.begin();
-                   writeNewline(" * Prevent renaming of class. Needed for 
reflection.");
-                   doc.end();
-                   write(JSFlexJSEmitterTokens.GOOG_EXPORT_SYMBOL);
-                   write(ASEmitterTokens.PAREN_OPEN);
-                   write(ASEmitterTokens.SINGLE_QUOTE);
-                   
write(getEmitter().formatQualifiedName(tnode.getQualifiedName()));
-                   write(ASEmitterTokens.SINGLE_QUOTE);
-                   write(ASEmitterTokens.COMMA);
-                   write(ASEmitterTokens.SPACE);
-                   
write(getEmitter().formatQualifiedName(tnode.getQualifiedName()));
-                   write(ASEmitterTokens.PAREN_CLOSE);
-                   write(ASEmitterTokens.SEMICOLON);
-           }
-       // }
 
            collectReflectionData(tnode);
            IMetaTagNode[] metadata = null;

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/caf79f2a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
 
b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
index ab57497..77377c9 100644
--- 
a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
+++ 
b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
@@ -799,8 +799,25 @@ public class MXMLFlexJSEmitter extends MXMLEmitter 
implements
         write(formatQualifiedName(baseClassName));
         write(ASEmitterTokens.PAREN_CLOSE);
         writeNewline(ASEmitterTokens.SEMICOLON);
+        
+           writeNewline();
+           writeNewline();
+        writeNewline("/**");
+           writeNewline(" * Prevent renaming of class. Needed for 
reflection.");
+        writeNewline(" */");
+           write(JSFlexJSEmitterTokens.GOOG_EXPORT_SYMBOL);
+           write(ASEmitterTokens.PAREN_OPEN);
+           write(ASEmitterTokens.SINGLE_QUOTE);
+           write(formatQualifiedName(cname));
+           write(ASEmitterTokens.SINGLE_QUOTE);
+           write(ASEmitterTokens.COMMA);
+           write(ASEmitterTokens.SPACE);
+           write(formatQualifiedName(cname));
+           write(ASEmitterTokens.PAREN_CLOSE);
+           write(ASEmitterTokens.SEMICOLON);
         writeNewline();
         writeNewline();
+           writeNewline();
     }
 
     
//--------------------------------------------------------------------------
@@ -834,23 +851,6 @@ public class MXMLFlexJSEmitter extends MXMLEmitter 
implements
         }
         write(" };");
         
-           writeNewline();
-           writeNewline();
-           writeNewline();
-        writeNewline("/**");
-           writeNewline(" * Prevent renaming of class. Needed for 
reflection.");
-        writeNewline(" */");
-           write(JSFlexJSEmitterTokens.GOOG_EXPORT_SYMBOL);
-           write(ASEmitterTokens.PAREN_OPEN);
-           write(ASEmitterTokens.SINGLE_QUOTE);
-           write(formatQualifiedName(cname));
-           write(ASEmitterTokens.SINGLE_QUOTE);
-           write(ASEmitterTokens.COMMA);
-           write(ASEmitterTokens.SPACE);
-           write(formatQualifiedName(cname));
-           write(ASEmitterTokens.PAREN_CLOSE);
-           write(ASEmitterTokens.SEMICOLON);
-
         emitReflectionData(cdef);
         writeNewline();
         writeNewline();

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/caf79f2a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
index cfc0578..4070eb8 100644
--- 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
+++ 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
@@ -37,7 +37,7 @@ public class TestFlexJSAccessorMembers extends 
TestGoogAccessorMembers
         IClassNode node = (IClassNode) getNode("function get foo():int{}",
                        IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() 
{\n};\n\n\n" +
+        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() 
{\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
                                "FalconTest_A.prototype.get__foo = function() 
{\n};\n\n\n" +
                        "Object.defineProperties(FalconTest_A.prototype, /** 
@lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nget: 
FalconTest_A.prototype.get__foo}}\n);");
     }
@@ -49,7 +49,7 @@ public class TestFlexJSAccessorMembers extends 
TestGoogAccessorMembers
        IClassNode node = (IClassNode) getNode("function get foo():int{return 
-1;}",
                        IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() 
{\n};\n\n\n" +
+        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() 
{\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
                                "FalconTest_A.prototype.get__foo = function() 
{\n  return -1;\n};\n\n\n" +
                        "Object.defineProperties(FalconTest_A.prototype, /** 
@lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nget: 
FalconTest_A.prototype.get__foo}}\n);");
     }
@@ -61,7 +61,7 @@ public class TestFlexJSAccessorMembers extends 
TestGoogAccessorMembers
        IClassNode node = (IClassNode) getNode("public function get 
foo():int{return -1;}",
                        IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() 
{\n};\n\n\n" +
+        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() 
{\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
                                "FalconTest_A.prototype.get__foo = function() 
{\n  return -1;\n};\n\n\n" +
                        "Object.defineProperties(FalconTest_A.prototype, /** 
@lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nget: 
FalconTest_A.prototype.get__foo}}\n);");
     }
@@ -73,7 +73,7 @@ public class TestFlexJSAccessorMembers extends 
TestGoogAccessorMembers
        IClassNode node = (IClassNode) getNode("public class B extends A { 
public override function get foo():int{return super.foo;} }; public class A 
{public function get foo():int {return 0;}} ",
                        IClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() 
{\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\n" +
+        assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() 
{\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\n/**\n * 
Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('B', 
B);\n\n\n" +
                                "B.prototype.get__foo = function() {\n  return 
B.superClass_.get__foo.apply(this);\n};\n\n\n" +
                        "Object.defineProperties(B.prototype, /** @lends 
{B.prototype} */ {\n/** @export */\nfoo: {\nget: B.prototype.get__foo}}\n);");
     }
@@ -84,7 +84,7 @@ public class TestFlexJSAccessorMembers extends 
TestGoogAccessorMembers
        IClassNode node = (IClassNode) getNode("public class B extends A { 
public override function get foo():int{return super.foo;} }; public class A { 
public function set foo(value:int):void{} public function get foo():int {return 
0;}}",
                        IClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() 
{\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\n" +
+        assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() 
{\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\n/**\n * 
Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('B', 
B);\n\n\n" +
                                "B.prototype.get__foo = function() {\n  return 
B.superClass_.get__foo.apply(this);\n};\n\n\n" +
                        "Object.defineProperties(B.prototype, /** @lends 
{B.prototype} */ {\n/** @export */\nfoo: {\nget: B.prototype.get__foo,\nset: 
A.prototype.set__foo}}\n);");
     }
@@ -96,7 +96,7 @@ public class TestFlexJSAccessorMembers extends 
TestGoogAccessorMembers
        IClassNode node = (IClassNode) getNode("public static function get 
foo():int{return -1;}",
                        IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() 
{\n};\n\n\n" +
+        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() 
{\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
                                "FalconTest_A.get__foo = function() {\n  return 
-1;\n};\n\n\n" +
                        "Object.defineProperties(FalconTest_A, /** @lends 
{FalconTest_A} */ {\n/** @export */\nfoo: {\nget: FalconTest_A.get__foo}}\n);");
     }
@@ -108,7 +108,7 @@ public class TestFlexJSAccessorMembers extends 
TestGoogAccessorMembers
        IClassNode node = (IClassNode) getNode("function set 
foo(value:int):void{}",
                        IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() 
{\n};\n\n\n" +
+        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() 
{\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
                                "FalconTest_A.prototype.set__foo = 
function(value) {\n};\n\n\n" +
                        "Object.defineProperties(FalconTest_A.prototype, /** 
@lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nset: 
FalconTest_A.prototype.set__foo}}\n);");
     }
@@ -120,7 +120,7 @@ public class TestFlexJSAccessorMembers extends 
TestGoogAccessorMembers
        IClassNode node = (IClassNode) getNode("function set 
foo(value:int):void{fetch('haai');}",
                        IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() 
{\n};\n\n\n" +
+        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() 
{\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
                                "FalconTest_A.prototype.set__foo = 
function(value) {\n  fetch('haai');\n};\n\n\n" +
                        "Object.defineProperties(FalconTest_A.prototype, /** 
@lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nset: 
FalconTest_A.prototype.set__foo}}\n);");
     }
@@ -132,7 +132,7 @@ public class TestFlexJSAccessorMembers extends 
TestGoogAccessorMembers
        IClassNode node = (IClassNode) getNode("public function set 
foo(value:int):void{}",
                        IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() 
{\n};\n\n\n" +
+        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() 
{\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
                                "FalconTest_A.prototype.set__foo = 
function(value) {\n};\n\n\n" +
                        "Object.defineProperties(FalconTest_A.prototype, /** 
@lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nset: 
FalconTest_A.prototype.set__foo}}\n);");
     }
@@ -144,7 +144,7 @@ public class TestFlexJSAccessorMembers extends 
TestGoogAccessorMembers
        IClassNode node = (IClassNode) getNode("public class B extends A { 
public override function set foo(value:int):void {super.foo = value;} }; public 
class A { public function set foo(value:int):void{}}",
                        IClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() 
{\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\n" +
+        assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() 
{\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\n/**\n * 
Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('B', 
B);\n\n\n" +
                                "B.prototype.set__foo = function(value) {\n  
B.superClass_.set__foo.apply(this, [ value] );\n};\n\n\n" +
                        "Object.defineProperties(B.prototype, /** @lends 
{B.prototype} */ {\n/** @export */\nfoo: {\nset: B.prototype.set__foo}}\n);");
     }
@@ -156,7 +156,7 @@ public class TestFlexJSAccessorMembers extends 
TestGoogAccessorMembers
        IClassNode node = (IClassNode) getNode("public static function set 
foo(value:int):void{}",
                        IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() 
{\n};\n\n\n" +
+        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() 
{\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
                                "FalconTest_A.set__foo = function(value) 
{\n};\n\n\n" +
                        "Object.defineProperties(FalconTest_A, /** @lends 
{FalconTest_A} */ {\n/** @export */\nfoo: {\nset: FalconTest_A.set__foo}}\n);");
     }
@@ -167,7 +167,7 @@ public class TestFlexJSAccessorMembers extends 
TestGoogAccessorMembers
        IClassNode node = (IClassNode) getNode("public class B extends A { 
public override function set foo(value:int):void {super.foo = value;} }; public 
class A { public function set foo(value:int):void{} public function get 
foo():int { return 0;}}",
                        IClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() 
{\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\n" +
+        assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() 
{\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\n/**\n * 
Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('B', 
B);\n\n\n" +
                                "B.prototype.set__foo = function(value) {\n  
B.superClass_.set__foo.apply(this, [ value] );\n};\n\n\n" +
                        "Object.defineProperties(B.prototype, /** @lends 
{B.prototype} */ {\n/** @export */\nfoo: {\nget: A.prototype.get__foo,\nset: 
B.prototype.set__foo}}\n);");
     }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/caf79f2a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
index 1f88fe4..93a6e09 100644
--- 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
+++ 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
@@ -46,7 +46,7 @@ public class TestFlexJSAccessors extends ASTestBase
                 "public function doStuff():void {label = 'hello, bye'; var 
theLabel:String = label;}; private var _label:String; public function get 
label():String {return _label}; public function set label(value:String):void 
{_label = value}; ",
                 IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\nFalconTest_A = 
function() {\n};\n\n\n/**\n * @export\n */\nFalconTest_A.prototype.doStuff = 
function() {\n  this.label = 'hello, bye';\n  var /** @type {string} */ 
theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n 
*/\nFalconTest_A.prototype._label;\n\n\n" +
+        String expected = "/**\n * @constructor\n */\nFalconTest_A = 
function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for 
reflection.\n */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n/**\n * 
@export\n */\nFalconTest_A.prototype.doStuff = function() {\n  this.label = 
'hello, bye';\n  var /** @type {string} */ theLabel = 
this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n 
*/\nFalconTest_A.prototype._label;\n\n\n" +
                        "FalconTest_A.prototype.get__label = function() {\n  
return this._label;\n};\n\n\n" +
                        "FalconTest_A.prototype.set__label = function(value) 
{\n  this._label = value;\n};\n\n\n" +
                        "Object.defineProperties(FalconTest_A.prototype, /** 
@lends {FalconTest_A.prototype} */ {\n/** @export */\n" +
@@ -61,7 +61,7 @@ public class TestFlexJSAccessors extends ASTestBase
                 "public class B { public function B() {}; public function 
doStuff():void {this.label = label + 'bye'; var theLabel:String = label;}; 
private var _label:String; public function get label():String {return _label}; 
public function set label(value:String):void {_label = value};}",
                 IClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\nB = function() 
{\n};\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n  
this.label = this.label + 'bye';\n  var /** @type {string} */ theLabel = 
this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n 
*/\nB.prototype._label;\n\n\n" +
+        String expected = "/**\n * @constructor\n */\nB = function() 
{\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('B', B);\n\n\n/**\n * @export\n */\nB.prototype.doStuff = 
function() {\n  this.label = this.label + 'bye';\n  var /** @type {string} */ 
theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n 
*/\nB.prototype._label;\n\n\n" +
                                "B.prototype.get__label = function() {\n  
return this._label;\n};\n\n\n" +
                                "B.prototype.set__label = function(value) {\n  
this._label = value;\n};\n\n\n" +
                        "Object.defineProperties(B.prototype, /** @lends 
{B.prototype} */ {\n/** @export */\nlabel: {\n" +
@@ -76,7 +76,7 @@ public class TestFlexJSAccessors extends ASTestBase
                 "public function doStuff():void {label = label + 'bye'; var 
theLabel:String = label;}; private var _label:String; public function get 
label():String {return _label}; public function set label(value:String):void 
{_label = value}; ",
                 IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\nFalconTest_A = 
function() {\n};\n\n\n/**\n * @export\n */\nFalconTest_A.prototype.doStuff = 
function() {\n  this.label = this.label + 'bye';\n  var /** @type {string} */ 
theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n 
*/\nFalconTest_A.prototype._label;\n\n\n" +
+        String expected = "/**\n * @constructor\n */\nFalconTest_A = 
function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for 
reflection.\n */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n/**\n * 
@export\n */\nFalconTest_A.prototype.doStuff = function() {\n  this.label = 
this.label + 'bye';\n  var /** @type {string} */ theLabel = 
this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n 
*/\nFalconTest_A.prototype._label;\n\n\n" +
                                "FalconTest_A.prototype.get__label = function() 
{\n  return this._label;\n};\n\n\n" +
                                "FalconTest_A.prototype.set__label = 
function(value) {\n  this._label = value;\n};\n\n\n" +
                                
"Object.defineProperties(FalconTest_A.prototype, /** @lends 
{FalconTest_A.prototype} */ {\n/** @export */\nlabel: {\n" +
@@ -91,7 +91,7 @@ public class TestFlexJSAccessors extends ASTestBase
                 "public class B { public function B() {}; public function 
doStuff():void {label = this.label; var theLabel:String = label;}; private var 
_label:String; public function get label():String {return _label}; public 
function set label(value:String):void {_label = value};}",
                 IClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\nB = function() 
{\n};\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n  
this.label = this.label;\n  var /** @type {string} */ theLabel = 
this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n 
*/\nB.prototype._label;\n\n\n" +
+        String expected = "/**\n * @constructor\n */\nB = function() 
{\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('B', B);\n\n\n/**\n * @export\n */\nB.prototype.doStuff = 
function() {\n  this.label = this.label;\n  var /** @type {string} */ theLabel 
= this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n 
*/\nB.prototype._label;\n\n\n" +
                                "B.prototype.get__label = function() {\n  
return this._label;\n};\n\n\n" +
                                "B.prototype.set__label = function(value) {\n  
this._label = value;\n};\n\n\n" +
                                "Object.defineProperties(B.prototype, /** 
@lends {B.prototype} */ {\n/** @export */\nlabel: {\n" +
@@ -106,7 +106,7 @@ public class TestFlexJSAccessors extends ASTestBase
                 "import flash.utils.flash_proxy;use namespace 
flash_proxy;public class B { public function B() {}; public function 
doStuff():void {var theLabel:String = label; label = theLabel;}; private var 
_label:String; flash_proxy function get label():String {return _label}; 
flash_proxy function set label(value:String):void {_label = value};}",
                 IClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\nB = function() 
{\n};\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n  var /** 
@type {string} */ theLabel = 
this[\"http://www.adobe.com/2006/actionscript/flash/proxy::label\"];\n  
this[\"http://www.adobe.com/2006/actionscript/flash/proxy::label\";] = 
theLabel;\n};\n\n\n/**\n * @private\n * @type {string}\n 
*/\nB.prototype._label;\n\n\n" +
+        String expected = "/**\n * @constructor\n */\nB = function() 
{\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('B', B);\n\n\n/**\n * @export\n */\nB.prototype.doStuff = 
function() {\n  var /** @type {string} */ theLabel = 
this[\"http://www.adobe.com/2006/actionscript/flash/proxy::label\"];\n  
this[\"http://www.adobe.com/2006/actionscript/flash/proxy::label\";] = 
theLabel;\n};\n\n\n/**\n * @private\n * @type {string}\n 
*/\nB.prototype._label;\n\n\n" +
                                
"B.prototype[\"http://www.adobe.com/2006/actionscript/flash/proxy::get__label\";]
 = function() {\n  return this._label;\n};\n\n\n" +
                                
"B.prototype[\"http://www.adobe.com/2006/actionscript/flash/proxy::set__label\";]
 = function(value) {\n  this._label = value;\n};\n\n\n" +
                        "Object.defineProperties(B.prototype, /** @lends 
{B.prototype} */ {\n/** @export 
*/\n\"http://www.adobe.com/2006/actionscript/flash/proxy::label\": {\nget: 
B.prototype[\"http://www.adobe.com/2006/actionscript/flash/proxy::get__label\"],\nset:
 
B.prototype[\"http://www.adobe.com/2006/actionscript/flash/proxy::set__label\"]}}\n);";
@@ -120,7 +120,7 @@ public class TestFlexJSAccessors extends ASTestBase
                 "public function doStuff():void {label = 'hello, bye'; var 
theLabel:String = label;}; private var _label:String; [Bindable] public 
function get label():String {return _label}; public function set 
label(value:String):void {_label = value}; ",
                 IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\nFalconTest_A = 
function() {\n};\n\n\n/**\n * @export\n */\nFalconTest_A.prototype.doStuff = 
function() {\n  this.label = 'hello, bye';\n  var /** @type {string} */ 
theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n 
*/\nFalconTest_A.prototype._label;\n\n\n" +
+        String expected = "/**\n * @constructor\n */\nFalconTest_A = 
function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for 
reflection.\n */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n/**\n * 
@export\n */\nFalconTest_A.prototype.doStuff = function() {\n  this.label = 
'hello, bye';\n  var /** @type {string} */ theLabel = 
this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n 
*/\nFalconTest_A.prototype._label;\n\n\n" +
                        "FalconTest_A.prototype.get__label = function() {\n  
return this._label;\n};\n\n\n" +
                                "FalconTest_A.prototype.bindable__set__label = 
function(value) {\n  this._label = value;\n};\n\n\n" +
                        "FalconTest_A.prototype.set__label = function(value) 
{\nvar oldValue = this.get__label();\nif (oldValue != value) 
{\nthis.bindable__set__label(value);\n" +
@@ -138,7 +138,7 @@ public class TestFlexJSAccessors extends ASTestBase
                 "public function doStuff():void {label = 'hello, bye'; var 
theLabel:String = label;}; private var _label:String; [Bindable(\"change\")] 
public function get label():String {return _label}; public function set 
label(value:String):void {_label = value}; ",
                 IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\nFalconTest_A = 
function() {\n};\n\n\n/**\n * @export\n */\nFalconTest_A.prototype.doStuff = 
function() {\n  this.label = 'hello, bye';\n  var /** @type {string} */ 
theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n 
*/\nFalconTest_A.prototype._label;\n\n\n" +
+        String expected = "/**\n * @constructor\n */\nFalconTest_A = 
function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for 
reflection.\n */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n/**\n * 
@export\n */\nFalconTest_A.prototype.doStuff = function() {\n  this.label = 
'hello, bye';\n  var /** @type {string} */ theLabel = 
this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n 
*/\nFalconTest_A.prototype._label;\n\n\n" +
                                "FalconTest_A.prototype.get__label = function() 
{\n  return this._label;\n};\n\n\n" +
                                "FalconTest_A.prototype.set__label = 
function(value) {\n  this._label = value;\n};\n\n\n" +
                        "Object.defineProperties(FalconTest_A.prototype, /** 
@lends {FalconTest_A.prototype} */ {\n/** @export */\n" +

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/caf79f2a/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 07c8000..fbb1c41 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
@@ -48,7 +48,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A {public function A() { 
super(); }}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() 
{\n  ;\n};");
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() 
{\n  ;\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('org.apache.flex.A', org.apache.flex.A);");
     }
 
     @Override
@@ -57,7 +57,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A extends EventDispatcher 
{public function A() {}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends 
{flash.events.EventDispatcher}\n */\norg.apache.flex.A = function() {\n  
org.apache.flex.A.base(this, 
'constructor');\n};\ngoog.inherits(org.apache.flex.A, 
flash.events.EventDispatcher);");
+        assertOut("/**\n * @constructor\n * @extends 
{flash.events.EventDispatcher}\n */\norg.apache.flex.A = function() {\n  
org.apache.flex.A.base(this, 
'constructor');\n};\ngoog.inherits(org.apache.flex.A, 
flash.events.EventDispatcher);\n\n\n/**\n * Prevent renaming of class. Needed 
for reflection.\n */\ngoog.exportSymbol('org.apache.flex.A', 
org.apache.flex.A);");
     }
 
     @Test
@@ -65,7 +65,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A extends EventDispatcher 
{public function A(arg:String) { super(arg);}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends 
{flash.events.EventDispatcher}\n * @param {string} arg\n */\norg.apache.flex.A 
= function(arg) {\n  org.apache.flex.A.base(this, 'constructor', 
arg);\n};\ngoog.inherits(org.apache.flex.A, flash.events.EventDispatcher);");
+        assertOut("/**\n * @constructor\n * @extends 
{flash.events.EventDispatcher}\n * @param {string} arg\n */\norg.apache.flex.A 
= function(arg) {\n  org.apache.flex.A.base(this, 'constructor', 
arg);\n};\ngoog.inherits(org.apache.flex.A, 
flash.events.EventDispatcher);\n\n\n/**\n * Prevent renaming of class. Needed 
for reflection.\n */\ngoog.exportSymbol('org.apache.flex.A', 
org.apache.flex.A);");
     }
 
     @Test
@@ -73,7 +73,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A extends EventDispatcher 
{public function A(arg:String) {}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends 
{flash.events.EventDispatcher}\n * @param {string} arg\n */\norg.apache.flex.A 
= function(arg) {\n  org.apache.flex.A.base(this, 
'constructor');\n};\ngoog.inherits(org.apache.flex.A, 
flash.events.EventDispatcher);");
+        assertOut("/**\n * @constructor\n * @extends 
{flash.events.EventDispatcher}\n * @param {string} arg\n */\norg.apache.flex.A 
= function(arg) {\n  org.apache.flex.A.base(this, 
'constructor');\n};\ngoog.inherits(org.apache.flex.A, 
flash.events.EventDispatcher);\n\n\n/**\n * Prevent renaming of class. Needed 
for reflection.\n */\ngoog.exportSymbol('org.apache.flex.A', 
org.apache.flex.A);");
     }
 
     @Override
@@ -82,7 +82,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A extends EventDispatcher 
implements IEventDispatcher {public function A() {}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends 
{flash.events.EventDispatcher}\n * @implements 
{flash.events.IEventDispatcher}\n */\norg.apache.flex.A = function() {\n  
org.apache.flex.A.base(this, 
'constructor');\n};\ngoog.inherits(org.apache.flex.A, 
flash.events.EventDispatcher);");
+        assertOut("/**\n * @constructor\n * @extends 
{flash.events.EventDispatcher}\n * @implements 
{flash.events.IEventDispatcher}\n */\norg.apache.flex.A = function() {\n  
org.apache.flex.A.base(this, 
'constructor');\n};\ngoog.inherits(org.apache.flex.A, 
flash.events.EventDispatcher);\n\n\n/**\n * Prevent renaming of class. Needed 
for reflection.\n */\ngoog.exportSymbol('org.apache.flex.A', 
org.apache.flex.A);");
     }
 
     @Override
@@ -91,7 +91,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A extends EventDispatcher 
implements IEventDispatcher, IBitmapDrawable {public function A() {}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends 
{flash.events.EventDispatcher}\n * @implements 
{flash.events.IEventDispatcher}\n * @implements 
{flash.display.IBitmapDrawable}\n */\norg.apache.flex.A = function() {\n  
org.apache.flex.A.base(this, 
'constructor');\n};\ngoog.inherits(org.apache.flex.A, 
flash.events.EventDispatcher);");
+        assertOut("/**\n * @constructor\n * @extends 
{flash.events.EventDispatcher}\n * @implements 
{flash.events.IEventDispatcher}\n * @implements 
{flash.display.IBitmapDrawable}\n */\norg.apache.flex.A = function() {\n  
org.apache.flex.A.base(this, 
'constructor');\n};\ngoog.inherits(org.apache.flex.A, 
flash.events.EventDispatcher);\n\n\n/**\n * Prevent renaming of class. Needed 
for reflection.\n */\ngoog.exportSymbol('org.apache.flex.A', 
org.apache.flex.A);");
     }
 
     @Override
@@ -100,7 +100,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public final class A extends 
EventDispatcher implements IEventDispatcher, IBitmapDrawable {public function 
A() {}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends 
{flash.events.EventDispatcher}\n * @implements 
{flash.events.IEventDispatcher}\n * @implements 
{flash.display.IBitmapDrawable}\n */\norg.apache.flex.A = function() {\n  
org.apache.flex.A.base(this, 
'constructor');\n};\ngoog.inherits(org.apache.flex.A, 
flash.events.EventDispatcher);");
+        assertOut("/**\n * @constructor\n * @extends 
{flash.events.EventDispatcher}\n * @implements 
{flash.events.IEventDispatcher}\n * @implements 
{flash.display.IBitmapDrawable}\n */\norg.apache.flex.A = function() {\n  
org.apache.flex.A.base(this, 
'constructor');\n};\ngoog.inherits(org.apache.flex.A, 
flash.events.EventDispatcher);\n\n\n/**\n * Prevent renaming of class. Needed 
for reflection.\n */\ngoog.exportSymbol('org.apache.flex.A', 
org.apache.flex.A);");
     }
 
     @Override
@@ -109,7 +109,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A extends 
flash.events.EventDispatcher implements flash.events.IEventDispatcher, 
flash.display.IBitmapDrawable {public function A() {}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends 
{flash.events.EventDispatcher}\n * @implements 
{flash.events.IEventDispatcher}\n * @implements 
{flash.display.IBitmapDrawable}\n */\norg.apache.flex.A = function() {\n  
org.apache.flex.A.base(this, 
'constructor');\n};\ngoog.inherits(org.apache.flex.A, 
flash.events.EventDispatcher);");
+        assertOut("/**\n * @constructor\n * @extends 
{flash.events.EventDispatcher}\n * @implements 
{flash.events.IEventDispatcher}\n * @implements 
{flash.display.IBitmapDrawable}\n */\norg.apache.flex.A = function() {\n  
org.apache.flex.A.base(this, 
'constructor');\n};\ngoog.inherits(org.apache.flex.A, 
flash.events.EventDispatcher);\n\n\n/**\n * Prevent renaming of class. Needed 
for reflection.\n */\ngoog.exportSymbol('org.apache.flex.A', 
org.apache.flex.A);");
     }
 
     @Override
@@ -118,7 +118,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A extends 
flash.events.EventDispatcher { public function A() { super('foo', 42);}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends 
{flash.events.EventDispatcher}\n */\norg.apache.flex.A = function() {\n  
org.apache.flex.A.base(this, 'constructor', 'foo', 
42);\n};\ngoog.inherits(org.apache.flex.A, flash.events.EventDispatcher);");
+        assertOut("/**\n * @constructor\n * @extends 
{flash.events.EventDispatcher}\n */\norg.apache.flex.A = function() {\n  
org.apache.flex.A.base(this, 'constructor', 'foo', 
42);\n};\ngoog.inherits(org.apache.flex.A, 
flash.events.EventDispatcher);\n\n\n/**\n * Prevent renaming of class. Needed 
for reflection.\n */\ngoog.exportSymbol('org.apache.flex.A', 
org.apache.flex.A);");
     }
 
     @Test
@@ -126,7 +126,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function 
B(arg1:String) {this.arg1 = arg1}; public var arg1:String;}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n * @param {string} arg1\n 
*/\norg.apache.flex.B = function(arg1) {\n  this.arg1 = arg1;\n};\n\n\n/**\n * 
@export\n * @type {string}\n */\norg.apache.flex.B.prototype.arg1;";
+        String expected = "/**\n * @constructor\n * @param {string} arg1\n 
*/\norg.apache.flex.B = function(arg1) {\n  this.arg1 = arg1;\n};\n\n\n/**\n * 
Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('org.apache.flex.B', org.apache.flex.B);\n\n\n/**\n * 
@export\n * @type {string}\n */\norg.apache.flex.B.prototype.arg1;";
         assertOut(expected);
     }
 
@@ -135,7 +135,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() 
{}; public var event:Event = new Event(); public function foo():String {return 
event.type;};}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg.apache.flex.B = 
function() {\n\nthis.event = new flash.events.Event();\n};\n\n\n/**\n * 
@export\n * @type {flash.events.Event}\n 
*/\norg.apache.flex.B.prototype.event;\n\n\n/**\n * @export\n * @return 
{string}\n */\norg.apache.flex.B.prototype.foo = function() {\n  return 
this.event.type;\n};";
+        String expected = "/**\n * @constructor\n */\norg.apache.flex.B = 
function() {\n\nthis.event = new flash.events.Event();\n};\n\n\n/**\n * Prevent 
renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('org.apache.flex.B', org.apache.flex.B);\n\n\n/**\n * 
@export\n * @type {flash.events.Event}\n 
*/\norg.apache.flex.B.prototype.event;\n\n\n/**\n * @export\n * @return 
{string}\n */\norg.apache.flex.B.prototype.foo = function() {\n  return 
this.event.type;\n};";
         assertOut(expected);
     }
 
@@ -144,7 +144,7 @@ public class TestFlexJSClass 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 * @export\n */\norg.apache.flex.B.prototype.foo = 
function() {\n};";
+        String expected = "/**\n * @constructor\n */\norg.apache.flex.B = 
function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for 
reflection.\n */\ngoog.exportSymbol('org.apache.flex.B', 
org.apache.flex.B);\n\n\n/**\n * @export\n */\norg.apache.flex.B.prototype.foo 
= function() {\n};";
         assertOut(expected);
     }
 
@@ -153,7 +153,7 @@ public class TestFlexJSClass 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 * @export\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/**\n * Prevent renaming of class. Needed for 
reflection.\n */\ngoog.exportSymbol('org.apache.flex.B', 
org.apache.flex.B);\n\n\n/**\n * @export\n * @override\n 
*/\norg.apache.flex.B.prototype.foo = function() {\n};";
         assertOut(expected);
     }
 
@@ -162,7 +162,7 @@ public class TestFlexJSClass 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 * @export\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/**\n * Prevent renaming of class. Needed for 
reflection.\n */\ngoog.exportSymbol('org.apache.flex.B', 
org.apache.flex.B);\n\n\n/**\n * @export\n * @override\n 
*/\norg.apache.flex.B.prototype.foo = function(value) {\n  baz = '';\n};";
         assertOut(expected);
     }
 
@@ -171,7 +171,7 @@ public class TestFlexJSClass 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 * @export\n * @override\n 
*/\norg.apache.flex.B.prototype.foo = function() {\n  
org.apache.flex.B.superClass_.foo.apply(this);\n};";
+        String expected = "/**\n * @constructor\n */\norg.apache.flex.B = 
function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for 
reflection.\n */\ngoog.exportSymbol('org.apache.flex.B', 
org.apache.flex.B);\n\n\n/**\n * @export\n * @override\n 
*/\norg.apache.flex.B.prototype.foo = function() {\n  
org.apache.flex.B.superClass_.foo.apply(this);\n};";
         assertOut(expected);
     }
 
@@ -180,7 +180,7 @@ public class TestFlexJSClass 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\norg.apache.flex.B.prototype.set__baz = function(value) 
{\n};\n\n\norg.apache.flex.B.prototype.set__foo = function(value) {\n  this.baz 
= value;\n};\n\n\nObject.defineProperties(org.apache.flex.B.prototype, /** 
@lends {org.apache.flex.B.prototype} */ {\n/** @export */\nbaz: {\nset: 
org.apache.flex.B.prototype.set__baz},\n/** @export */\nfoo: {\nset: 
org.apache.flex.B.prototype.set__foo}}\n);";
+        String expected = "/**\n * @constructor\n */\norg.apache.flex.B = 
function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for 
reflection.\n */\ngoog.exportSymbol('org.apache.flex.B', 
org.apache.flex.B);\n\n\norg.apache.flex.B.prototype.set__baz = function(value) 
{\n};\n\n\norg.apache.flex.B.prototype.set__foo = function(value) {\n  this.baz 
= value;\n};\n\n\nObject.defineProperties(org.apache.flex.B.prototype, /** 
@lends {org.apache.flex.B.prototype} */ {\n/** @export */\nbaz: {\nset: 
org.apache.flex.B.prototype.set__baz},\n/** @export */\nfoo: {\nset: 
org.apache.flex.B.prototype.set__foo}}\n);";
         assertOut(expected);
     }
 
@@ -189,7 +189,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B extends A {public 
function B() {}; override public function set foo(value:Object):void {super.foo 
= value;};} class A {public function set foo(value:Object):void {}}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n * @extends 
{org.apache.flex.A}\n */\norg.apache.flex.B = function() {\n  
org.apache.flex.B.base(this, 
'constructor');\n};\ngoog.inherits(org.apache.flex.B, 
org.apache.flex.A);\n\n\norg.apache.flex.B.prototype.set__foo = function(value) 
{\n  org.apache.flex.B.superClass_.set__foo.apply(this, [ value] 
);\n};\n\n\nObject.defineProperties(org.apache.flex.B.prototype, /** @lends 
{org.apache.flex.B.prototype} */ {\n/** @export */\nfoo: {\nset: 
org.apache.flex.B.prototype.set__foo}}\n);";
+        String expected = "/**\n * @constructor\n * @extends 
{org.apache.flex.A}\n */\norg.apache.flex.B = function() {\n  
org.apache.flex.B.base(this, 
'constructor');\n};\ngoog.inherits(org.apache.flex.B, 
org.apache.flex.A);\n\n\n/**\n * Prevent renaming of class. Needed for 
reflection.\n */\ngoog.exportSymbol('org.apache.flex.B', 
org.apache.flex.B);\n\n\norg.apache.flex.B.prototype.set__foo = function(value) 
{\n  org.apache.flex.B.superClass_.set__foo.apply(this, [ value] 
);\n};\n\n\nObject.defineProperties(org.apache.flex.B.prototype, /** @lends 
{org.apache.flex.B.prototype} */ {\n/** @export */\nfoo: {\nset: 
org.apache.flex.B.prototype.set__foo}}\n);";
         assertOut(expected);
     }
 
@@ -198,7 +198,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("import flash.utils.flash_proxy; use 
namespace flash_proxy; public class B {public function B() {}; flash_proxy 
function foo():void {};}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg.apache.flex.B = 
function() {\n};\n\n\n/**\n 
*/\norg.apache.flex.B.prototype[\"http://www.adobe.com/2006/actionscript/flash/proxy::foo\";]
 = function() {\n};";
+        String expected = "/**\n * @constructor\n */\norg.apache.flex.B = 
function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for 
reflection.\n */\ngoog.exportSymbol('org.apache.flex.B', 
org.apache.flex.B);\n\n\n/**\n 
*/\norg.apache.flex.B.prototype[\"http://www.adobe.com/2006/actionscript/flash/proxy::foo\";]
 = function() {\n};";
         assertOut(expected);
     }
 
@@ -208,7 +208,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A extends 
flash.events.EventDispatcher {public function A(arg1:String, arg2:int) {}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends 
{flash.events.EventDispatcher}\n * @param {string} arg1\n * @param {number} 
arg2\n */\norg.apache.flex.A = function(arg1, arg2) {\n  
org.apache.flex.A.base(this, 
'constructor');\n};\ngoog.inherits(org.apache.flex.A, 
flash.events.EventDispatcher);");
+        assertOut("/**\n * @constructor\n * @extends 
{flash.events.EventDispatcher}\n * @param {string} arg1\n * @param {number} 
arg2\n */\norg.apache.flex.A = function(arg1, arg2) {\n  
org.apache.flex.A.base(this, 
'constructor');\n};\ngoog.inherits(org.apache.flex.A, 
flash.events.EventDispatcher);\n\n\n/**\n * Prevent renaming of class. Needed 
for reflection.\n */\ngoog.exportSymbol('org.apache.flex.A', 
org.apache.flex.A);");
     }
 
     @Override
@@ -218,7 +218,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 = 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;");
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() 
{\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('org.apache.flex.A', org.apache.flex.A);\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;");
     }
 
     @Test
@@ -229,7 +229,7 @@ public class TestFlexJSClass extends TestGoogClass
         asBlockWalker.visitClass(node);
         assertOut("/**\n * @constructor\n" +
                          " */\norg.apache.flex.A = function() {\n" +
-                         "};\n\n\n" +
+                         "};\n\n\n/**\n * Prevent renaming of class. Needed 
for reflection.\n */\ngoog.exportSymbol('org.apache.flex.A', 
org.apache.flex.A);\n\n\n" +
                          "/**\n" +
                          " * @export\n" +
                          " * @type {Object}\n" +
@@ -319,7 +319,7 @@ public class TestFlexJSClass extends TestGoogClass
         assertOut("/**\n * @constructor\n" +
                          " */\norg.apache.flex.A = function() {\n\n" +
                          "this.a_ = {foo:1};\n" +
-                         "};\n\n\n" +
+                         "};\n\n\n/**\n * Prevent renaming of class. Needed 
for reflection.\n */\ngoog.exportSymbol('org.apache.flex.A', 
org.apache.flex.A);\n\n\n" +
                          "/**\n" +
                          " * @export\n" +
                          " * @type {Object}\n" +
@@ -408,7 +408,7 @@ public class TestFlexJSClass extends TestGoogClass
         asBlockWalker.visitClass(node);
         assertOut("/**\n * @constructor\n" +
                          " */\norg.apache.flex.A = function() {\n" +
-                         "};\n\n\n" +
+                         "};\n\n\n/**\n * Prevent renaming of class. Needed 
for reflection.\n */\ngoog.exportSymbol('org.apache.flex.A', 
org.apache.flex.A);\n\n\n" +
                          "/**\n" +
                          " * @export\n" +
                          " * @type {Object}\n" +
@@ -460,7 +460,7 @@ public class TestFlexJSClass extends TestGoogClass
         IClassNode node = getClassNode("public class A {public static var 
a:int = 10;public static var b:String = initStatic(); "
                 + "private static function initStatic():String { return 
\"foo\"; }}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() 
{\n};\n\n\n/**\n * @export\n * @type {number}\n */\norg.apache.flex.A.a = 
10;\n\n\n/**\n * @export\n * @type {string}\n 
*/\norg.apache.flex.A.b;\n\n\n/**\n * @private\n * @return {string}\n 
*/\norg.apache.flex.A.initStatic = function() {\n  return 
\"foo\";\n};\n\norg.apache.flex.A.b = org.apache.flex.A.initStatic();\n\n");
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() 
{\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('org.apache.flex.A', org.apache.flex.A);\n\n\n/**\n * 
@export\n * @type {number}\n */\norg.apache.flex.A.a = 10;\n\n\n/**\n * 
@export\n * @type {string}\n */\norg.apache.flex.A.b;\n\n\n/**\n * @private\n * 
@return {string}\n */\norg.apache.flex.A.initStatic = function() {\n  return 
\"foo\";\n};\n\norg.apache.flex.A.b = org.apache.flex.A.initStatic();\n\n");
     }
     
     @Test
@@ -468,7 +468,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         FileNode node = (FileNode)getNode("package org.apache.flex {\npublic 
class A {\nimport flash.display.Sprite; Sprite;\n}}", FileNode.class, 0);
         asBlockWalker.visitFile(node);
-        assertOut("/**\n * org.apache.flex.A\n *\n * @fileoverview\n *\n * 
@suppress {checkTypes|accessControls}\n 
*/\n\ngoog.provide('org.apache.flex.A');\n\ngoog.require('flash.display.Sprite');\n\n\n\n/**\n
 * @constructor\n */\norg.apache.flex.A = function() {\n};");
+        assertOut("/**\n * org.apache.flex.A\n *\n * @fileoverview\n *\n * 
@suppress {checkTypes|accessControls}\n 
*/\n\ngoog.provide('org.apache.flex.A');\n\ngoog.require('flash.display.Sprite');\n\n\n\n/**\n
 * @constructor\n */\norg.apache.flex.A = function() {\n};\n\n\n/**\n * Prevent 
renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('org.apache.flex.A', org.apache.flex.A);");
     }
     
     @Override
@@ -481,7 +481,7 @@ public class TestFlexJSClass 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 * @export\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 * @export\n * 
@const\n * @type {string}\n */\norg.apache.flex.A.C = 'me' + 'you';");
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() 
{\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('org.apache.flex.A', org.apache.flex.A);\n\n\n/**\n * 
@export\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 * @export\n * @const\n * 
@type {string}\n */\norg.apache.flex.A.C = 'me' + 'you';");
     }
 
     @Override
@@ -500,7 +500,7 @@ public class TestFlexJSClass extends TestGoogClass
                 + "flash_proxy function get foo6():Object{return null;}"
                 + "flash_proxy function set foo6(value:Object):void{}" + "}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() 
{\n};\n\n\n" +
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() 
{\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('org.apache.flex.A', org.apache.flex.A);\n\n\n" +
                        "org.apache.flex.A.prototype.get__foo1 = function() {\n 
 return null;\n};\n\n\n" +
                        "org.apache.flex.A.prototype.set__foo1 = 
function(value) {\n};\n\n\n" +
                        "org.apache.flex.A.prototype.get__foo2 = function() {\n 
 return null;\n};\n\n\n" +
@@ -535,7 +535,7 @@ public class TestFlexJSClass extends TestGoogClass
                 + "public static function foo7(value:Object):void{}"
                 + "flash_proxy static function foo7(value:Object):void{}" + 
"}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() 
{\n};\n\n\n/**\n * @export\n * @return {Object}\n 
*/\norg.apache.flex.A.prototype.foo1 = function() {\n  return 
null;\n};\n\n\n/**\n * @export\n * @return {Object}\n 
*/\norg.apache.flex.A.prototype.foo1a = function() {\n  return 
null;\n};\n\n\n/**\n * @export\n * @override\n 
*/\norg.apache.flex.A.prototype.foo1b = function() {\n  return 
org.apache.flex.A.superClass_.foo1b.apply(this);\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[\"http://www.adobe.com/2006/actionscript/flash/proxy::foo6\";]
 = function(value) {\n};\n\n\n/**\n * @export\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[\"http://www.adobe.com/2006/actionscript/flash/proxy::foo7\";]
 = function(value) {\n};");
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() 
{\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('org.apache.flex.A', org.apache.flex.A);\n\n\n/**\n * 
@export\n * @return {Object}\n */\norg.apache.flex.A.prototype.foo1 = 
function() {\n  return null;\n};\n\n\n/**\n * @export\n * @return {Object}\n 
*/\norg.apache.flex.A.prototype.foo1a = function() {\n  return 
null;\n};\n\n\n/**\n * @export\n * @override\n 
*/\norg.apache.flex.A.prototype.foo1b = function() {\n  return 
org.apache.flex.A.superClass_.foo1b.apply(this);\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[\"http://
 www.adobe.com/2006/actionscript/flash/proxy::foo6\"] = function(value) 
{\n};\n\n\n/**\n * @export\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[\"http://www.adobe.com/2006/actionscript/flash/proxy::foo7\";]
 = function(value) {\n};");
     }
 
     @Test
@@ -546,7 +546,7 @@ public class TestFlexJSClass 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 * @export\n * @return {Object}\n 
*/\norg.apache.flex.B.prototype.foo1 = function() {\n  var self = this;\n  
function bar1() {\n    return null;\n  };\n  return bar1();\n};\n\n\n/**\n * 
@export\n * @return {Object}\n */\norg.apache.flex.B.prototype.foo2 = 
function() {\n  var self = this;\n  function bar2(param1) {\n    return null;\n 
 };\n  return bar2('foo');\n};");
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.B = function() 
{\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('org.apache.flex.B', org.apache.flex.B);\n\n\n/**\n * 
@export\n * @return {Object}\n */\norg.apache.flex.B.prototype.foo1 = 
function() {\n  var self = this;\n  function bar1() {\n    return null;\n  };\n 
 return bar1();\n};\n\n\n/**\n * @export\n * @return {Object}\n 
*/\norg.apache.flex.B.prototype.foo2 = function() {\n  var self = this;\n  
function bar2(param1) {\n    return null;\n  };\n  return bar2('foo');\n};");
     }
 
     @Test
@@ -558,7 +558,7 @@ public class TestFlexJSClass 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 * @export\n * @type {string}\n 
*/\norg.apache.flex.B.prototype.baz1;\n\n\n/**\n * @export\n * @return 
{string}\n */\norg.apache.flex.B.prototype.foo1 = function() {\n  var self = 
this;\n  function bar1() {\n    return self.baz1;\n  };\n  return 
bar1();\n};\n\n\n/**\n * @export\n * @return {string}\n 
*/\norg.apache.flex.B.prototype.foo2 = function() {\n  var self = this;\n  
function bar2(param1) {\n    return param1 + self.baz1;\n  };\n  return 
bar2('foo');\n};");
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.B = function() 
{\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('org.apache.flex.B', org.apache.flex.B);\n\n\n/**\n * 
@export\n * @type {string}\n */\norg.apache.flex.B.prototype.baz1;\n\n\n/**\n * 
@export\n * @return {string}\n */\norg.apache.flex.B.prototype.foo1 = 
function() {\n  var self = this;\n  function bar1() {\n    return self.baz1;\n  
};\n  return bar1();\n};\n\n\n/**\n * @export\n * @return {string}\n 
*/\norg.apache.flex.B.prototype.foo2 = function() {\n  var self = this;\n  
function bar2(param1) {\n    return param1 + self.baz1;\n  };\n  return 
bar2('foo');\n};");
     }
 
     @Test
@@ -578,7 +578,7 @@ public class TestFlexJSClass 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 * @export\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/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('org.apache.flex.B', org.apache.flex.B);\n\n\n/**\n * 
@export\n * @return {org.apache.flex.B}\n */\norg.apache.flex.B.prototype.clone 
= function() {\n  return new org.apache.flex.B();\n};");
     }
 
     @Override
@@ -587,7 +587,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A{}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() 
{\n};");
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() 
{\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('org.apache.flex.A', org.apache.flex.A);");
     }
 
     @Override
@@ -598,7 +598,7 @@ public class TestFlexJSClass extends TestGoogClass
         //               in JS we ignore it
         IClassNode node = getClassNode("internal class A{}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() 
{\n};");
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() 
{\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('org.apache.flex.A', org.apache.flex.A);");
     }
 
     @Override
@@ -609,7 +609,7 @@ public class TestFlexJSClass extends TestGoogClass
         //               in JS we ignore it
         IClassNode node = getClassNode("public final class A{}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() 
{\n};");
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() 
{\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('org.apache.flex.A', org.apache.flex.A);");
     }
 
     @Override
@@ -619,7 +619,7 @@ public class TestFlexJSClass extends TestGoogClass
         // (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() 
{\n};");
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() 
{\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('org.apache.flex.A', org.apache.flex.A);");
     }
 
     @Override
@@ -628,7 +628,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         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() {\n};");
+        assertOut("/**\n * @constructor\n * @implements 
{flash.events.IEventDispatcher}\n */\norg.apache.flex.A = function() 
{\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('org.apache.flex.A', org.apache.flex.A);");
     }
 
     @Override
@@ -637,7 +637,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A implements 
IEventDispatcher, IBitmapDrawable {public function A() {}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @implements 
{flash.events.IEventDispatcher}\n * @implements 
{flash.display.IBitmapDrawable}\n */\norg.apache.flex.A = function() {\n};");
+        assertOut("/**\n * @constructor\n * @implements 
{flash.events.IEventDispatcher}\n * @implements 
{flash.display.IBitmapDrawable}\n */\norg.apache.flex.A = function() 
{\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('org.apache.flex.A', org.apache.flex.A);");
     }
 
 
@@ -647,7 +647,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A {public function A() { 
}}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() 
{\n};");
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() 
{\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('org.apache.flex.A', org.apache.flex.A);");
     }
 
 
@@ -657,7 +657,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         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) {\n};");
+        assertOut("/**\n * @constructor\n * @param {string} arg1\n * @param 
{number} arg2\n */\norg.apache.flex.A = function(arg1, arg2) {\n};\n\n\n/**\n * 
Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('org.apache.flex.A', org.apache.flex.A);");
     }
 
     @Test
@@ -665,7 +665,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A {public function 
A(arg1:String, arg2:int) {arg2 = arg2 + 2;} public var foo:Array = [];}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @param {string} arg1\n * @param 
{number} arg2\n */\norg.apache.flex.A = function(arg1, arg2) {\n  \n  this.foo 
= [];\n  arg2 = arg2 + 2;\n};\n\n\n/**\n * @export\n * @type {Array}\n 
*/\norg.apache.flex.A.prototype.foo;");
+        assertOut("/**\n * @constructor\n * @param {string} arg1\n * @param 
{number} arg2\n */\norg.apache.flex.A = function(arg1, arg2) {\n  \n  this.foo 
= [];\n  arg2 = arg2 + 2;\n};\n\n\n/**\n * Prevent renaming of class. Needed 
for reflection.\n */\ngoog.exportSymbol('org.apache.flex.A', 
org.apache.flex.A);\n\n\n/**\n * @export\n * @type {Array}\n 
*/\norg.apache.flex.A.prototype.foo;");
     }
 
     @Test
@@ -673,7 +673,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A extends EventDispatcher 
{public function A(arg1:String, arg2:int) {arg2 = arg2 + 2;} public var 
foo:Array = [];}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends 
{flash.events.EventDispatcher}\n * @param {string} arg1\n * @param {number} 
arg2\n */\norg.apache.flex.A = function(arg1, arg2) {\n  
org.apache.flex.A.base(this, 'constructor');\n  \n  this.foo = [];\n  arg2 = 
arg2 + 2;\n};\ngoog.inherits(org.apache.flex.A, 
flash.events.EventDispatcher);\n\n\n/**\n * @export\n * @type {Array}\n 
*/\norg.apache.flex.A.prototype.foo;");
+        assertOut("/**\n * @constructor\n * @extends 
{flash.events.EventDispatcher}\n * @param {string} arg1\n * @param {number} 
arg2\n */\norg.apache.flex.A = function(arg1, arg2) {\n  
org.apache.flex.A.base(this, 'constructor');\n  \n  this.foo = [];\n  arg2 = 
arg2 + 2;\n};\ngoog.inherits(org.apache.flex.A, 
flash.events.EventDispatcher);\n\n\n/**\n * Prevent renaming of class. Needed 
for reflection.\n */\ngoog.exportSymbol('org.apache.flex.A', 
org.apache.flex.A);\n\n\n/**\n * @export\n * @type {Array}\n 
*/\norg.apache.flex.A.prototype.foo;");
     }
 
     @Test
@@ -681,7 +681,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class A {public static const 
NAME:String = 'Dummy'; public function A(arg1:String = NAME) {_name = arg1;} 
private var _name:String;}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @param {string=} arg1\n 
*/\norg.apache.flex.A = function(arg1) {\n  arg1 = typeof arg1 !== 'undefined' 
? arg1 : org.apache.flex.A.NAME;\n  this._name = arg1;\n};\n\n\n/**\n * 
@export\n * @const\n * @type {string}\n */\norg.apache.flex.A.NAME = 
'Dummy';\n\n\n/**\n * @private\n * @type {string}\n 
*/\norg.apache.flex.A.prototype._name;");
+        assertOut("/**\n * @constructor\n * @param {string=} arg1\n 
*/\norg.apache.flex.A = function(arg1) {\n  arg1 = typeof arg1 !== 'undefined' 
? arg1 : org.apache.flex.A.NAME;\n  this._name = arg1;\n};\n\n\n/**\n * Prevent 
renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('org.apache.flex.A', org.apache.flex.A);\n\n\n/**\n * 
@export\n * @const\n * @type {string}\n */\norg.apache.flex.A.NAME = 
'Dummy';\n\n\n/**\n * @private\n * @type {string}\n 
*/\norg.apache.flex.A.prototype._name;");
     }
     
     protected IBackend createBackend()

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/caf79f2a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSEmitter.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSEmitter.java
 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSEmitter.java
index 11d9402..88b5348 100644
--- 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSEmitter.java
+++ 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSEmitter.java
@@ -83,6 +83,12 @@ public class TestFlexJSEmitter extends TestGoogEmitter
                        "  }\n" +
                        "};\n" +
                        "goog.inherits(com.example.components.MyEventTarget, 
flash.events.EventDispatcher);\n" +
+                       "\n" +
+                       "\n" +
+                       "/**\n" +
+                       " * Prevent renaming of class. Needed for 
reflection.\n" +
+                       " */\n" +
+                       
"goog.exportSymbol('com.example.components.MyEventTarget', 
com.example.components.MyEventTarget);\n" +
                        "\n" +
                        "\n" +
                        "/**\n" +
@@ -117,12 +123,6 @@ public class TestFlexJSEmitter extends TestGoogEmitter
                        
"com.example.components.MyEventTarget.prototype.FLEXJS_CLASS_INFO = { names: [{ 
name: 'MyEventTarget', qName: 'com.example.components.MyEventTarget', kind: 
'class' }] };\n" +
                        "\n" +
                        "\n" +
-                       "/**\n" +
-                       " * Prevent renaming of class. Needed for 
reflection.\n" +
-                       " */\n" +
-                       
"goog.exportSymbol('com.example.components.MyEventTarget', 
com.example.components.MyEventTarget);\n" +
-                       "\n" +
-                       "\n" +
                        "\n" +
                        "/**\n" +
                        " * Reflection\n" +
@@ -171,6 +171,12 @@ public class TestFlexJSEmitter extends TestGoogEmitter
                        " * @interface\n" +
                        " */\ncom.example.components.TestInterface = function() 
{\n" +
                        "};\n" +
+                       "\n" +
+                               "\n" +
+                               "/**\n" +
+                               " * Prevent renaming of class. Needed for 
reflection.\n" +
+                               " */\n" +
+                               
"goog.exportSymbol('com.example.components.TestInterface', 
com.example.components.TestInterface);\n" +
                        "\n" +
                        "\n" +
                        "/**\n" +
@@ -179,12 +185,6 @@ public class TestFlexJSEmitter extends TestGoogEmitter
                        " * @type {Object.<string, Array.<Object>>}\n" +
                        " */\n" +
                        
"com.example.components.TestInterface.prototype.FLEXJS_CLASS_INFO = { names: [{ 
name: 'TestInterface', qName: 'com.example.components.TestInterface', kind: 
'interface' }] };\n" +
-                       "\n" +
-                               "\n" +
-                               "/**\n" +
-                               " * Prevent renaming of class. Needed for 
reflection.\n" +
-                               " */\n" +
-                               
"goog.exportSymbol('com.example.components.TestInterface', 
com.example.components.TestInterface);\n" +
                                "\n" +
                        "\n" +
                        "\n" +
@@ -229,17 +229,17 @@ public class TestFlexJSEmitter extends TestGoogEmitter
                                "\n" +
                                "\n" +
                                "/**\n" +
-                               " * Metadata\n" +
-                               " *\n" +
-                               " * @type {Object.<string, Array.<Object>>}\n" +
+                               " * Prevent renaming of class. Needed for 
reflection.\n" +
                                " */\n" +
-                               
"com.example.components.TestClass.prototype.FLEXJS_CLASS_INFO = { names: [{ 
name: 'TestClass', qName: 'com.example.components.TestClass', kind: 'class' }] 
};\n" +
+                               
"goog.exportSymbol('com.example.components.TestClass', 
com.example.components.TestClass);\n" +
                                "\n" +
                                "\n" +
                                "/**\n" +
-                               " * Prevent renaming of class. Needed for 
reflection.\n" +
+                               " * Metadata\n" +
+                               " *\n" +
+                               " * @type {Object.<string, Array.<Object>>}\n" +
                                " */\n" +
-                               
"goog.exportSymbol('com.example.components.TestClass', 
com.example.components.TestClass);\n" +
+                               
"com.example.components.TestClass.prototype.FLEXJS_CLASS_INFO = { names: [{ 
name: 'TestClass', qName: 'com.example.components.TestClass', kind: 'class' }] 
};\n" +
                                "\n" +
                                "\n" +
                                "\n" +
@@ -293,17 +293,17 @@ public class TestFlexJSEmitter extends TestGoogEmitter
                                "\n" +
                                "\n" +
                                "/**\n" +
-                               " * Metadata\n" +
-                               " *\n" +
-                               " * @type {Object.<string, Array.<Object>>}\n" +
+                               " * Prevent renaming of class. Needed for 
reflection.\n" +
                                " */\n" +
-                               
"com.example.components.TestClass.prototype.FLEXJS_CLASS_INFO = { names: [{ 
name: 'TestClass', qName: 'com.example.components.TestClass', kind: 'class' }] 
};\n" +
+                               
"goog.exportSymbol('com.example.components.TestClass', 
com.example.components.TestClass);\n" +
                                "\n" +
                                "\n" +
                                "/**\n" +
-                               " * Prevent renaming of class. Needed for 
reflection.\n" +
+                               " * Metadata\n" +
+                               " *\n" +
+                               " * @type {Object.<string, Array.<Object>>}\n" +
                                " */\n" +
-                               
"goog.exportSymbol('com.example.components.TestClass', 
com.example.components.TestClass);\n" +
+                               
"com.example.components.TestClass.prototype.FLEXJS_CLASS_INFO = { names: [{ 
name: 'TestClass', qName: 'com.example.components.TestClass', kind: 'class' }] 
};\n" +
                                "\n" +
                                "\n" +
                                "\n" +

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/caf79f2a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
index 6f8d28d..7c9fa2f 100644
--- 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
+++ 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
@@ -967,7 +967,7 @@ public class TestFlexJSExpressions extends 
TestGoogExpressions
     {
         IClassNode node = (IClassNode) getNode("import 
flash.display.IBitmapDrawable; public class B implements IBitmapDrawable { 
public function B() { IBitmapDrawable(b).type = ''; } }", ClassNode.class, 
WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @implements 
{flash.display.IBitmapDrawable}\n */\nB = function() {\n  
org.apache.flex.utils.Language.as(b, flash.display.IBitmapDrawable, true).type 
= '';\n};");
+        assertOut("/**\n * @constructor\n * @implements 
{flash.display.IBitmapDrawable}\n */\nB = function() {\n  
org.apache.flex.utils.Language.as(b, flash.display.IBitmapDrawable, true).type 
= '';\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n 
*/\ngoog.exportSymbol('B', B);");
     }
 
     @Test

Reply via email to