Repository: flex-falcon
Updated Branches:
  refs/heads/develop 38ca9c957 -> 680c335c7


handle 'new int'


Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/680c335c
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/680c335c
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/680c335c

Branch: refs/heads/develop
Commit: 680c335c7f6c9e8a1e2fa068c697c63be2958b89
Parents: 38ca9c9
Author: Alex Harui <aha...@apache.org>
Authored: Thu Oct 13 15:22:09 2016 -0700
Committer: Alex Harui <aha...@apache.org>
Committed: Thu Oct 13 15:22:09 2016 -0700

----------------------------------------------------------------------
 .../codegen/js/jx/FunctionCallEmitter.java      | 30 ++++++++++++++++----
 .../js/flexjs/TestFlexJSGlobalClasses.java      | 17 +++++++++++
 .../js/flexjs/TestFlexJSGlobalFunctions.java    |  8 ++++++
 3 files changed, 50 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/680c335c/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/FunctionCallEmitter.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/FunctionCallEmitter.java
 
b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/FunctionCallEmitter.java
index 0d34a3d..4b31159 100644
--- 
a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/FunctionCallEmitter.java
+++ 
b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/FunctionCallEmitter.java
@@ -67,6 +67,7 @@ public class FunctionCallEmitter extends JSSubEmitter 
implements ISubEmitter<IFu
         if (id != ASTNodeID.SuperID)
         {
             IDefinition def = null;
+            def = node.getNameNode().resolve(getProject());
 
             boolean isClassCast = false;
 
@@ -74,9 +75,12 @@ public class FunctionCallEmitter extends JSSubEmitter 
implements ISubEmitter<IFu
             {
                 if (!(node.getChild(1) instanceof VectorLiteralNode))
                 {
-                    startMapping(node.getNewKeywordNode());
-                    writeToken(ASEmitterTokens.NEW);
-                    endMapping(node.getNewKeywordNode());
+                    if (def == null || 
!(def.getBaseName().equals(IASGlobalFunctionConstants._int) || 
def.getBaseName().equals(IASGlobalFunctionConstants.uint)))
+                    {
+                           startMapping(node.getNewKeywordNode());
+                           writeToken(ASEmitterTokens.NEW);
+                           endMapping(node.getNewKeywordNode());
+                    }
                 }
                 else
                 {
@@ -114,8 +118,24 @@ public class FunctionCallEmitter extends JSSubEmitter 
implements ISubEmitter<IFu
                 if (def instanceof ClassDefinition)
                 {
                     startMapping(nameNode);
-                    
write(getEmitter().formatQualifiedName(def.getQualifiedName()));
-                    endMapping(nameNode);
+                    boolean isInt = 
def.getBaseName().equals(IASGlobalFunctionConstants._int);
+                    if (isInt || 
def.getBaseName().equals(IASGlobalFunctionConstants.uint))
+                    {
+                        ICompilerProject project = this.getProject();
+                        if (project instanceof FlexJSProject)
+                            ((FlexJSProject) project).needLanguage = true;
+                        write(JSFlexJSEmitterTokens.LANGUAGE_QNAME);
+                        write(ASEmitterTokens.MEMBER_ACCESS);
+                        if (isInt)
+                            write(JSFlexJSEmitterTokens.UNDERSCORE);
+                        write(def.getQualifiedName());
+                        endMapping(nameNode);
+                    }
+                    else
+                    {
+                           
write(getEmitter().formatQualifiedName(def.getQualifiedName()));
+                           endMapping(nameNode);
+                    }
                 }
                 else
                 {

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/680c335c/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalClasses.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalClasses.java
 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalClasses.java
index 2527073..701fe1e 100644
--- 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalClasses.java
+++ 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalClasses.java
@@ -160,6 +160,23 @@ public class TestFlexJSGlobalClasses extends 
TestGoogGlobalClasses
     }
 
     @Test
+    public void testInt()
+    {
+        IVariableNode node = getVariable("var a:int = new int(\"123\");");
+        asBlockWalker.visitVariable(node);
+        assertOut("var /** @type {number} */ a = 
org.apache.flex.utils.Language._int(\"123\")");
+    }
+
+    @Override
+    @Test
+    public void testUint()
+    {
+        IVariableNode node = getVariable("var a:uint = new uint(-100);");
+        asBlockWalker.visitVariable(node);
+        assertOut("var /** @type {number} */ a = 
org.apache.flex.utils.Language.uint(-100)");
+    }
+
+    @Test
     public void testIntConstMaxValue()
     {
         IVariableNode node = getVariable("var a:Number = int.MAX_VALUE");

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/680c335c/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalFunctions.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalFunctions.java
 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalFunctions.java
index 578ecfc..66397d8 100644
--- 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalFunctions.java
+++ 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalFunctions.java
@@ -126,6 +126,14 @@ public class TestFlexJSGlobalFunctions extends 
TestGoogGlobalFunctions
         assertOut("var /** @type {number} */ a = 
org.apache.flex.utils.Language._int(1.8)");
     }
 
+    @Test
+    public void testIntWithString()
+    {
+        IVariableNode node = getVariable("var a:int = int(\"123\");");
+        asBlockWalker.visitVariable(node);
+        assertOut("var /** @type {number} */ a = 
org.apache.flex.utils.Language._int(\"123\")");
+    }
+
     @Override
     @Test
     public void testTrace()

Reply via email to