Repository: flex-falcon Updated Branches: refs/heads/develop 218c318f3 -> a3abbdb14
FLEX-35114 parameters did not expand identifiers Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/a3abbdb1 Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/a3abbdb1 Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/a3abbdb1 Branch: refs/heads/develop Commit: a3abbdb14f49b695c113e61de27d1dcc608de97c Parents: 218c318 Author: Alex Harui <[email protected]> Authored: Tue Nov 15 10:06:12 2016 -0800 Committer: Alex Harui <[email protected]> Committed: Tue Nov 15 10:06:12 2016 -0800 ---------------------------------------------------------------------- .../compiler/internal/codegen/js/goog/JSGoogEmitter.java | 6 +++++- .../compiler/internal/codegen/js/flexjs/TestFlexJSClass.java | 8 ++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/a3abbdb1/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java ---------------------------------------------------------------------- diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java index b0af5b1..8486ab0 100644 --- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java +++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java @@ -46,9 +46,11 @@ import org.apache.flex.compiler.internal.definitions.FunctionDefinition; import org.apache.flex.compiler.internal.definitions.NamespaceDefinition.INamepaceDeclarationDirective; import org.apache.flex.compiler.internal.scopes.PackageScope; import org.apache.flex.compiler.internal.tree.as.ChainedVariableNode; +import org.apache.flex.compiler.internal.tree.as.ExpressionNodeBase; import org.apache.flex.compiler.internal.tree.as.FunctionCallNode; import org.apache.flex.compiler.internal.tree.as.FunctionNode; import org.apache.flex.compiler.internal.tree.as.MemberAccessExpressionNode; +import org.apache.flex.compiler.internal.tree.as.parts.VariableDecorationPart; import org.apache.flex.compiler.problems.ICompilerProblem; import org.apache.flex.compiler.projects.ICompilerProject; import org.apache.flex.compiler.scopes.IASScope; @@ -837,7 +839,9 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter code.append(ASEmitterTokens.SPACE.getToken()); code.append(ASEmitterTokens.COLON.getToken()); code.append(ASEmitterTokens.SPACE.getToken()); - code.append(pnode.getDefaultValue()); + + IExpressionNode assignedValueNode = pnode.getAssignedValueNode(); + code.append(stringifyNode(assignedValueNode)); code.append(ASEmitterTokens.SEMICOLON.getToken()); write(code.toString()); http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/a3abbdb1/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 54f4f03..da74f36 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 @@ -440,6 +440,14 @@ public class TestFlexJSClass extends TestGoogClass 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;"); } + @Test + public void testConstructor_withBodyAndStaticInitializer() + { + 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;"); + } + protected IBackend createBackend() { return new FlexJSBackend();
