You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ms...@apache.org on 2015/06/26 14:45:48 UTC

git commit: [flex-falcon] [refs/heads/develop] - Refactored JSTypeUtils.

Repository: flex-falcon
Updated Branches:
  refs/heads/develop b0963ce5d -> 44eaace85


Refactored JSTypeUtils.


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

Branch: refs/heads/develop
Commit: 44eaace85753ab55190381439ff3187faef2fe12
Parents: b0963ce
Author: Michael Schmalle <ms...@apache.org>
Authored: Fri Jun 26 08:45:31 2015 -0400
Committer: Michael Schmalle <ms...@apache.org>
Committed: Fri Jun 26 08:45:31 2015 -0400

----------------------------------------------------------------------
 .../externals/reference/ClassReference.java     |   3 +-
 .../codegen/externals/utils/JSTypeUtils.java    | 283 +++++++------------
 2 files changed, 104 insertions(+), 182 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/44eaace8/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/ClassReference.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/ClassReference.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/ClassReference.java
index dd8e49e..692d759 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/ClassReference.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/ClassReference.java
@@ -693,8 +693,7 @@ public class ClassReference extends BaseReference
     private void emitSuperClass(StringBuilder sb)
     {
         sb.append("extends ");
-        String value = JSTypeUtils.toTypeJsType(getModel(),
-                getComment().getBaseType()).toString();
+        String value = JSTypeUtils.toClassTypeString(this);
         sb.append(value);
     }
 

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/44eaace8/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/utils/JSTypeUtils.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/utils/JSTypeUtils.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/utils/JSTypeUtils.java
index be0154e..e351870 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/utils/JSTypeUtils.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/utils/JSTypeUtils.java
@@ -22,6 +22,7 @@ package org.apache.flex.compiler.internal.codegen.externals.utils;
 import java.util.HashMap;
 
 import org.apache.flex.compiler.internal.codegen.externals.reference.BaseReference;
+import org.apache.flex.compiler.internal.codegen.externals.reference.ClassReference;
 import org.apache.flex.compiler.internal.codegen.externals.reference.ConstantReference;
 import org.apache.flex.compiler.internal.codegen.externals.reference.ReferenceModel;
 
