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 <bigosma...@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" <e...@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,  <erikdebr...@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 <e...@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 <e...@ixsoftware.nl>
>> > Authored: Thu Mar 28 00:07:11 2013 +0100
>> > Committer: Erik de Bruin <e...@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

Reply via email to