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/20 02:18:13 UTC
[2/6] git commit: [flex-falcon] - Handle Vector.length
Handle Vector.length
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/c30116a2
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/c30116a2
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/c30116a2
Branch: refs/heads/develop
Commit: c30116a26fd990be8785d1f112ddc15a3ffd05a9
Parents: 2e0b423
Author: Alex Harui <ah...@apache.org>
Authored: Fri Apr 19 09:43:50 2013 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Fri Apr 19 09:46:05 2013 -0700
----------------------------------------------------------------------
.../codegen/js/flexjs/TestFlexJSExpressions.java | 19 +++++++++++++++
.../apache/flex/compiler/utils/NativeUtils.java | 2 +
2 files changed, 21 insertions(+), 0 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c30116a2/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 da344c0..56d0aef 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
@@ -504,6 +504,17 @@ public class TestFlexJSExpressions extends TestGoogExpressions
assertOut("/**\n * @expose\n * @return {number}\n */\nfoo.bar.B.prototype.b = function() {\n\tvar /** @type {string} */ s;\n\treturn s.length;\n}");
}
+ @Test
+ public void testNativeVectorGetter()
+ {
+ IFunctionNode node = (IFunctionNode) getNode(
+ "public class B {public function b():int { var a:Vector.<String>; return a.length; }}",
+ IFunctionNode.class, WRAP_LEVEL_PACKAGE, true);
+ asBlockWalker.visitFunction(node);
+ // String.length is a getter but is a property in JS, so don't generate set_length() call.
+ assertOut("/**\n * @expose\n * @return {number}\n */\nfoo.bar.B.prototype.b = function() {\n\tvar self = this;\n\tvar /** @type {Vector.<string>} */ a;\n\treturn a.length;\n}");
+ }
+
//----------------------------------
// Other
//----------------------------------
@@ -524,6 +535,14 @@ public class TestFlexJSExpressions extends TestGoogExpressions
assertOut("FalconTest_A.prototype.foo = function() {\n\tbar(b).text = '';\n}");
}
+ @Test
+ public void testComplexBooleanExpression()
+ {
+ IFunctionNode node = getMethod("function foo(b:Boolean):Boolean {var c:String; var d:String; if (!(b ? c : d)) { return b;}");
+ asBlockWalker.visitFunction(node);
+ assertOut("/**\n * @param {boolean} b\n * @return {boolean}\n */\nFalconTest_A.prototype.foo = function(b) {\n\tvar self = this;\n\tvar /** @type {string} */ c;\n\tvar /** @type {string} */ d;\n\tif (!(b ? c : d)) {\n\t\treturn b;\n\t}\n}");
+ }
+
@Override
@Test
public void testVisitAs()
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c30116a2/compiler.jx/src/org/apache/flex/compiler/utils/NativeUtils.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/utils/NativeUtils.java b/compiler.jx/src/org/apache/flex/compiler/utils/NativeUtils.java
index 554a231..c56812e 100644
--- a/compiler.jx/src/org/apache/flex/compiler/utils/NativeUtils.java
+++ b/compiler.jx/src/org/apache/flex/compiler/utils/NativeUtils.java
@@ -90,6 +90,8 @@ public class NativeUtils
if (test.getValue().equals(type))
return true;
}
+ if (type.startsWith("Vector.<"))
+ return true;
return false;
}
}