@@ -31,207 +32,81 @@ import com.google.javascript.rhino.jstype.UnionType;
 
 public class JSTypeUtils
 {
-    public static String toParamTypeString(BaseReference reference,
-            String paramName)
+    public static String toClassTypeString(ClassReference reference)
     {
-        String type = "Object";
-
-        JSTypeExpression paramType = reference.getComment().getParameterType(
-                paramName);
-
-        if (paramType != null)
-        {
-            JSType jsType = JSTypeUtils.toParamJsType(reference.getModel(),
-                    paramType);
-            //System.err.println(jsType);
-
-            if (jsType != null)
-            {
-                type = jsType.toString();
-
-                if (jsType.isFunctionType())
-                {
-                    return "Function /* " + type + " */";
-                }
-                else if (jsType.isRecordType())
-                {
-                    return "Object /* " + type + " */";
-                }
-                else
-                {
-                    if (type.indexOf("Array<") == 0)
-                    {
-                        return "Array";
-                    }
-                    else if (type.indexOf("Object<") == 0)
-                    {
-                        return "Object";
-                    }
-                }
-
-            }
-            else
-            {
-                return "Object"; // TemplateType
-            }
-        }
-
-        type = transformParamType(type);
-
+        String type = getJsType(reference.getModel(),
+                reference.getComment().getBaseType()).toString();
         return type;
     }
 
-    private static JSType toParamJsType(ReferenceModel model,
-            JSTypeExpression typeExpression)
+    public static String toParamTypeString(BaseReference reference,
+            String paramName)
     {
-        JSType jsType = model.evaluate(typeExpression);
-
-        if (jsType.isUnionType())
-        {
-            UnionType ut = (UnionType) jsType;
-            JSType jsType2 = ut.restrictByNotNullOrUndefined();
-
-            //System.err.println(jsType2);
-
-            if (!jsType2.isUnionType())
-                jsType = jsType2;
-        }
-
-        return jsType;
-    }
+        JSTypeExpression expression = reference.getComment().getParameterType(
+                paramName);
+        if (expression == null)
+            return "Object";
 
-    public static String toConstantTypeString(ConstantReference reference)
-    {
-        JSTypeExpression typeExpression = reference.getComment().getType();
-        JSType jsType = reference.getModel().evaluate(typeExpression);
-        String type = jsType.toString();
+        String type = toTypeExpressionString(reference, expression);
         type = transformParamType(type);
+
         return type;
     }
 
     public static String toReturnTypeString(BaseReference reference)
     {
-        String type = "void";
-
-        JSTypeExpression returnType = reference.getComment().getReturnType();
-        if (returnType != null)
-        {
-
-            JSType jsType = JSTypeUtils.toReturnJsType(reference.getModel(),
-                    returnType);
-            //System.err.println(jsType);
-
-            if (jsType != null)
-            {
-                if (jsType.isRecordType())
-                    return "Object";
-
-                type = jsType.toString();
-
-                if (type.indexOf("Array<") == 0)
-                {
-                    return "Array";
-                }
-                else if (type.indexOf("Object<") == 0)
-                {
-                    return "Object";
-                }
-            }
-            else
-            {
-                return "Object"; // TemplateType
-            }
-        }
+        JSTypeExpression expression = reference.getComment().getReturnType();
+        if (expression == null)
+            return "void";
 
+        String type = toTypeExpressionString(reference, expression);
         type = transformReturnType(type);
 
         return type;
     }
 
-    private static JSType toReturnJsType(ReferenceModel model,
-            JSTypeExpression typeExpression)
+    public static String toFieldString(BaseReference reference)
     {
-        JSType jsType = model.evaluate(typeExpression);
-
-        if (jsType.isUnionType())
-        {
-            UnionType ut = (UnionType) jsType;
-            JSType jsType2 = ut.restrictByNotNullOrUndefined();
+        JSTypeExpression expression = reference.getComment().getType();
+        if (expression == null)
+            return "Object";
 
-            if (!jsType2.isUnionType())
-                jsType = jsType2;
-        }
+        String type = toTypeExpressionString(reference, expression);
+        type = transformType(type);
 
-        return jsType;
+        return type;
     }
 
-    public static String toFieldString(BaseReference reference)
+    public static String toConstantTypeString(ConstantReference reference)
     {
-        String type = "Object";
-
-        JSTypeExpression ttype = reference.getComment().getType();
-
-        if (ttype != null)
-        {
-            JSType jsType = JSTypeUtils.toTypeJsType(reference.getModel(),
-                    ttype);
-            //System.err.println(jsType);
-
-            if (jsType != null)
-            {
-                if (jsType.isUnionType())
-                {
-                    UnionType ut = (UnionType) jsType;
-                    JSType jsType2 = ut.restrictByNotNullOrUndefined();
-
-                    if (!jsType2.isUnionType())
-                        jsType = jsType2;
-                }
-
-                type = jsType.toString();
-
-                if (jsType.isFunctionType())
-                {
-                    return "Function /* " + type + " */";
-                }
-                else
-                {
-                    if (type.indexOf("Array<") == 0)
-                    {
-                        return "Array";
-                    }
-                    else if (type.indexOf("Object<") == 0)
-                    {
-                        return "Object";
-                    }
-                }
-            }
-            else
-            {
-                return "Object"; // TemplateType
-            }
-        }
+        JSTypeExpression expression = reference.getComment().getType();
+        if (expression == null)
+            return "Object";
 
+        String type = toTypeExpressionString(reference, expression);
         type = transformType(type);
 
         return type;
     }
 
-    public static JSType toTypeJsType(ReferenceModel model,
-            JSTypeExpression typeExpression)
-    {
-        JSType jsType = model.evaluate(typeExpression);
+    //--------------------------------------------------------------------------
 
-        if (jsType.isUnionType())
-        {
-            UnionType ut = (UnionType) jsType;
-            JSType jsType2 = ut.restrictByNotNullOrUndefined();
+    // XXX shouldn't be public
+    public static String transformType(String type)
+    {
+        HashMap<String, String> map = new HashMap<String, String>();
+        map.put("?", "Object /* ? */");
+        map.put("*", "*");
+        map.put("string", "String");
+        map.put("number", "Number");
+        map.put("boolean", "Boolean");
+        map.put("undefined", "Object /* undefined */");
+        map.put("null", "Object /* null */");
 
-            if (!jsType2.isUnionType())
-                jsType = jsType2;
-        }
+        if (map.containsKey(type))
+            return map.get(type);
 
-        return jsType;
+        return type;
     }
 
     // XXX These are NOT for returned types
@@ -275,22 +150,70 @@ public class JSTypeUtils
         return type;
     }
 
-    // XXX shouldn't be public
-    public static String transformType(String type)
+    private static String toTypeExpressionString(BaseReference reference,
+            JSTypeExpression expression)
     {
-        HashMap<String, String> map = new HashMap<String, String>();
-        map.put("?", "Object /* ? */");
-        map.put("*", "*");
-        map.put("string", "String");
-        map.put("number", "Number");
-        map.put("boolean", "Boolean");
-        map.put("undefined", "Object /* undefined */");
-        map.put("null", "Object /* null */");
+        String type = null;
 
-        if (map.containsKey(type))
-            return map.get(type);
+        if (expression != null)
+        {
+            JSType jsType = getJsType(reference.getModel(), expression);
+
+            if (jsType != null)
+            {
+                type = one(jsType);
+            }
+            else
+            {
+                return "Object"; // TemplateType
+            }
+        }
 
         return type;
     }
 
+    private static String one(JSType jsType)
+    {
+        String type = jsType.toString();
+
+        if (jsType.isFunctionType())
+        {
+            return "Function /* " + type + " */";
+        }
+        else if (jsType.isRecordType())
+        {
+            return "Object /* " + type + " */";
+        }
+        else
+        {
+            if (type.indexOf("Array<") == 0)
+            {
+                return "Array";
+            }
+            else if (type.indexOf("Object<") == 0)
+            {
+                return "Object";
+            }
+        }
+
+        return type;
+    }
+
+    private static JSType getJsType(ReferenceModel model,
+            JSTypeExpression typeExpression)
+    {
+        JSType jsType = model.evaluate(typeExpression);
+
+        if (jsType.isUnionType())
+        {
+            UnionType ut = (UnionType) jsType;
+            JSType jsType2 = ut.restrictByNotNullOrUndefined();
+
+            if (!jsType2.isUnionType())
+                jsType = jsType2;
+        }
+
+        return jsType;
+    }
+
 }