Repository: flex-falcon Updated Branches: refs/heads/develop 24bc50946 -> 34160e46f
FLEX-34986 fix constant handling Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/34160e46 Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/34160e46 Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/34160e46 Branch: refs/heads/develop Commit: 34160e46fec80256786fa4db8f607ccb5003989b Parents: 24bc509 Author: Alex Harui <[email protected]> Authored: Mon Dec 21 13:20:55 2015 -0800 Committer: Alex Harui <[email protected]> Committed: Mon Dec 21 13:20:55 2015 -0800 ---------------------------------------------------------------------- .../js/flexjs/TestFlexJSFieldMembers.java | 25 +++++++++++++++++--- .../internal/codegen/js/jx/ClassEmitter.java | 2 +- .../internal/codegen/js/jx/FieldEmitter.java | 2 +- 3 files changed, 24 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/34160e46/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSFieldMembers.java ---------------------------------------------------------------------- diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSFieldMembers.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSFieldMembers.java index 84f652e..fb390ff 100644 --- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSFieldMembers.java +++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSFieldMembers.java @@ -255,9 +255,28 @@ public class TestFlexJSFieldMembers extends TestGoogFieldMembers @Test public void testConstant_withComplexTypeValue_nonStatic() { - IVariableNode node = getField("const foo:Number = parseFloat('1E2');"); - asBlockWalker.visitVariable(node); - assertOut("/**\n * @export\n * @const\n * @type {number}\n */\nFalconTest_A.prototype.foo = parseFloat('1E2')"); + IClassNode node = (IClassNode) getNode("protected const foo:Number = parseFloat('1E2');", + IClassNode.class, WRAP_LEVEL_CLASS); + asBlockWalker.visitClass(node); + assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n\nthis.foo = parseFloat('1E2');\n};\n\n\n/**\n * @protected\n * @const\n * @type {number}\n */\nFalconTest_A.prototype.foo;"); + } + + @Test + public void testConstant_withTypeValueArrayLiteral() + { + IClassNode node = (IClassNode) getNode("protected const foo:Array = [ 'foo' ]", + IClassNode.class, WRAP_LEVEL_CLASS); + asBlockWalker.visitClass(node); + assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n\nthis.foo = ['foo'];\n};\n\n\n/**\n * @protected\n * @const\n * @type {Array}\n */\nFalconTest_A.prototype.foo;"); + } + + @Test + public void testConstant_withTypeValueObjectLiteral() + { + IClassNode node = (IClassNode) getNode("protected const foo:Object = { 'foo': 'bar' }", + IClassNode.class, WRAP_LEVEL_CLASS); + asBlockWalker.visitClass(node); + assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n\nthis.foo = {'foo':'bar'};\n};\n\n\n/**\n * @protected\n * @const\n * @type {Object}\n */\nFalconTest_A.prototype.foo;"); } @Override http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/34160e46/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java ---------------------------------------------------------------------- diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java index 6f8a127..f96ceca 100644 --- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java +++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java @@ -153,7 +153,7 @@ public class ClassEmitter extends JSSubEmitter implements { IVariableNode varnode = ((IVariableNode)dnode); IExpressionNode vnode = varnode.getAssignedValueNode(); - if (vnode != null && (!(varnode.isConst() || dnode.getDefinition().isStatic() || EmitterUtils.isScalar(vnode)))) + if (vnode != null && (!(dnode.getDefinition().isStatic() || EmitterUtils.isScalar(vnode)))) { writeNewline(); write(ASEmitterTokens.THIS); http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/34160e46/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/FieldEmitter.java ---------------------------------------------------------------------- diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/FieldEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/FieldEmitter.java index ea64639..f7b2c1a 100644 --- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/FieldEmitter.java +++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/FieldEmitter.java @@ -85,7 +85,7 @@ public class FieldEmitter extends JSSubEmitter implements write("_"); } IExpressionNode vnode = node.getAssignedValueNode(); - if (vnode != null && (node.isConst() || ndef.isStatic() || EmitterUtils.isScalar(vnode))) + if (vnode != null && (ndef.isStatic() || EmitterUtils.isScalar(vnode))) { write(ASEmitterTokens.SPACE); writeToken(ASEmitterTokens.EQUAL);
