You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flex.apache.org by Erik de Bruin <er...@ixsoftware.nl> on 2013/03/28 00:14:33 UTC
Re: git commit: FlexJS application now shows in browser
Forgot to mention this in the commit message: this goes only for the
'js-debug' code. The 'js-release' code has some more issues that
currently prevent it from showing the view in the browser.
EdB
On Thu, Mar 28, 2013 at 12:07 AM, <er...@apache.org> wrote:
> Updated Branches:
> refs/heads/develop d8bb65f1e -> 112d8ca7f
>
>
> FlexJS application now shows in browser
>
> Fixed various issues related to JS errors that prevented the FlexJS application from showing it's view in the browser. Note: although the view components are displayed as expected, none of the functionality is working.
>
> Signed-off-by: Erik de Bruin <er...@ixsoftware.nl>
>
>
> Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
> Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/112d8ca7
> Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/112d8ca7
> Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/112d8ca7
>
> Branch: refs/heads/develop
> Commit: 112d8ca7ff1e218404e964f9242a104acee20311
> Parents: d8bb65f
> Author: Erik de Bruin <er...@ixsoftware.nl>
> Authored: Thu Mar 28 00:07:11 2013 +0100
> Committer: Erik de Bruin <er...@ixsoftware.nl>
> Committed: Thu Mar 28 00:07:11 2013 +0100
>
> ----------------------------------------------------------------------
> .../codegen/js/flexjs/TestFlexJSAccessors.java | 12 +++---
> .../codegen/js/flexjs/TestFlexJSClass.java | 9 ++++
> .../codegen/js/flexjs/TestFlexJSExpressions.java | 33 ++++++++++++++
> .../codegen/js/flexjs/TestFlexJSMethodMembers.java | 34 +++++++++++++++
> .../codegen/js/flexjs/JSFlexJSEmitter.java | 18 +++++++-
> .../codegen/mxml/flexjs/MXMLFlexJSPublisher.java | 8 +++-
> 6 files changed, 106 insertions(+), 8 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/112d8ca7/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
> ----------------------------------------------------------------------
> diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
> index cee5079..6e3e842 100644
> --- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
> +++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
> @@ -46,10 +46,10 @@ public class TestFlexJSAccessors extends ASTestBase
> public void testSetAccessorWithMemberAccessOnLeftSide()
> {
> IClassNode node = (IClassNode) getNode(
> - "public function A() {}; 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_CLASS);
> + "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 */\nA = function() {\n};\n\n/**\n * @this {A}\n */\nA.prototype.doStuff = function() {\n\tvar self = this;\n\tthis.set_label(get_label() + 'bye');\n\tvar /** @type {string} */ theLabel = get_label();\n};\n\n/**\n * @private\n * @type {string}\n */\nA.prototype._label;\n\nA.prototype.get_label = function() {\n\tvar self = this;\n\treturn _label;\n};\n\nA.prototype.set_label = function(value) {\n\tvar self = this;\n\t_label = value;\n};";
> + String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n/**\n * @this {B}\n */\nB.prototype.doStuff = function() {\n\tvar self = this;\n\tself.set_label(self.get_label() + 'bye');\n\tvar /** @type {string} */ theLabel = self.get_label();\n};\n\n/**\n * @private\n * @type {string}\n */\nB.prototype._label;\n\nB.prototype.get_label = function() {\n\tvar self = this;\n\treturn self._label;\n};\n\nB.prototype.set_label = function(value) {\n\tvar self = this;\n\tself._label = value;\n};";
> assertOut(expected);
> }
>
> @@ -68,10 +68,10 @@ public class TestFlexJSAccessors extends ASTestBase
> public void testSetAccessorWithMemberAccessOnRightSide()
> {
> IClassNode node = (IClassNode) getNode(
> - "public function A() {}; 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_CLASS);
> + "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 */\nA = function() {\n};\n\n/**\n * @this {A}\n */\nA.prototype.doStuff = function() {\n\tvar self = this;\n\tset_label(this.get_label());\n\tvar /** @type {string} */ theLabel = get_label();\n};\n\n/**\n * @private\n * @type {string}\n */\nA.prototype._label;\n\nA.prototype.get_label = function() {\n\tvar self = this;\n\treturn _label;\n};\n\nA.prototype.set_label = function(value) {\n\tvar self = this;\n\t_label = value;\n};";
> + String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n/**\n * @this {B}\n */\nB.prototype.doStuff = function() {\n\tvar self = this;\n\tself.set_label(self.get_label());\n\tvar /** @type {string} */ theLabel = self.get_label();\n};\n\n/**\n * @private\n * @type {string}\n */\nB.prototype._label;\n\nB.prototype.get_label = function() {\n\tvar self = this;\n\treturn self._label;\n};\n\nB.prototype.set_label = function(value) {\n\tvar self = this;\n\tself._label = value;\n};";
> assertOut(expected);
> }
>
>
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/112d8ca7/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
> ----------------------------------------------------------------------
> diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
> index a1a759a..7aed95a 100644
> --- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
> +++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
> @@ -31,6 +31,15 @@ import org.junit.Test;
> public class TestFlexJSClass extends TestGoogClass
> {
>
> + @Test
> + public void testConstructor_withArgumentNameMatchingMemberName()
> + {
> + 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\tvar self = this;\n\tself.arg1 = arg1;\n};\n\n/**\n * @type {string}\n */\norg.apache.flex.B.prototype.arg1;";
> + assertOut(expected);
> + }
> +
> @Override
> @Test
> public void testAccessors()
>
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/112d8ca7/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
> ----------------------------------------------------------------------
> diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
> index c96bf60..6968c38 100644
> --- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
> +++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
> @@ -24,6 +24,7 @@ import org.apache.flex.compiler.internal.codegen.js.goog.TestGoogExpressions;
> import org.apache.flex.compiler.internal.driver.js.flexjs.FlexJSBackend;
> import org.apache.flex.compiler.tree.as.IBinaryOperatorNode;
> import org.apache.flex.compiler.tree.as.IFunctionNode;
> +import org.apache.flex.compiler.tree.as.IMemberAccessExpressionNode;
> import org.junit.Test;
>
> /**
> @@ -34,6 +35,38 @@ public class TestFlexJSExpressions extends TestGoogExpressions
>
> @Override
> @Test
> + public void testVisitLanguageIdentifierNode_This()
> + {
> + IMemberAccessExpressionNode node = (IMemberAccessExpressionNode) getNode(
> + "if (a) this.a;", IMemberAccessExpressionNode.class);
> + asBlockWalker.visitMemberAccessExpression(node);
> + assertOut("a");
> + }
> +
> + @Override
> + @Test
> + public void testVisitLanguageIdentifierNode_This1()
> + {
> + IMemberAccessExpressionNode node = (IMemberAccessExpressionNode) getNode(
> + "if (a) this.a;", IMemberAccessExpressionNode.class);
> +
> + asBlockWalker.visitMemberAccessExpression(node);
> + assertOut("a");
> + }
> +
> + @Override
> + @Test
> + public void testVisitLanguageIdentifierNode_This2()
> + {
> + IMemberAccessExpressionNode node = (IMemberAccessExpressionNode) getNode(
> + "if (a) this.a;", IMemberAccessExpressionNode.class);
> +
> + asBlockWalker.visitMemberAccessExpression(node);
> + assertOut("a");
> + }
> +
> + @Override
> + @Test
> public void testVisitLanguageIdentifierNode_SuperMethod_1()
> {
> IFunctionNode node = getMethod("function foo(){if (a) super.foo();}");
>
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/112d8ca7/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSMethodMembers.java
> ----------------------------------------------------------------------
> diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSMethodMembers.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSMethodMembers.java
> index 15310f7..1df4b71 100644
> --- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSMethodMembers.java
> +++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSMethodMembers.java
> @@ -22,6 +22,8 @@ package org.apache.flex.compiler.internal.codegen.js.flexjs;
> import org.apache.flex.compiler.driver.IBackend;
> import org.apache.flex.compiler.internal.codegen.js.goog.TestGoogMethodMembers;
> import org.apache.flex.compiler.internal.driver.js.flexjs.FlexJSBackend;
> +import org.apache.flex.compiler.tree.as.IFunctionNode;
> +import org.junit.Test;
>
> /**
> * @author Erik de Bruin
> @@ -29,6 +31,38 @@ import org.apache.flex.compiler.internal.driver.js.flexjs.FlexJSBackend;
> public class TestFlexJSMethodMembers extends TestGoogMethodMembers
> {
>
> + //--------------------------------------------------------------------------
> + // Doc Specific Tests
> + //--------------------------------------------------------------------------
> +
> + @Override
> + @Test
> + public void testConstructor_withThisInBody()
> + {
> + IFunctionNode node = getMethod("public function A(){this.foo;};");
> + asBlockWalker.visitFunction(node);
> + assertOut("/**\n * @constructor\n */\nA = function() {\n\tvar self = this;\n\tfoo;\n}");
> + }
> +
> + @Override
> + @Test
> + public void testMethod_withThisInBody()
> + {
> + IFunctionNode node = getMethod("function foo(){this.foo;}");
> + asBlockWalker.visitFunction(node);
> + assertOut("/**\n * @this {A}\n */\nA.prototype.foo = function() {\n\tvar self = this;\n\tfoo;\n}");
> + }
> +
> + @Override
> + @Test
> + public void testMethod_withThisInBodyComplex()
> + {
> + IFunctionNode node = getMethod("function foo(){if(true){while(i){this.bar(42);}}}");
> + asBlockWalker.visitFunction(node);
> + assertOut("/**\n * @this {A}\n */\nA.prototype.foo = function() {\n\tvar self = this;\n\tif (true) "
> + + "{\n\t\twhile (i) {\n\t\t\tbar(42);\n\t\t}\n\t}\n}");
> + }
> +
> @Override
> protected IBackend createBackend()
> {
>
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/112d8ca7/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
> ----------------------------------------------------------------------
> diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
> index dd4d137..4f58975 100644
> --- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
> +++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
> @@ -32,6 +32,7 @@ import org.apache.flex.compiler.internal.codegen.js.JSEmitterTokens;
> import org.apache.flex.compiler.internal.codegen.js.goog.JSGoogEmitter;
> import org.apache.flex.compiler.internal.codegen.js.goog.JSGoogEmitterTokens;
> import org.apache.flex.compiler.internal.definitions.AccessorDefinition;
> +import org.apache.flex.compiler.internal.definitions.ParameterDefinition;
> import org.apache.flex.compiler.internal.tree.as.BinaryOperatorAssignmentNode;
> import org.apache.flex.compiler.internal.tree.as.FunctionCallNode;
> import org.apache.flex.compiler.internal.tree.as.FunctionNode;
> @@ -47,6 +48,7 @@ import org.apache.flex.compiler.tree.as.IFunctionCallNode;
> import org.apache.flex.compiler.tree.as.IFunctionNode;
> import org.apache.flex.compiler.tree.as.IGetterNode;
> import org.apache.flex.compiler.tree.as.IIdentifierNode;
> +import org.apache.flex.compiler.tree.as.ILanguageIdentifierNode;
> import org.apache.flex.compiler.tree.as.IMemberAccessExpressionNode;
> import org.apache.flex.compiler.tree.as.ISetterNode;
> import org.apache.flex.compiler.utils.ASNodeUtils;
> @@ -94,7 +96,7 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
> ASTNodeID inode = pnode.getNodeID();
>
> boolean writeSelf = false;
> - if (cnode != null)
> + if (cnode != null && !(def instanceof ParameterDefinition))
> {
> IDefinitionNode[] members = cnode.getAllMemberNodes();
> for (IDefinitionNode mnode : members)
> @@ -335,6 +337,20 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
> }
>
> @Override
> + public void emitMemberAccessExpression(IMemberAccessExpressionNode node)
> + {
> + IASNode leftNode = node.getLeftOperandNode();
> +
> + if (!(leftNode instanceof ILanguageIdentifierNode && ((ILanguageIdentifierNode) leftNode)
> + .getKind() == ILanguageIdentifierNode.LanguageIdentifierKind.THIS))
> + {
> + getWalker().walk(node.getLeftOperandNode());
> + write(node.getOperator().getOperatorText());
> + }
> + getWalker().walk(node.getRightOperandNode());
> + }
> +
> + @Override
> protected void emitObjectDefineProperty(IAccessorNode node)
> {
> /*
>
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/112d8ca7/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
> ----------------------------------------------------------------------
> diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
> index 49832a3..430ec4b 100644
> --- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
> +++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
> @@ -191,9 +191,15 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements
> htmlFile.append("</head>\n");
> htmlFile.append("<body>\n");
> htmlFile.append("\t<script type=\"text/javascript\">\n");
> +
> + // TODO (erikdebruin) the utility methods should have their own place...
> + htmlFile.append("\t\tfunction is(object, type) {return object;};\n");
> + htmlFile.append("\t\t\n");
> +
> htmlFile.append("\t\tnew ");
> htmlFile.append(projectName);
> - htmlFile.append("();\n");
> + htmlFile.append("()");
> + htmlFile.append(".start()\n");
> htmlFile.append("\t</script>\n");
> htmlFile.append("</body>\n");
> htmlFile.append("</html>");
>
--
Ix Multimedia Software
Jan Luykenstraat 27
3521 VB Utrecht
T. 06-51952295
I. www.ixsoftware.nl
Re: git commit: FlexJS application now shows in browser
Posted by Erik de Bruin <er...@ixsoftware.nl>.
Sure, since FalconJx can now output the demo app properly, here it is:
http://people.apache.org/~erikdebruin/flexjs/
EdB
On Thu, Mar 28, 2013 at 12:21 AM, Om <bi...@gmail.com> wrote:
> Awesome! Any chance you can put up the working demo onto your people.a.o
> site? Makes it easier for folks to see what's happening.
>
> Thanks,
> Om
> On Mar 27, 2013 4:15 PM, "Erik de Bruin" <er...@ixsoftware.nl> wrote:
>
>> Forgot to mention this in the commit message: this goes only for the
>> 'js-debug' code. The 'js-release' code has some more issues that
>> currently prevent it from showing the view in the browser.
>>
>> EdB
>>
>>
>>
>> On Thu, Mar 28, 2013 at 12:07 AM, <er...@apache.org> wrote:
>> > Updated Branches:
>> > refs/heads/develop d8bb65f1e -> 112d8ca7f
>> >
>> >
>> > FlexJS application now shows in browser
>> >
>> > Fixed various issues related to JS errors that prevented the FlexJS
>> application from showing it's view in the browser. Note: although the view
>> components are displayed as expected, none of the functionality is working.
>> >
>> > Signed-off-by: Erik de Bruin <er...@ixsoftware.nl>
>> >
>> >
>> > Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
>> > Commit:
>> http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/112d8ca7
>> > Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/112d8ca7
>> > Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/112d8ca7
>> >
>> > Branch: refs/heads/develop
>> > Commit: 112d8ca7ff1e218404e964f9242a104acee20311
>> > Parents: d8bb65f
>> > Author: Erik de Bruin <er...@ixsoftware.nl>
>> > Authored: Thu Mar 28 00:07:11 2013 +0100
>> > Committer: Erik de Bruin <er...@ixsoftware.nl>
>> > Committed: Thu Mar 28 00:07:11 2013 +0100
>> >
>> > ----------------------------------------------------------------------
>> > .../codegen/js/flexjs/TestFlexJSAccessors.java | 12 +++---
>> > .../codegen/js/flexjs/TestFlexJSClass.java | 9 ++++
>> > .../codegen/js/flexjs/TestFlexJSExpressions.java | 33 ++++++++++++++
>> > .../codegen/js/flexjs/TestFlexJSMethodMembers.java | 34
>> +++++++++++++++
>> > .../codegen/js/flexjs/JSFlexJSEmitter.java | 18 +++++++-
>> > .../codegen/mxml/flexjs/MXMLFlexJSPublisher.java | 8 +++-
>> > 6 files changed, 106 insertions(+), 8 deletions(-)
>> > ----------------------------------------------------------------------
>> >
>> >
>> >
>> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/112d8ca7/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
>> > ----------------------------------------------------------------------
>> > diff --git
>> a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
>> b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
>> > index cee5079..6e3e842 100644
>> > ---
>> a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
>> > +++
>> b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
>> > @@ -46,10 +46,10 @@ public class TestFlexJSAccessors extends ASTestBase
>> > public void testSetAccessorWithMemberAccessOnLeftSide()
>> > {
>> > IClassNode node = (IClassNode) getNode(
>> > - "public function A() {}; 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_CLASS);
>> > + "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 */\nA = function()
>> {\n};\n\n/**\n * @this {A}\n */\nA.prototype.doStuff = function() {\n\tvar
>> self = this;\n\tthis.set_label(get_label() + 'bye');\n\tvar /** @type
>> {string} */ theLabel = get_label();\n};\n\n/**\n * @private\n * @type
>> {string}\n */\nA.prototype._label;\n\nA.prototype.get_label = function()
>> {\n\tvar self = this;\n\treturn _label;\n};\n\nA.prototype.set_label =
>> function(value) {\n\tvar self = this;\n\t_label = value;\n};";
>> > + String expected = "/**\n * @constructor\n */\nB = function()
>> {\n};\n\n/**\n * @this {B}\n */\nB.prototype.doStuff = function() {\n\tvar
>> self = this;\n\tself.set_label(self.get_label() + 'bye');\n\tvar /** @type
>> {string} */ theLabel = self.get_label();\n};\n\n/**\n * @private\n * @type
>> {string}\n */\nB.prototype._label;\n\nB.prototype.get_label = function()
>> {\n\tvar self = this;\n\treturn self._label;\n};\n\nB.prototype.set_label =
>> function(value) {\n\tvar self = this;\n\tself._label = value;\n};";
>> > assertOut(expected);
>> > }
>> >
>> > @@ -68,10 +68,10 @@ public class TestFlexJSAccessors extends ASTestBase
>> > public void testSetAccessorWithMemberAccessOnRightSide()
>> > {
>> > IClassNode node = (IClassNode) getNode(
>> > - "public function A() {}; 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_CLASS);
>> > + "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 */\nA = function()
>> {\n};\n\n/**\n * @this {A}\n */\nA.prototype.doStuff = function() {\n\tvar
>> self = this;\n\tset_label(this.get_label());\n\tvar /** @type {string} */
>> theLabel = get_label();\n};\n\n/**\n * @private\n * @type {string}\n
>> */\nA.prototype._label;\n\nA.prototype.get_label = function() {\n\tvar self
>> = this;\n\treturn _label;\n};\n\nA.prototype.set_label = function(value)
>> {\n\tvar self = this;\n\t_label = value;\n};";
>> > + String expected = "/**\n * @constructor\n */\nB = function()
>> {\n};\n\n/**\n * @this {B}\n */\nB.prototype.doStuff = function() {\n\tvar
>> self = this;\n\tself.set_label(self.get_label());\n\tvar /** @type {string}
>> */ theLabel = self.get_label();\n};\n\n/**\n * @private\n * @type
>> {string}\n */\nB.prototype._label;\n\nB.prototype.get_label = function()
>> {\n\tvar self = this;\n\treturn self._label;\n};\n\nB.prototype.set_label =
>> function(value) {\n\tvar self = this;\n\tself._label = value;\n};";
>> > assertOut(expected);
>> > }
>> >
>> >
>> >
>> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/112d8ca7/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
>> > ----------------------------------------------------------------------
>> > diff --git
>> a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
>> b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
>> > index a1a759a..7aed95a 100644
>> > ---
>> a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
>> > +++
>> b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
>> > @@ -31,6 +31,15 @@ import org.junit.Test;
>> > public class TestFlexJSClass extends TestGoogClass
>> > {
>> >
>> > + @Test
>> > + public void testConstructor_withArgumentNameMatchingMemberName()
>> > + {
>> > + 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\tvar self =
>> this;\n\tself.arg1 = arg1;\n};\n\n/**\n * @type {string}\n
>> */\norg.apache.flex.B.prototype.arg1;";
>> > + assertOut(expected);
>> > + }
>> > +
>> > @Override
>> > @Test
>> > public void testAccessors()
>> >
>> >
>> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/112d8ca7/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
>> > ----------------------------------------------------------------------
>> > diff --git
>> a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
>> b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
>> > index c96bf60..6968c38 100644
>> > ---
>> a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
>> > +++
>> b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
>> > @@ -24,6 +24,7 @@ import
>> org.apache.flex.compiler.internal.codegen.js.goog.TestGoogExpressions;
>> > import org.apache.flex.compiler.internal.driver.js.flexjs.FlexJSBackend;
>> > import org.apache.flex.compiler.tree.as.IBinaryOperatorNode;
>> > import org.apache.flex.compiler.tree.as.IFunctionNode;
>> > +import org.apache.flex.compiler.tree.as.IMemberAccessExpressionNode;
>> > import org.junit.Test;
>> >
>> > /**
>> > @@ -34,6 +35,38 @@ public class TestFlexJSExpressions extends
>> TestGoogExpressions
>> >
>> > @Override
>> > @Test
>> > + public void testVisitLanguageIdentifierNode_This()
>> > + {
>> > + IMemberAccessExpressionNode node =
>> (IMemberAccessExpressionNode) getNode(
>> > + "if (a) this.a;", IMemberAccessExpressionNode.class);
>> > + asBlockWalker.visitMemberAccessExpression(node);
>> > + assertOut("a");
>> > + }
>> > +
>> > + @Override
>> > + @Test
>> > + public void testVisitLanguageIdentifierNode_This1()
>> > + {
>> > + IMemberAccessExpressionNode node =
>> (IMemberAccessExpressionNode) getNode(
>> > + "if (a) this.a;", IMemberAccessExpressionNode.class);
>> > +
>> > + asBlockWalker.visitMemberAccessExpression(node);
>> > + assertOut("a");
>> > + }
>> > +
>> > + @Override
>> > + @Test
>> > + public void testVisitLanguageIdentifierNode_This2()
>> > + {
>> > + IMemberAccessExpressionNode node =
>> (IMemberAccessExpressionNode) getNode(
>> > + "if (a) this.a;", IMemberAccessExpressionNode.class);
>> > +
>> > + asBlockWalker.visitMemberAccessExpression(node);
>> > + assertOut("a");
>> > + }
>> > +
>> > + @Override
>> > + @Test
>> > public void testVisitLanguageIdentifierNode_SuperMethod_1()
>> > {
>> > IFunctionNode node = getMethod("function foo(){if (a)
>> super.foo();}");
>> >
>> >
>> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/112d8ca7/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSMethodMembers.java
>> > ----------------------------------------------------------------------
>> > diff --git
>> a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSMethodMembers.java
>> b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSMethodMembers.java
>> > index 15310f7..1df4b71 100644
>> > ---
>> a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSMethodMembers.java
>> > +++
>> b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSMethodMembers.java
>> > @@ -22,6 +22,8 @@ package
>> org.apache.flex.compiler.internal.codegen.js.flexjs;
>> > import org.apache.flex.compiler.driver.IBackend;
>> > import
>> org.apache.flex.compiler.internal.codegen.js.goog.TestGoogMethodMembers;
>> > import org.apache.flex.compiler.internal.driver.js.flexjs.FlexJSBackend;
>> > +import org.apache.flex.compiler.tree.as.IFunctionNode;
>> > +import org.junit.Test;
>> >
>> > /**
>> > * @author Erik de Bruin
>> > @@ -29,6 +31,38 @@ import
>> org.apache.flex.compiler.internal.driver.js.flexjs.FlexJSBackend;
>> > public class TestFlexJSMethodMembers extends TestGoogMethodMembers
>> > {
>> >
>> > +
>> //--------------------------------------------------------------------------
>> > + // Doc Specific Tests
>> > +
>> //--------------------------------------------------------------------------
>> > +
>> > + @Override
>> > + @Test
>> > + public void testConstructor_withThisInBody()
>> > + {
>> > + IFunctionNode node = getMethod("public function
>> A(){this.foo;};");
>> > + asBlockWalker.visitFunction(node);
>> > + assertOut("/**\n * @constructor\n */\nA = function() {\n\tvar
>> self = this;\n\tfoo;\n}");
>> > + }
>> > +
>> > + @Override
>> > + @Test
>> > + public void testMethod_withThisInBody()
>> > + {
>> > + IFunctionNode node = getMethod("function foo(){this.foo;}");
>> > + asBlockWalker.visitFunction(node);
>> > + assertOut("/**\n * @this {A}\n */\nA.prototype.foo = function()
>> {\n\tvar self = this;\n\tfoo;\n}");
>> > + }
>> > +
>> > + @Override
>> > + @Test
>> > + public void testMethod_withThisInBodyComplex()
>> > + {
>> > + IFunctionNode node = getMethod("function
>> foo(){if(true){while(i){this.bar(42);}}}");
>> > + asBlockWalker.visitFunction(node);
>> > + assertOut("/**\n * @this {A}\n */\nA.prototype.foo = function()
>> {\n\tvar self = this;\n\tif (true) "
>> > + + "{\n\t\twhile (i) {\n\t\t\tbar(42);\n\t\t}\n\t}\n}");
>> > + }
>> > +
>> > @Override
>> > protected IBackend createBackend()
>> > {
>> >
>> >
>> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/112d8ca7/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
>> > ----------------------------------------------------------------------
>> > diff --git
>> a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
>> b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
>> > index dd4d137..4f58975 100644
>> > ---
>> a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
>> > +++
>> b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
>> > @@ -32,6 +32,7 @@ import
>> org.apache.flex.compiler.internal.codegen.js.JSEmitterTokens;
>> > import org.apache.flex.compiler.internal.codegen.js.goog.JSGoogEmitter;
>> > import
>> org.apache.flex.compiler.internal.codegen.js.goog.JSGoogEmitterTokens;
>> > import org.apache.flex.compiler.internal.definitions.AccessorDefinition;
>> > +import
>> org.apache.flex.compiler.internal.definitions.ParameterDefinition;
>> > import
>> org.apache.flex.compiler.internal.tree.as.BinaryOperatorAssignmentNode;
>> > import org.apache.flex.compiler.internal.tree.as.FunctionCallNode;
>> > import org.apache.flex.compiler.internal.tree.as.FunctionNode;
>> > @@ -47,6 +48,7 @@ import
>> org.apache.flex.compiler.tree.as.IFunctionCallNode;
>> > import org.apache.flex.compiler.tree.as.IFunctionNode;
>> > import org.apache.flex.compiler.tree.as.IGetterNode;
>> > import org.apache.flex.compiler.tree.as.IIdentifierNode;
>> > +import org.apache.flex.compiler.tree.as.ILanguageIdentifierNode;
>> > import org.apache.flex.compiler.tree.as.IMemberAccessExpressionNode;
>> > import org.apache.flex.compiler.tree.as.ISetterNode;
>> > import org.apache.flex.compiler.utils.ASNodeUtils;
>> > @@ -94,7 +96,7 @@ public class JSFlexJSEmitter extends JSGoogEmitter
>> implements IJSFlexJSEmitter
>> > ASTNodeID inode = pnode.getNodeID();
>> >
>> > boolean writeSelf = false;
>> > - if (cnode != null)
>> > + if (cnode != null && !(def instanceof ParameterDefinition))
>> > {
>> > IDefinitionNode[] members = cnode.getAllMemberNodes();
>> > for (IDefinitionNode mnode : members)
>> > @@ -335,6 +337,20 @@ public class JSFlexJSEmitter extends JSGoogEmitter
>> implements IJSFlexJSEmitter
>> > }
>> >
>> > @Override
>> > + public void emitMemberAccessExpression(IMemberAccessExpressionNode
>> node)
>> > + {
>> > + IASNode leftNode = node.getLeftOperandNode();
>> > +
>> > + if (!(leftNode instanceof ILanguageIdentifierNode &&
>> ((ILanguageIdentifierNode) leftNode)
>> > + .getKind() ==
>> ILanguageIdentifierNode.LanguageIdentifierKind.THIS))
>> > + {
>> > + getWalker().walk(node.getLeftOperandNode());
>> > + write(node.getOperator().getOperatorText());
>> > + }
>> > + getWalker().walk(node.getRightOperandNode());
>> > + }
>> > +
>> > + @Override
>> > protected void emitObjectDefineProperty(IAccessorNode node)
>> > {
>> > /*
>> >
>> >
>> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/112d8ca7/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
>> > ----------------------------------------------------------------------
>> > diff --git
>> a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
>> b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
>> > index 49832a3..430ec4b 100644
>> > ---
>> a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
>> > +++
>> b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
>> > @@ -191,9 +191,15 @@ public class MXMLFlexJSPublisher extends
>> JSGoogPublisher implements
>> > htmlFile.append("</head>\n");
>> > htmlFile.append("<body>\n");
>> > htmlFile.append("\t<script type=\"text/javascript\">\n");
>> > +
>> > + // TODO (erikdebruin) the utility methods should have their own
>> place...
>> > + htmlFile.append("\t\tfunction is(object, type) {return
>> object;};\n");
>> > + htmlFile.append("\t\t\n");
>> > +
>> > htmlFile.append("\t\tnew ");
>> > htmlFile.append(projectName);
>> > - htmlFile.append("();\n");
>> > + htmlFile.append("()");
>> > + htmlFile.append(".start()\n");
>> > htmlFile.append("\t</script>\n");
>> > htmlFile.append("</body>\n");
>> > htmlFile.append("</html>");
>> >
>>
>>
>>
>> --
>> Ix Multimedia Software
>>
>> Jan Luykenstraat 27
>> 3521 VB Utrecht
>>
>> T. 06-51952295
>> I. www.ixsoftware.nl
>>
--
Ix Multimedia Software
Jan Luykenstraat 27
3521 VB Utrecht
T. 06-51952295
I. www.ixsoftware.nl
Re: git commit: FlexJS application now shows in browser
Posted by Om <bi...@gmail.com>.
Awesome! Any chance you can put up the working demo onto your people.a.o
site? Makes it easier for folks to see what's happening.
Thanks,
Om
On Mar 27, 2013 4:15 PM, "Erik de Bruin" <er...@ixsoftware.nl> wrote:
> Forgot to mention this in the commit message: this goes only for the
> 'js-debug' code. The 'js-release' code has some more issues that
> currently prevent it from showing the view in the browser.
>
> EdB
>
>
>
> On Thu, Mar 28, 2013 at 12:07 AM, <er...@apache.org> wrote:
> > Updated Branches:
> > refs/heads/develop d8bb65f1e -> 112d8ca7f
> >
> >
> > FlexJS application now shows in browser
> >
> > Fixed various issues related to JS errors that prevented the FlexJS
> application from showing it's view in the browser. Note: although the view
> components are displayed as expected, none of the functionality is working.
> >
> > Signed-off-by: Erik de Bruin <er...@ixsoftware.nl>
> >
> >
> > Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
> > Commit:
> http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/112d8ca7
> > Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/112d8ca7
> > Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/112d8ca7
> >
> > Branch: refs/heads/develop
> > Commit: 112d8ca7ff1e218404e964f9242a104acee20311
> > Parents: d8bb65f
> > Author: Erik de Bruin <er...@ixsoftware.nl>
> > Authored: Thu Mar 28 00:07:11 2013 +0100
> > Committer: Erik de Bruin <er...@ixsoftware.nl>
> > Committed: Thu Mar 28 00:07:11 2013 +0100
> >
> > ----------------------------------------------------------------------
> > .../codegen/js/flexjs/TestFlexJSAccessors.java | 12 +++---
> > .../codegen/js/flexjs/TestFlexJSClass.java | 9 ++++
> > .../codegen/js/flexjs/TestFlexJSExpressions.java | 33 ++++++++++++++
> > .../codegen/js/flexjs/TestFlexJSMethodMembers.java | 34
> +++++++++++++++
> > .../codegen/js/flexjs/JSFlexJSEmitter.java | 18 +++++++-
> > .../codegen/mxml/flexjs/MXMLFlexJSPublisher.java | 8 +++-
> > 6 files changed, 106 insertions(+), 8 deletions(-)
> > ----------------------------------------------------------------------
> >
> >
> >
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/112d8ca7/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
> > ----------------------------------------------------------------------
> > diff --git
> a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
> b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
> > index cee5079..6e3e842 100644
> > ---
> a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
> > +++
> b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
> > @@ -46,10 +46,10 @@ public class TestFlexJSAccessors extends ASTestBase
> > public void testSetAccessorWithMemberAccessOnLeftSide()
> > {
> > IClassNode node = (IClassNode) getNode(
> > - "public function A() {}; 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_CLASS);
> > + "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 */\nA = function()
> {\n};\n\n/**\n * @this {A}\n */\nA.prototype.doStuff = function() {\n\tvar
> self = this;\n\tthis.set_label(get_label() + 'bye');\n\tvar /** @type
> {string} */ theLabel = get_label();\n};\n\n/**\n * @private\n * @type
> {string}\n */\nA.prototype._label;\n\nA.prototype.get_label = function()
> {\n\tvar self = this;\n\treturn _label;\n};\n\nA.prototype.set_label =
> function(value) {\n\tvar self = this;\n\t_label = value;\n};";
> > + String expected = "/**\n * @constructor\n */\nB = function()
> {\n};\n\n/**\n * @this {B}\n */\nB.prototype.doStuff = function() {\n\tvar
> self = this;\n\tself.set_label(self.get_label() + 'bye');\n\tvar /** @type
> {string} */ theLabel = self.get_label();\n};\n\n/**\n * @private\n * @type
> {string}\n */\nB.prototype._label;\n\nB.prototype.get_label = function()
> {\n\tvar self = this;\n\treturn self._label;\n};\n\nB.prototype.set_label =
> function(value) {\n\tvar self = this;\n\tself._label = value;\n};";
> > assertOut(expected);
> > }
> >
> > @@ -68,10 +68,10 @@ public class TestFlexJSAccessors extends ASTestBase
> > public void testSetAccessorWithMemberAccessOnRightSide()
> > {
> > IClassNode node = (IClassNode) getNode(
> > - "public function A() {}; 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_CLASS);
> > + "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 */\nA = function()
> {\n};\n\n/**\n * @this {A}\n */\nA.prototype.doStuff = function() {\n\tvar
> self = this;\n\tset_label(this.get_label());\n\tvar /** @type {string} */
> theLabel = get_label();\n};\n\n/**\n * @private\n * @type {string}\n
> */\nA.prototype._label;\n\nA.prototype.get_label = function() {\n\tvar self
> = this;\n\treturn _label;\n};\n\nA.prototype.set_label = function(value)
> {\n\tvar self = this;\n\t_label = value;\n};";
> > + String expected = "/**\n * @constructor\n */\nB = function()
> {\n};\n\n/**\n * @this {B}\n */\nB.prototype.doStuff = function() {\n\tvar
> self = this;\n\tself.set_label(self.get_label());\n\tvar /** @type {string}
> */ theLabel = self.get_label();\n};\n\n/**\n * @private\n * @type
> {string}\n */\nB.prototype._label;\n\nB.prototype.get_label = function()
> {\n\tvar self = this;\n\treturn self._label;\n};\n\nB.prototype.set_label =
> function(value) {\n\tvar self = this;\n\tself._label = value;\n};";
> > assertOut(expected);
> > }
> >
> >
> >
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/112d8ca7/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
> > ----------------------------------------------------------------------
> > diff --git
> a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
> b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
> > index a1a759a..7aed95a 100644
> > ---
> a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
> > +++
> b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
> > @@ -31,6 +31,15 @@ import org.junit.Test;
> > public class TestFlexJSClass extends TestGoogClass
> > {
> >
> > + @Test
> > + public void testConstructor_withArgumentNameMatchingMemberName()
> > + {
> > + 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\tvar self =
> this;\n\tself.arg1 = arg1;\n};\n\n/**\n * @type {string}\n
> */\norg.apache.flex.B.prototype.arg1;";
> > + assertOut(expected);
> > + }
> > +
> > @Override
> > @Test
> > public void testAccessors()
> >
> >
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/112d8ca7/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
> > ----------------------------------------------------------------------
> > diff --git
> a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
> b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
> > index c96bf60..6968c38 100644
> > ---
> a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
> > +++
> b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
> > @@ -24,6 +24,7 @@ import
> org.apache.flex.compiler.internal.codegen.js.goog.TestGoogExpressions;
> > import org.apache.flex.compiler.internal.driver.js.flexjs.FlexJSBackend;
> > import org.apache.flex.compiler.tree.as.IBinaryOperatorNode;
> > import org.apache.flex.compiler.tree.as.IFunctionNode;
> > +import org.apache.flex.compiler.tree.as.IMemberAccessExpressionNode;
> > import org.junit.Test;
> >
> > /**
> > @@ -34,6 +35,38 @@ public class TestFlexJSExpressions extends
> TestGoogExpressions
> >
> > @Override
> > @Test
> > + public void testVisitLanguageIdentifierNode_This()
> > + {
> > + IMemberAccessExpressionNode node =
> (IMemberAccessExpressionNode) getNode(
> > + "if (a) this.a;", IMemberAccessExpressionNode.class);
> > + asBlockWalker.visitMemberAccessExpression(node);
> > + assertOut("a");
> > + }
> > +
> > + @Override
> > + @Test
> > + public void testVisitLanguageIdentifierNode_This1()
> > + {
> > + IMemberAccessExpressionNode node =
> (IMemberAccessExpressionNode) getNode(
> > + "if (a) this.a;", IMemberAccessExpressionNode.class);
> > +
> > + asBlockWalker.visitMemberAccessExpression(node);
> > + assertOut("a");
> > + }
> > +
> > + @Override
> > + @Test
> > + public void testVisitLanguageIdentifierNode_This2()
> > + {
> > + IMemberAccessExpressionNode node =
> (IMemberAccessExpressionNode) getNode(
> > + "if (a) this.a;", IMemberAccessExpressionNode.class);
> > +
> > + asBlockWalker.visitMemberAccessExpression(node);
> > + assertOut("a");
> > + }
> > +
> > + @Override
> > + @Test
> > public void testVisitLanguageIdentifierNode_SuperMethod_1()
> > {
> > IFunctionNode node = getMethod("function foo(){if (a)
> super.foo();}");
> >
> >
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/112d8ca7/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSMethodMembers.java
> > ----------------------------------------------------------------------
> > diff --git
> a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSMethodMembers.java
> b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSMethodMembers.java
> > index 15310f7..1df4b71 100644
> > ---
> a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSMethodMembers.java
> > +++
> b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSMethodMembers.java
> > @@ -22,6 +22,8 @@ package
> org.apache.flex.compiler.internal.codegen.js.flexjs;
> > import org.apache.flex.compiler.driver.IBackend;
> > import
> org.apache.flex.compiler.internal.codegen.js.goog.TestGoogMethodMembers;
> > import org.apache.flex.compiler.internal.driver.js.flexjs.FlexJSBackend;
> > +import org.apache.flex.compiler.tree.as.IFunctionNode;
> > +import org.junit.Test;
> >
> > /**
> > * @author Erik de Bruin
> > @@ -29,6 +31,38 @@ import
> org.apache.flex.compiler.internal.driver.js.flexjs.FlexJSBackend;
> > public class TestFlexJSMethodMembers extends TestGoogMethodMembers
> > {
> >
> > +
> //--------------------------------------------------------------------------
> > + // Doc Specific Tests
> > +
> //--------------------------------------------------------------------------
> > +
> > + @Override
> > + @Test
> > + public void testConstructor_withThisInBody()
> > + {
> > + IFunctionNode node = getMethod("public function
> A(){this.foo;};");
> > + asBlockWalker.visitFunction(node);
> > + assertOut("/**\n * @constructor\n */\nA = function() {\n\tvar
> self = this;\n\tfoo;\n}");
> > + }
> > +
> > + @Override
> > + @Test
> > + public void testMethod_withThisInBody()
> > + {
> > + IFunctionNode node = getMethod("function foo(){this.foo;}");
> > + asBlockWalker.visitFunction(node);
> > + assertOut("/**\n * @this {A}\n */\nA.prototype.foo = function()
> {\n\tvar self = this;\n\tfoo;\n}");
> > + }
> > +
> > + @Override
> > + @Test
> > + public void testMethod_withThisInBodyComplex()
> > + {
> > + IFunctionNode node = getMethod("function
> foo(){if(true){while(i){this.bar(42);}}}");
> > + asBlockWalker.visitFunction(node);
> > + assertOut("/**\n * @this {A}\n */\nA.prototype.foo = function()
> {\n\tvar self = this;\n\tif (true) "
> > + + "{\n\t\twhile (i) {\n\t\t\tbar(42);\n\t\t}\n\t}\n}");
> > + }
> > +
> > @Override
> > protected IBackend createBackend()
> > {
> >
> >
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/112d8ca7/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
> > ----------------------------------------------------------------------
> > diff --git
> a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
> b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
> > index dd4d137..4f58975 100644
> > ---
> a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
> > +++
> b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
> > @@ -32,6 +32,7 @@ import
> org.apache.flex.compiler.internal.codegen.js.JSEmitterTokens;
> > import org.apache.flex.compiler.internal.codegen.js.goog.JSGoogEmitter;
> > import
> org.apache.flex.compiler.internal.codegen.js.goog.JSGoogEmitterTokens;
> > import org.apache.flex.compiler.internal.definitions.AccessorDefinition;
> > +import
> org.apache.flex.compiler.internal.definitions.ParameterDefinition;
> > import
> org.apache.flex.compiler.internal.tree.as.BinaryOperatorAssignmentNode;
> > import org.apache.flex.compiler.internal.tree.as.FunctionCallNode;
> > import org.apache.flex.compiler.internal.tree.as.FunctionNode;
> > @@ -47,6 +48,7 @@ import
> org.apache.flex.compiler.tree.as.IFunctionCallNode;
> > import org.apache.flex.compiler.tree.as.IFunctionNode;
> > import org.apache.flex.compiler.tree.as.IGetterNode;
> > import org.apache.flex.compiler.tree.as.IIdentifierNode;
> > +import org.apache.flex.compiler.tree.as.ILanguageIdentifierNode;
> > import org.apache.flex.compiler.tree.as.IMemberAccessExpressionNode;
> > import org.apache.flex.compiler.tree.as.ISetterNode;
> > import org.apache.flex.compiler.utils.ASNodeUtils;
> > @@ -94,7 +96,7 @@ public class JSFlexJSEmitter extends JSGoogEmitter
> implements IJSFlexJSEmitter
> > ASTNodeID inode = pnode.getNodeID();
> >
> > boolean writeSelf = false;
> > - if (cnode != null)
> > + if (cnode != null && !(def instanceof ParameterDefinition))
> > {
> > IDefinitionNode[] members = cnode.getAllMemberNodes();
> > for (IDefinitionNode mnode : members)
> > @@ -335,6 +337,20 @@ public class JSFlexJSEmitter extends JSGoogEmitter
> implements IJSFlexJSEmitter
> > }
> >
> > @Override
> > + public void emitMemberAccessExpression(IMemberAccessExpressionNode
> node)
> > + {
> > + IASNode leftNode = node.getLeftOperandNode();
> > +
> > + if (!(leftNode instanceof ILanguageIdentifierNode &&
> ((ILanguageIdentifierNode) leftNode)
> > + .getKind() ==
> ILanguageIdentifierNode.LanguageIdentifierKind.THIS))
> > + {
> > + getWalker().walk(node.getLeftOperandNode());
> > + write(node.getOperator().getOperatorText());
> > + }
> > + getWalker().walk(node.getRightOperandNode());
> > + }
> > +
> > + @Override
> > protected void emitObjectDefineProperty(IAccessorNode node)
> > {
> > /*
> >
> >
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/112d8ca7/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
> > ----------------------------------------------------------------------
> > diff --git
> a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
> b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
> > index 49832a3..430ec4b 100644
> > ---
> a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
> > +++
> b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
> > @@ -191,9 +191,15 @@ public class MXMLFlexJSPublisher extends
> JSGoogPublisher implements
> > htmlFile.append("</head>\n");
> > htmlFile.append("<body>\n");
> > htmlFile.append("\t<script type=\"text/javascript\">\n");
> > +
> > + // TODO (erikdebruin) the utility methods should have their own
> place...
> > + htmlFile.append("\t\tfunction is(object, type) {return
> object;};\n");
> > + htmlFile.append("\t\t\n");
> > +
> > htmlFile.append("\t\tnew ");
> > htmlFile.append(projectName);
> > - htmlFile.append("();\n");
> > + htmlFile.append("()");
> > + htmlFile.append(".start()\n");
> > htmlFile.append("\t</script>\n");
> > htmlFile.append("</body>\n");
> > htmlFile.append("</html>");
> >
>
>
>
> --
> Ix Multimedia Software
>
> Jan Luykenstraat 27
> 3521 VB Utrecht
>
> T. 06-51952295
> I. www.ixsoftware.nl
>