You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2016/10/07 04:22:08 UTC
[1/2] git commit: [flex-falcon] [refs/heads/develop] - static
accessors are now accessed via class['someStaticProperty'] instead of
class.someStaticProperty
Repository: flex-falcon
Updated Branches:
refs/heads/develop 386112843 -> 73fd82c7c
static accessors are now accessed via class['someStaticProperty'] instead of class.someStaticProperty
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/ecd8e1cf
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/ecd8e1cf
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/ecd8e1cf
Branch: refs/heads/develop
Commit: ecd8e1cf2d0247277186433f064e636c8266eb45
Parents: 3861128
Author: Alex Harui <ah...@apache.org>
Authored: Wed Oct 5 10:55:55 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Thu Oct 6 21:22:02 2016 -0700
----------------------------------------------------------------------
.../internal/codegen/js/jx/AccessorEmitter.java | 6 +-----
.../internal/codegen/js/jx/BindableEmitter.java | 19 +++----------------
.../codegen/js/jx/IdentifierEmitter.java | 13 +++++++++++--
.../js/flexjs/TestFlexJSAccessorMembers.java | 4 ++--
.../codegen/js/flexjs/TestFlexJSExpressions.java | 10 +++++-----
5 files changed, 22 insertions(+), 30 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ecd8e1cf/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/AccessorEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/AccessorEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/AccessorEmitter.java
index de8e86b..0b82abb 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/AccessorEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/AccessorEmitter.java
@@ -438,11 +438,7 @@ public class AccessorEmitter extends JSSubEmitter implements
propName);
IGetterNode getterNode = p.getter;
ISetterNode setterNode = p.setter;
- // @expose is supposed to be deprecated, so this isn't ideal,
- // but @export and/or @nocollapse were not working in a release
- // build with ADVANCED_OPTIMIZATIONS, so I don't know what else
- // to do. maybe it's a bug in closure compiler... -JT
- writeNewline("/** @expose */");
+ writeNewline("/** @export */");
write(propName);
write(ASEmitterTokens.COLON);
write(ASEmitterTokens.SPACE);
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ecd8e1cf/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/BindableEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/BindableEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/BindableEmitter.java
index 8625733..8f26835 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/BindableEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/BindableEmitter.java
@@ -279,11 +279,7 @@ public class BindableEmitter extends JSSubEmitter implements
// export above did not work in the release build for the static getter/setter bindables,
// solution below:
//Commented by JT, in AccessorEmitter:
- // @expose is supposed to be deprecated, so this isn't ideal,
- // but @export and/or @nocollapse were not working in a release
- // build with ADVANCED_OPTIMIZATIONS, so I don't know what else
- // to do. maybe it's a bug in closure compiler... -JT
- writeNewline("/** @expose");
+ writeNewline("/** @export");
writeNewline(" * @type {"+DISPATCHER_CLASS_QNAME+"} */");
write(STATIC_DISPATCHER_GETTER);
write(ASEmitterTokens.COLON);
@@ -361,20 +357,11 @@ public class BindableEmitter extends JSSubEmitter implements
String qname = fjs.formatQualifiedName(cdef.getQualifiedName());
// 'PropName': {
- //writeNewline("/** @export */");
- // export above did not work in the release build for the static getter/setter bindables,
- // solution below:
- //Commented by JT, in AccessorEmitter:
- // @expose is supposed to be deprecated, so this isn't ideal,
- // but @export and/or @nocollapse were not working in a release
- // build with ADVANCED_OPTIMIZATIONS, so I don't know what else
- // to do. maybe it's a bug in closure compiler... -JT
-
if (info.namespace != "public") {
- writeNewline("/** @expose");
+ writeNewline("/** @export");
writeNewline(" * @private");
} else {
- writeNewline("/** @expose");
+ writeNewline("/** @export");
}
writeNewline(" * @type {"+convertASTypeToJS(info.type)+"} */");
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ecd8e1cf/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/IdentifierEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/IdentifierEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/IdentifierEmitter.java
index 89f0c00..7573db4 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/IdentifierEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/IdentifierEmitter.java
@@ -76,11 +76,12 @@ public class IdentifierEmitter extends JSSubEmitter implements
boolean emitName = true;
JSFlexJSEmitter fjs = (JSFlexJSEmitter)getEmitter();
boolean isCustomNamespace = false;
+ boolean isStatic = nodeDef != null && nodeDef.isStatic();
if (nodeDef instanceof FunctionDefinition &&
fjs.isCustomNamespace((FunctionDefinition)nodeDef))
isCustomNamespace = true;
- if (nodeDef != null && nodeDef.isStatic())
+ if (isStatic)
{
String sname = nodeDef.getParent().getQualifiedName();
if (sname.equals("Array"))
@@ -175,7 +176,7 @@ public class IdentifierEmitter extends JSSubEmitter implements
endMapping(prevSibling);
startMapping(parentNode, prevSibling);
}
- if (!isCustomNamespace)
+ if (!isCustomNamespace && (!(identifierIsAccessorFunction && isStatic)))
write(ASEmitterTokens.MEMBER_ACCESS);
endMapping(parentNode);
}
@@ -293,6 +294,10 @@ public class IdentifierEmitter extends JSSubEmitter implements
String ns = ((FunctionDefinition)nodeDef).getNamespaceReference().resolveAETNamespace(getProject()).getName();
write("[\"" + ns + "::" + qname + "\"]");
}
+ else if (identifierIsAccessorFunction && isStatic)
+ {
+ write("[\"" +node.getName() + "\"]");
+ }
else
{
write(node.getName());
@@ -307,6 +312,10 @@ public class IdentifierEmitter extends JSSubEmitter implements
String ns = ((FunctionDefinition)nodeDef).getNamespaceReference().resolveAETNamespace(getProject()).getName();
write("[\"" + ns + "::" + qname + "\"]");
}
+ else if (identifierIsAccessorFunction && isStatic)
+ {
+ write("[\"" + qname + "\"]");
+ }
else
write(qname);
endMapping(node);
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ecd8e1cf/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 f4b0513..e7ad931 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
@@ -98,7 +98,7 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
asBlockWalker.visitClass(node);
assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n" +
"FalconTest_A.get__foo = function() {\n return -1;\n};\n\n\n" +
- "Object.defineProperties(FalconTest_A, /** @lends {FalconTest_A} */ {\n/** @expose */\nfoo: {\nget: FalconTest_A.get__foo}}\n);");
+ "Object.defineProperties(FalconTest_A, /** @lends {FalconTest_A} */ {\n/** @export */\nfoo: {\nget: FalconTest_A.get__foo}}\n);");
}
@Override
@@ -158,7 +158,7 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
asBlockWalker.visitClass(node);
assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n" +
"FalconTest_A.set__foo = function(value) {\n};\n\n\n" +
- "Object.defineProperties(FalconTest_A, /** @lends {FalconTest_A} */ {\n/** @expose */\nfoo: {\nset: FalconTest_A.set__foo}}\n);");
+ "Object.defineProperties(FalconTest_A, /** @lends {FalconTest_A} */ {\n/** @export */\nfoo: {\nset: FalconTest_A.set__foo}}\n);");
}
@Test
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ecd8e1cf/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 def28f7..60fdb20 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
@@ -465,7 +465,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
IBinaryOperatorNode bnode = (IBinaryOperatorNode) findFirstDescendantOfType(
node, IBinaryOperatorNode.class);
asBlockWalker.visitBinaryOperator(bnode);
- assertOut("foo.bar.B.b = 1");
+ assertOut("foo.bar.B[\"b\"] = 1");
}
@Test
@@ -477,7 +477,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
IBinaryOperatorNode bnode = (IBinaryOperatorNode) findFirstDescendantOfType(
node, IBinaryOperatorNode.class);
asBlockWalker.visitBinaryOperator(bnode);
- assertOut("foo.bar.B.b = 1");
+ assertOut("foo.bar.B[\"b\"] = 1");
}
@Test
@@ -489,7 +489,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
IBinaryOperatorNode bnode = (IBinaryOperatorNode) findFirstDescendantOfType(
node, IBinaryOperatorNode.class);
asBlockWalker.visitBinaryOperator(bnode);
- assertOut("foo.bar.B.d.b = 1");
+ assertOut("foo.bar.B[\"d\"].b = 1");
}
@Test
@@ -513,7 +513,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
((JSFlexJSEmitter)asEmitter).getModel().setCurrentClass(def);
asBlockWalker.visitBinaryOperator(bnode);
- assertOut("foo.bar.B.d.b = 1");
+ assertOut("foo.bar.B[\"d\"].b = 1");
}
@Test
@@ -525,7 +525,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
IBinaryOperatorNode bnode = (IBinaryOperatorNode) findFirstDescendantOfType(
node, IBinaryOperatorNode.class);
asBlockWalker.visitBinaryOperator(bnode);
- assertOut("foo.bar.B.b = foo.bar.B.b + 1");
+ assertOut("foo.bar.B[\"b\"] = foo.bar.B[\"b\"] + 1");
}
@Test
[2/2] git commit: [flex-falcon] [refs/heads/develop] - handle complex
static initializers especially when the initializer is defined after the
variable
Posted by ah...@apache.org.
handle complex static initializers especially when the initializer is defined after the variable
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/73fd82c7
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/73fd82c7
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/73fd82c7
Branch: refs/heads/develop
Commit: 73fd82c7ce826857fd30d4201459c64d856ff7c7
Parents: ecd8e1c
Author: Alex Harui <ah...@apache.org>
Authored: Thu Oct 6 21:21:51 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Thu Oct 6 21:22:03 2016 -0700
----------------------------------------------------------------------
.../codegen/js/flexjs/JSFlexJSEmitter.java | 5 ++
.../internal/codegen/js/jx/ClassEmitter.java | 19 +++++
.../internal/codegen/js/jx/FieldEmitter.java | 78 +++++++++++++++++---
.../internal/codegen/js/utils/EmitterUtils.java | 12 +++
.../codegen/js/flexjs/TestFlexJSClass.java | 9 +++
.../js/flexjs/TestFlexJSFieldMembers.java | 2 +-
6 files changed, 114 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/73fd82c7/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
index 443bbbd..a74b346 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
@@ -293,6 +293,11 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
return bindableEmitter;
}
+ public FieldEmitter getFieldEmitter()
+ {
+ return fieldEmitter;
+ }
+
public ClassEmitter getClassEmitter()
{
return classEmitter;
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/73fd82c7/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 fe0bc7e..3b28e5f 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
@@ -146,6 +146,25 @@ public class ClassEmitter extends JSSubEmitter implements
fjs.getBindableEmitter().emit(definition);
fjs.getAccessorEmitter().emit(definition);
+ if (fjs.getFieldEmitter().hasComplexStaticInitializers)
+ {
+ writeNewline();
+
+ for (IDefinitionNode dnode : dnodes)
+ {
+ if (dnode.getNodeID() == ASTNodeID.VariableID)
+ {
+ writeNewline();
+ fjs.getFieldEmitter().emitFieldInitializer((IVariableNode) dnode);
+ }
+ else if (dnode.getNodeID() == ASTNodeID.BindableVariableID)
+ {
+ writeNewline();
+ fjs.getFieldEmitter().emitFieldInitializer((IVariableNode) dnode);
+ }
+ }
+ }
+
fjs.getPackageFooterEmitter().emitClassInfo(node);
getEmitter().popSourceMapName();
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/73fd82c7/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/FieldEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/FieldEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/FieldEmitter.java
index 1906b21..23459c4 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/FieldEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/FieldEmitter.java
@@ -51,6 +51,8 @@ public class FieldEmitter extends JSSubEmitter implements
super(emitter);
}
+ public boolean hasComplexStaticInitializers = false;
+
@Override
public void emit(IVariableNode node)
{
@@ -71,13 +73,15 @@ public class FieldEmitter extends JSSubEmitter implements
IDefinition ndef = node.getDefinition();
+ String className = null;
String root = "";
IVariableDefinition.VariableClassification classification = node.getVariableClassification();
boolean isPackageOrFileMember = classification == IVariableDefinition.VariableClassification.PACKAGE_MEMBER ||
classification == IVariableDefinition.VariableClassification.FILE_MEMBER;
if (isPackageOrFileMember)
{
- write(getEmitter().formatQualifiedName(node.getQualifiedName()));
+ className = getEmitter().formatQualifiedName(node.getQualifiedName());
+ write(className);
}
else
{
@@ -92,7 +96,8 @@ public class FieldEmitter extends JSSubEmitter implements
definition = ndef.getContainingScope().getDefinition();
startMapping(node.getNameExpressionNode());
- write(getEmitter().formatQualifiedName(definition.getQualifiedName())
+ className = getEmitter().formatQualifiedName(definition.getQualifiedName());
+ write(className
+ ASEmitterTokens.MEMBER_ACCESS.getToken() + root);
write(node.getName());
endMapping(node.getNameExpressionNode());
@@ -105,15 +110,24 @@ public class FieldEmitter extends JSSubEmitter implements
write("_");
}
IExpressionNode vnode = node.getAssignedValueNode();
- if (vnode != null &&
- (ndef.isStatic() || EmitterUtils.isScalar(vnode) || isPackageOrFileMember))
+ if (vnode != null)
{
- startMapping(node);
- write(ASEmitterTokens.SPACE);
- writeToken(ASEmitterTokens.EQUAL);
- endMapping(node);
- getEmitter().getWalker().walk(vnode);
- }
+ String vnodeString = getEmitter().stringifyNode(vnode);
+ if ((ndef.isStatic() && !EmitterUtils.needsStaticInitializer(vnodeString, className)) ||
+ (!ndef.isStatic() && EmitterUtils.isScalar(vnode)) ||
+ isPackageOrFileMember)
+ {
+ startMapping(node);
+ write(ASEmitterTokens.SPACE);
+ writeToken(ASEmitterTokens.EQUAL);
+ endMapping(node);
+ write(vnodeString);
+ }
+ else if (ndef.isStatic() && EmitterUtils.needsStaticInitializer(vnodeString, className))
+ {
+ hasComplexStaticInitializers = true;
+ }
+ }
if (vnode == null && def != null)
{
String defName = def.getQualifiedName();
@@ -157,4 +171,48 @@ public class FieldEmitter extends JSSubEmitter implements
}
}
+ public void emitFieldInitializer(IVariableNode node)
+ {
+ IDefinition definition = EmitterUtils.getClassDefinition(node);
+
+ IDefinition def = null;
+ IExpressionNode enode = node.getVariableTypeNode();//getAssignedValueNode();
+ if (enode != null)
+ {
+ def = enode.resolveType(getProject());
+ }
+
+ IDefinition ndef = node.getDefinition();
+ String className = null;
+
+ IVariableDefinition.VariableClassification classification = node.getVariableClassification();
+ boolean isPackageOrFileMember = classification == IVariableDefinition.VariableClassification.PACKAGE_MEMBER ||
+ classification == IVariableDefinition.VariableClassification.FILE_MEMBER;
+ IExpressionNode vnode = node.getAssignedValueNode();
+ if (vnode != null)
+ {
+ String vnodeString = getEmitter().stringifyNode(vnode);
+ if (definition == null)
+ definition = ndef.getContainingScope().getDefinition();
+ className = getEmitter().formatQualifiedName(definition.getQualifiedName());
+ if (ndef.isStatic() && EmitterUtils.needsStaticInitializer(vnodeString, className) && !isPackageOrFileMember)
+ {
+ write(className
+ + ASEmitterTokens.MEMBER_ACCESS.getToken());
+ write(node.getName());
+
+ if (node.getNodeID() == ASTNodeID.BindableVariableID)
+ {
+ // add an underscore to convert this var to be the
+ // backing var for the get/set pair that will be generated later.
+ write("_");
+ }
+ write(ASEmitterTokens.SPACE);
+ writeToken(ASEmitterTokens.EQUAL);
+ write(vnodeString);
+ write(ASEmitterTokens.SEMICOLON);
+
+ }
+ }
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/73fd82c7/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/utils/EmitterUtils.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/utils/EmitterUtils.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/utils/EmitterUtils.java
index 9ca2829..635c6c0 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/utils/EmitterUtils.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/utils/EmitterUtils.java
@@ -464,6 +464,18 @@ public class EmitterUtils
return false;
}
+ // return true if the node is an expression that may not work
+ // as the initial value of a static var at
+ // static initialization time. Such as a function call to
+ // another static method in the class.
+ // Non-static initializers have different rules: even simple object
+ // and arrays need to be created for each instance, but for statics
+ // simple objects and arras are ok.
+ public static boolean needsStaticInitializer(String node, String className)
+ {
+ return node.contains(className);
+ }
+
public static IContainerNode insertArgumentsBefore(IContainerNode argumentsNode, IASNode... nodes)
{
int originalLength = argumentsNode.getChildCount();
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/73fd82c7/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 f03414d..8b91070 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
@@ -224,6 +224,15 @@ public class TestFlexJSClass extends TestGoogClass
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;");
}
+ @Test
+ public void testFieldsWithStaticInitializers()
+ {
+ 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\n\norg.apache.flex.A.b = org.apache.flex.A.initStatic();");
+ }
+
@Override
@Test
public void testConstants()
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/73fd82c7/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSFieldMembers.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSFieldMembers.java b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSFieldMembers.java
index cee8429..dddfab6 100644
--- a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSFieldMembers.java
+++ b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSFieldMembers.java
@@ -185,7 +185,7 @@ public class TestFlexJSFieldMembers extends TestGoogFieldMembers
IClassNode node = (IClassNode) getNode("import flash.utils.flash_proxy;use namespace flash_proxy;public static var foo:Object = initFoo(); flash_proxy static function initFoo():Object { return null; }",
IClassNode.class, WRAP_LEVEL_CLASS);
asBlockWalker.visitClass(node);
- assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * @export\n * @type {Object}\n */\nFalconTest_A.foo = FalconTest_A[\"http://www.adobe.com/2006/actionscript/flash/proxy::initFoo\"]();\n\n\n/**\n * @export\n * @return {Object}\n */\nFalconTest_A[\"http://www.adobe.com/2006/actionscript/flash/proxy::initFoo\"] = function() {\n return null;\n};");
+ assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * @export\n * @type {Object}\n */\nFalconTest_A.foo;\n\n\n/**\n * @export\n * @return {Object}\n */\nFalconTest_A[\"http://www.adobe.com/2006/actionscript/flash/proxy::initFoo\"] = function() {\n return null;\n};\n\nFalconTest_A.foo = FalconTest_A[\"http://www.adobe.com/2006/actionscript/flash/proxy::initFoo\"]();");
}
@Test