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 2013/04/12 09:02:29 UTC
[3/8] git commit: resolve against refactor
resolve against refactor
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/f71e1a5a
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/f71e1a5a
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/f71e1a5a
Branch: refs/heads/develop
Commit: f71e1a5a04cc400af59e1c17c42aa067605bcfe3
Parents: af9a6f1
Author: Alex Harui <ah...@apache.org>
Authored: Thu Apr 11 17:48:41 2013 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Thu Apr 11 17:48:41 2013 -0700
----------------------------------------------------------------------
.../js/flexjs/TestFlexJSAccessorMembers.java | 20 ++++----
.../codegen/js/flexjs/TestFlexJSAccessors.java | 8 ++--
.../codegen/js/flexjs/TestFlexJSClass.java | 6 +-
.../codegen/js/flexjs/TestFlexJSMethodMembers.java | 40 +++++++++++++++
.../codegen/js/goog/IJSGoogDocEmitter.java | 2 +
.../codegen/js/flexjs/JSFlexJSEmitter.java | 11 ++++-
.../codegen/js/flexjs/JSFlexJSGoogDocEmitter.java | 32 ++++++++++++
.../internal/codegen/js/goog/JSGoogDocEmitter.java | 17 ++++++-
.../codegen/js/goog/JSGoogDocEmitterTokens.java | 2 +-
9 files changed, 118 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/f71e1a5a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
index 5f23314..1035101 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
@@ -37,7 +37,7 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
{
IGetterNode node = (IGetterNode) getAccessor("function get foo():int{}");
asBlockWalker.visitGetter(node);
- assertOut("A.prototype.get_foo = function() {\n}");
+ assertOut("/**\n * @return {number}\n */\nA.prototype.get_foo = function() {\n}");
}
@Override
@@ -46,7 +46,7 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
{
IGetterNode node = (IGetterNode) getAccessor("function get foo():int{return -1;}");
asBlockWalker.visitGetter(node);
- assertOut("A.prototype.get_foo = function() {\n\tvar self = this;\n\treturn -1;\n}");
+ assertOut("/**\n * @return {number}\n */\nA.prototype.get_foo = function() {\n\tvar self = this;\n\treturn -1;\n}");
}
@Override
@@ -55,7 +55,7 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
{
IGetterNode node = (IGetterNode) getAccessor("public function get foo():int{return -1;}");
asBlockWalker.visitGetter(node);
- assertOut("A.prototype.get_foo = function() {\n\tvar self = this;\n\treturn -1;\n}");
+ assertOut("/**\n * @expose\n * @return {number}\n */\nA.prototype.get_foo = function() {\n\tvar self = this;\n\treturn -1;\n}");
}
@Override
@@ -64,7 +64,7 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
{
IGetterNode node = (IGetterNode) getAccessor("public override function get foo():int{super.foo(); return -1;}");
asBlockWalker.visitGetter(node);
- assertOut("A.prototype.get_foo = function() {\n\tvar self = this;\n\tgoog.base(this, 'get_foo');\n\treturn -1;\n}");
+ assertOut("/**\n * @expose\n * @return {number}\n * @override\n */\nA.prototype.get_foo = function() {\n\tvar self = this;\n\tgoog.base(this, 'get_foo');\n\treturn -1;\n}");
}
@Override
@@ -73,7 +73,7 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
{
IGetterNode node = (IGetterNode) getAccessor("public static function get foo():int{return -1;}");
asBlockWalker.visitGetter(node);
- assertOut("A.get_foo = function() {\n\tvar self = this;\n\treturn -1;\n}");
+ assertOut("/**\n * @expose\n * @return {number}\n */\nA.get_foo = function() {\n\tvar self = this;\n\treturn -1;\n}");
}
@Override
@@ -82,7 +82,7 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
{
ISetterNode node = (ISetterNode) getAccessor("function set foo(value:int):void{}");
asBlockWalker.visitSetter(node);
- assertOut("A.prototype.set_foo = function(value) {\n}");
+ assertOut("/**\n * @param {number} value\n */\nA.prototype.set_foo = function(value) {\n}");
}
@Override
@@ -91,7 +91,7 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
{
ISetterNode node = (ISetterNode) getAccessor("function set foo(value:int):void{fetch('haai');}");
asBlockWalker.visitSetter(node);
- assertOut("A.prototype.set_foo = function(value) {\n\tvar self = this;\n\tfetch('haai');\n}");
+ assertOut("/**\n * @param {number} value\n */\nA.prototype.set_foo = function(value) {\n\tvar self = this;\n\tfetch('haai');\n}");
}
@Override
@@ -100,7 +100,7 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
{
ISetterNode node = (ISetterNode) getAccessor("public function set foo(value:int):void{}");
asBlockWalker.visitSetter(node);
- assertOut("A.prototype.set_foo = function(value) {\n}");
+ assertOut("/**\n * @expose\n * @param {number} value\n */\nA.prototype.set_foo = function(value) {\n}");
}
@Override
@@ -109,7 +109,7 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
{
ISetterNode node = (ISetterNode) getAccessor("public override function set foo(value:int):void{super.foo();}");
asBlockWalker.visitSetter(node);
- assertOut("A.prototype.set_foo = function(value) {\n\tvar self = this;\n\tgoog.base(this, 'set_foo');\n}");
+ assertOut("/**\n * @expose\n * @param {number} value\n * @override\n */\nA.prototype.set_foo = function(value) {\n\tvar self = this;\n\tgoog.base(this, 'set_foo');\n}");
}
@Override
@@ -118,7 +118,7 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
{
ISetterNode node = (ISetterNode) getAccessor("public static function set foo(value:int):void{}");
asBlockWalker.visitSetter(node);
- assertOut("A.set_foo = function(value) {\n}");
+ assertOut("/**\n * @expose\n * @param {number} value\n */\nA.set_foo = function(value) {\n}");
}
@Override
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/f71e1a5a/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 6e3e842..fb13a9e 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
@@ -38,7 +38,7 @@ public class TestFlexJSAccessors extends ASTestBase
"public function A() {}; public function doStuff():void {label = 'hello, 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);
asBlockWalker.visitClass(node);
- String expected = "/**\n * @constructor\n */\nA = function() {\n};\n\nA.prototype.doStuff = function() {\n\tvar self = this;\n\tset_label('hello, 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 */\nA = function() {\n};\n\nA.prototype.doStuff = function() {\n\tvar self = this;\n\tset_label('hello, bye');\n\tvar /** @type {string} */ theLabel = get_label();\n};\n\n/**\n * @private\n * @type {string}\n */\nA.prototype._label;\n\n/**\n * @expose\n * @return {string}\n */\nA.prototype.get_label = function() {\n\tvar self = this;\n\treturn _label;\n};\n\n/**\n * @expose\n * @param {string} value\n */\nA.prototype.set_label = function(value) {\n\tvar self = this;\n\t_label = value;\n};";
assertOut(expected);
}
@@ -49,7 +49,7 @@ public class TestFlexJSAccessors extends ASTestBase
"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 */\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};";
+ String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n/**\n * @expose\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\n/**\n * @expose\n * @return {string}\n */\nB.prototype.get_label = function() {\n\tvar self = this;\n\treturn self._label;\n};\n\n/**\n * @expose\n * @param {string} value\n */\nB.prototype.set_label = function(value) {\n\tvar self = this;\n\tself._label = value;\n};";
assertOut(expected);
}
@@ -60,7 +60,7 @@ public class TestFlexJSAccessors extends ASTestBase
"public function A() {}; public function doStuff():void {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);
asBlockWalker.visitClass(node);
- String expected = "/**\n * @constructor\n */\nA = function() {\n};\n\nA.prototype.doStuff = function() {\n\tvar self = this;\n\tset_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 */\nA = function() {\n};\n\nA.prototype.doStuff = function() {\n\tvar self = this;\n\tset_label(get_label() + 'bye');\n\tvar /** @type {string} */ theLabel = get_label();\n};\n\n/**\n * @private\n * @type {string}\n */\nA.prototype._label;\n\n/**\n * @expose\n * @return {string}\n */\nA.prototype.get_label = function() {\n\tvar self = this;\n\treturn _label;\n};\n\n/**\n * @expose\n * @param {string} value\n */\nA.prototype.set_label = function(value) {\n\tvar self = this;\n\t_label = value;\n};";
assertOut(expected);
}
@@ -71,7 +71,7 @@ public class TestFlexJSAccessors extends ASTestBase
"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 */\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};";
+ String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n/**\n * @expose\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\n/**\n * @expose\n * @return {string}\n */\nB.prototype.get_label = function() {\n\tvar self = this;\n\treturn self._label;\n};\n\n/**\n * @expose\n * @param {string} value\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/f71e1a5a/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 b36d4b3..c30f9b9 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
@@ -45,7 +45,7 @@ public class TestFlexJSClass extends TestGoogClass
{
IClassNode node = getClassNode("public class B {public function B() {}; public var button:Button = new Button(); public function foo():String {return button.label;};}");
asBlockWalker.visitClass(node);
- String expected = "/**\n * @constructor\n */\norg.apache.flex.B = function() {\n};\n\n/**\n * @type {spark.components.Button}\n */\norg.apache.flex.B.prototype.button = new spark.components.Button();\n\n/**\n * @return {string}\n */\norg.apache.flex.B.prototype.foo = function() {\n\tvar self = this;\n\treturn self.button.get_label();\n};";
+ String expected = "/**\n * @constructor\n */\norg.apache.flex.B = function() {\n};\n\n/**\n * @type {spark.components.Button}\n */\norg.apache.flex.B.prototype.button = new spark.components.Button();\n\n/**\n * @expose\n * @return {string}\n */\norg.apache.flex.B.prototype.foo = function() {\n\tvar self = this;\n\treturn self.button.get_label();\n};";
assertOut(expected);
}
@@ -65,7 +65,7 @@ public class TestFlexJSClass extends TestGoogClass
+ "foo_bar function get foo6():Object{return null;}"
+ "foo_bar function set foo6(value:Object):void{}" + "}");
asBlockWalker.visitClass(node);
- assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() {\n};\n\norg.apache.flex.A.prototype.get_foo1 = function() {\n\tvar self = this;\n\treturn null;\n};\n\norg.apache.flex.A.prototype.set_foo1 = function(value) {\n};\n\norg.apache.flex.A.prototype.get_foo2 = function() {\n\tvar self = this;\n\treturn null;\n};\n\norg.apache.flex.A.prototype.set_foo2 = function(value) {\n};\n\norg.apache.flex.A.prototype.get_foo3 = function() {\n\tvar self = this;\n\treturn null;\n};\n\norg.apache.flex.A.prototype.set_foo3 = function(value) {\n};\n\norg.apache.flex.A.prototype.get_foo5 = function() {\n\tvar self = this;\n\treturn null;\n};\n\norg.apache.flex.A.prototype.set_foo5 = function(value) {\n};\n\norg.apache.flex.A.prototype.get_foo6 = function() {\n\tvar self = this;\n\treturn null;\n};\n\norg.apache.flex.A.prototype.set_foo6 = function(value) {\n};");
+ assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() {\n};\n\n/**\n * @expose\n * @return {Object}\n */\norg.apache.flex.A.prototype.get_foo1 = function() {\n\tvar self = this;\n\treturn null;\n};\n\n/**\n * @expose\n * @param {Object} value\n */\norg.apache.flex.A.prototype.set_foo1 = function(value) {\n};\n\n/**\n * @protected\n * @return {Object}\n */\norg.apache.flex.A.prototype.get_foo2 = function() {\n\tvar self = this;\n\treturn null;\n};\n\n/**\n * @protected\n * @param {Object} value\n */\norg.apache.flex.A.prototype.set_foo2 = function(value) {\n};\n\n/**\n * @private\n * @return {Object}\n */\norg.apache.flex.A.prototype.get_foo3 = function() {\n\tvar self = this;\n\treturn null;\n};\n\n/**\n * @private\n * @param {Object} value\n */\norg.apache.flex.A.prototype.set_foo3 = function(value) {\n};\n\n/**\n * @return {Object}\n */\norg.apache.flex.A.prototype.get_foo5 = function() {\n\tvar self = this;\n\treturn null;\n};\n\n/**\n * @param {Object} val
ue\n */\norg.apache.flex.A.prototype.set_foo5 = function(value) {\n};\n\n/**\n * @return {Object}\n */\norg.apache.flex.A.prototype.get_foo6 = function() {\n\tvar self = this;\n\treturn null;\n};\n\n/**\n * @param {Object} value\n */\norg.apache.flex.A.prototype.set_foo6 = function(value) {\n};");
}
@Override
@@ -83,7 +83,7 @@ public class TestFlexJSClass extends TestGoogClass
+ "public static function foo7(value:Object):void{}"
+ "foo_bar static function foo7(value:Object):void{}" + "}");
asBlockWalker.visitClass(node);
- assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() {\n};\n\n/**\n * @return {Object}\n */\norg.apache.flex.A.prototype.foo1 = function() {\n\tvar self = this;\n\treturn null;\n};\n\n/**\n * @return {Object}\n */\norg.apache.flex.A.prototype.foo1a = function() {\n\tvar self = this;\n\treturn null;\n};\n\n/**\n * @return {Object}\n * @override\n */\norg.apache.flex.A.prototype.foo1b = function() {\n\tvar self = this;\n\treturn goog.base(this, 'foo1b');\n};\n\n/**\n * @param {Object} value\n */\norg.apache.flex.A.prototype.foo2 = function(value) {\n};\n\n/**\n * @param {Object} value\n */\norg.apache.flex.A.prototype.foo3 = function(value) {\n};\n\n/**\n * @param {Object} value\n */\norg.apache.flex.A.prototype.foo5 = function(value) {\n};\n\n/**\n * @param {Object} value\n */\norg.apache.flex.A.prototype.foo6 = function(value) {\n};\n\n/**\n * @param {Object} value\n */\norg.apache.flex.A.foo7 = function(value) {\n};\n\n/**\n * @param {Object} value\n */\norg
.apache.flex.A.foo7 = function(value) {\n};");
+ assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() {\n};\n\n/**\n * @expose\n * @return {Object}\n */\norg.apache.flex.A.prototype.foo1 = function() {\n\tvar self = this;\n\treturn null;\n};\n\n/**\n * @expose\n * @return {Object}\n */\norg.apache.flex.A.prototype.foo1a = function() {\n\tvar self = this;\n\treturn null;\n};\n\n/**\n * @expose\n * @return {Object}\n * @override\n */\norg.apache.flex.A.prototype.foo1b = function() {\n\tvar self = this;\n\treturn goog.base(this, 'foo1b');\n};\n\n/**\n * @protected\n * @param {Object} value\n */\norg.apache.flex.A.prototype.foo2 = function(value) {\n};\n\n/**\n * @private\n * @param {Object} value\n */\norg.apache.flex.A.prototype.foo3 = function(value) {\n};\n\n/**\n * @param {Object} value\n */\norg.apache.flex.A.prototype.foo5 = function(value) {\n};\n\n/**\n * @param {Object} value\n */\norg.apache.flex.A.prototype.foo6 = function(value) {\n};\n\n/**\n * @expose\n * @param {Object} value\n */\norg.apache.fl
ex.A.foo7 = function(value) {\n};\n\n/**\n * @param {Object} value\n */\norg.apache.flex.A.foo7 = function(value) {\n};");
}
protected IBackend createBackend()
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/f71e1a5a/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 1df4b71..8ac1a71 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
@@ -64,6 +64,46 @@ public class TestFlexJSMethodMembers extends TestGoogMethodMembers
}
@Override
+ @Test
+ public void testMethod_withNamespace()
+ {
+ IFunctionNode node = getMethod("public function foo(bar:String, baz:int = null):int{\treturn -1;}");
+ asBlockWalker.visitFunction(node);
+ // we ignore the 'public' namespace completely
+ assertOut("/**\n * @expose\n * @param {string} bar\n * @param {number=} baz\n * @return {number}\n */\nA.prototype.foo = function(bar, baz) {\n\tvar self = this;\n\tbaz = typeof baz !== 'undefined' ? baz : null;\n\treturn -1;\n}");
+ }
+
+ @Override
+ @Test
+ public void testMethod_withNamespaceModifiers()
+ {
+ IFunctionNode node = getMethod("public static function foo(bar:String, baz:int = null):int{\treturn -1;}");
+ asBlockWalker.visitFunction(node);
+ // (erikdebruin) here we actually DO want to declare the method
+ // directly on the 'class' constructor instead of the
+ // prototype!
+ assertOut("/**\n * @expose\n * @param {string} bar\n * @param {number=} baz\n * @return {number}\n */\nA.foo = function(bar, baz) {\n\tvar self = this;\n\tbaz = typeof baz !== 'undefined' ? baz : null;\n\treturn -1;\n}");
+ }
+
+ @Override
+ @Test
+ public void testMethod_withNamespaceModifierOverride()
+ {
+ IFunctionNode node = getMethod("public override function foo(bar:String, baz:int = null):int{\treturn -1;}");
+ asBlockWalker.visitFunction(node);
+ assertOut("/**\n * @expose\n * @param {string} bar\n * @param {number=} baz\n * @return {number}\n * @override\n */\nA.prototype.foo = function(bar, baz) {\n\tvar self = this;\n\tbaz = typeof baz !== 'undefined' ? baz : null;\n\treturn -1;\n}");
+ }
+
+ @Override
+ @Test
+ public void testMethod_withNamespaceModifierOverrideBackwards()
+ {
+ IFunctionNode node = getMethod("override public function foo(bar:String, baz:int = null):int{return -1;}");
+ asBlockWalker.visitFunction(node);
+ assertOut("/**\n * @expose\n * @param {string} bar\n * @param {number=} baz\n * @return {number}\n * @override\n */\nA.prototype.foo = function(bar, baz) {\n\tvar self = this;\n\tbaz = typeof baz !== 'undefined' ? baz : null;\n\treturn -1;\n}");
+ }
+
+ @Override
protected IBackend createBackend()
{
return new FlexJSBackend();
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/f71e1a5a/compiler.jx/src/org/apache/flex/compiler/codegen/js/goog/IJSGoogDocEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/codegen/js/goog/IJSGoogDocEmitter.java b/compiler.jx/src/org/apache/flex/compiler/codegen/js/goog/IJSGoogDocEmitter.java
index 9171687..540f97f 100644
--- a/compiler.jx/src/org/apache/flex/compiler/codegen/js/goog/IJSGoogDocEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/codegen/js/goog/IJSGoogDocEmitter.java
@@ -121,6 +121,8 @@ public interface IJSGoogDocEmitter extends IJSDocEmitter
void emitParam(IParameterNode node, String packageName);
+ void emitPublic(IASNode node);
+
void emitPrivate(IASNode node);
void emitProtected(IASNode node);
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/f71e1a5a/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 a3914f2..20f169c 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
@@ -21,6 +21,7 @@ package org.apache.flex.compiler.internal.codegen.js.flexjs;
import java.io.FilterWriter;
+import org.apache.flex.compiler.codegen.IDocEmitter;
import org.apache.flex.compiler.codegen.js.flexjs.IJSFlexJSEmitter;
import org.apache.flex.compiler.common.ASModifier;
import org.apache.flex.compiler.common.ModifiersSet;
@@ -30,6 +31,7 @@ import org.apache.flex.compiler.definitions.IFunctionDefinition;
import org.apache.flex.compiler.definitions.ITypeDefinition;
import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
import org.apache.flex.compiler.internal.codegen.js.JSEmitterTokens;
+import org.apache.flex.compiler.internal.codegen.js.goog.JSGoogDocEmitter;
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;
@@ -524,12 +526,14 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
// body;
};
*/
+ ICompilerProject project = getWalker().getProject();
FunctionNode fn = (FunctionNode) node;
fn.parseFunctionBody(problems);
IFunctionDefinition definition = node.getDefinition();
ITypeDefinition type = (ITypeDefinition) definition.getParent();
+ getDoc().emitMethodDoc(fn, project);
write(type.getQualifiedName());
if (!node.hasModifier(ASModifier.STATIC))
{
@@ -546,7 +550,6 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
//writeNewline();
emitMethodScope(node.getScopedNode());
}
-
private void writeGetSetPrefix(boolean isGet)
{
if (isGet)
@@ -555,5 +558,11 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
write(ASEmitterTokens.SET);
write("_");
}
+
+ @Override
+ public IDocEmitter getDocEmitter()
+ {
+ return new JSFlexJSGoogDocEmitter(this);
+ }
}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/f71e1a5a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSGoogDocEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSGoogDocEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSGoogDocEmitter.java
new file mode 100644
index 0000000..7a86fd2
--- /dev/null
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSGoogDocEmitter.java
@@ -0,0 +1,32 @@
+package org.apache.flex.compiler.internal.codegen.js.flexjs;
+
+import org.apache.flex.compiler.codegen.js.IJSEmitter;
+import org.apache.flex.compiler.constants.IASKeywordConstants;
+import org.apache.flex.compiler.internal.codegen.js.goog.JSGoogDocEmitter;
+import org.apache.flex.compiler.tree.as.IFunctionNode;
+
+public class JSFlexJSGoogDocEmitter extends JSGoogDocEmitter {
+
+ public JSFlexJSGoogDocEmitter(IJSEmitter emitter) {
+ super(emitter);
+ // TODO Auto-generated constructor stub
+ }
+
+ @Override
+ public void emitMethodAccess(IFunctionNode node)
+ {
+ String ns = node.getNamespace();
+ if (ns == IASKeywordConstants.PRIVATE)
+ {
+ emitPrivate(node);
+ }
+ else if (ns == IASKeywordConstants.PROTECTED)
+ {
+ emitProtected(node);
+ }
+ else if (ns == IASKeywordConstants.PUBLIC)
+ {
+ emitPublic(node);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/f71e1a5a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogDocEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogDocEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogDocEmitter.java
index 0863416..5f8323b 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogDocEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogDocEmitter.java
@@ -143,8 +143,9 @@ public class JSGoogDocEmitter extends JSDocEmitter implements IJSGoogDocEmitter
if (containsThisReference(node))
{
begin();
+ emitMethodAccess(node);
hasDoc = true;
-
+
emitThis(classDefinition, classDefinition.getPackageName());
}
}
@@ -156,6 +157,7 @@ public class JSGoogDocEmitter extends JSDocEmitter implements IJSGoogDocEmitter
if (!hasDoc)
{
begin();
+ emitMethodAccess(node);
hasDoc = true;
}
@@ -173,6 +175,7 @@ public class JSGoogDocEmitter extends JSDocEmitter implements IJSGoogDocEmitter
if (!hasDoc)
{
begin();
+ emitMethodAccess(node);
hasDoc = true;
}
@@ -186,6 +189,7 @@ public class JSGoogDocEmitter extends JSDocEmitter implements IJSGoogDocEmitter
if (!hasDoc)
{
begin();
+ emitMethodAccess(node);
hasDoc = true;
}
@@ -198,6 +202,11 @@ public class JSGoogDocEmitter extends JSDocEmitter implements IJSGoogDocEmitter
}
}
+ public void emitMethodAccess(IFunctionNode node)
+ {
+ // do nothing
+ }
+
@Override
public void emitVarDoc(IVariableNode node, IDefinition def)
{
@@ -273,6 +282,12 @@ public class JSGoogDocEmitter extends JSDocEmitter implements IJSGoogDocEmitter
}
@Override
+ public void emitPublic(IASNode node)
+ {
+ emitJSDocLine(JSGoogDocEmitterTokens.EXPOSE);
+ }
+
+ @Override
public void emitReturn(IFunctionNode node, String packageName)
{
String rtype = node.getReturnType();
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/f71e1a5a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogDocEmitterTokens.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogDocEmitterTokens.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogDocEmitterTokens.java
index 743a57b..17e3bdb 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogDocEmitterTokens.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogDocEmitterTokens.java
@@ -4,7 +4,7 @@ import org.apache.flex.compiler.codegen.IEmitterTokens;
public enum JSGoogDocEmitterTokens implements IEmitterTokens
{
- PARAM("param"), STAR("*"), TYPE("type");
+ PARAM("param"), STAR("*"), TYPE("type"), EXPOSE("expose");
private String token;