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 2015/12/09 22:47:38 UTC

[4/6] git commit: [flex-falcon] [refs/heads/develop] - fix up externs output

fix up externs output


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

Branch: refs/heads/develop
Commit: 808fd1601a0228883b06d061d0f6bd101888284e
Parents: a3f2b1f
Author: Alex Harui <ah...@apache.org>
Authored: Wed Dec 9 13:34:47 2015 -0800
Committer: Alex Harui <ah...@apache.org>
Committed: Wed Dec 9 13:34:47 2015 -0800

----------------------------------------------------------------------
 .../externals/reference/BaseReference.java      | 16 +++++++-
 .../externals/reference/ClassReference.java     | 40 ++++++++++++--------
 .../externals/reference/FieldReference.java     |  2 +-
 .../codegen/externals/utils/FunctionUtils.java  |  4 +-
 4 files changed, 43 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/808fd160/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/BaseReference.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/BaseReference.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/BaseReference.java
index 60191ff..aaf5479 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/BaseReference.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/BaseReference.java
@@ -198,6 +198,15 @@ public abstract class BaseReference
         emitReturns(sb);
     }
 
+    protected String mapBackToJS(String t)
+    {
+    	if (t.contains("String")) return t.replace("String", "string");
+    	if (t.contains("Number")) return t.replace("Number", "number");
+    	if (t.contains("Boolean")) return t.replace("Boolean", "boolean");
+    	if (t.contains("object")) return t.replace("object", "Object");
+    	return t;
+    }
+    
     protected void emitParams(StringBuilder sb)
     {
         Set<String> parameterNames = getComment().getParameterNames();
@@ -212,7 +221,7 @@ public abstract class BaseReference
             if (outputJS && parameterType != null)
             {
                 sb.append("{");
-                sb.append(getModel().evaluate(parameterType).toAnnotationString());
+                sb.append(mapBackToJS(getModel().evaluate(parameterType).toAnnotationString()));
                 sb.append("}");
                 sb.append(" ");            	
             }
@@ -243,7 +252,10 @@ public abstract class BaseReference
                 sb.append(indent);
                 sb.append(" * @returns ");
                 sb.append("{");
-                sb.append(getModel().evaluate(returnType).toAnnotationString());
+                if (outputJS)
+                    sb.append(mapBackToJS(getModel().evaluate(returnType).toAnnotationString()));
+                else
+                	sb.append(getModel().evaluate(returnType).toAnnotationString());
                 sb.append("} ");
                 String description = getComment().getReturnDescription();
                 if (description != null)

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/808fd160/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 659180d..b3aa35b 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
@@ -288,6 +288,8 @@ public class ClassReference extends BaseReference
 
     }
 
+    private static List<String> definedPackages = new ArrayList<String>();
+    
     @Override
     public void emit(StringBuilder sb)
     {
@@ -300,21 +302,25 @@ public class ClassReference extends BaseReference
         	sb.append("/** @fileoverview Auto-generated Externs files\n * @externs\n */\n");
         	if (!packageName.isEmpty())
         	{
-        		String[] pieces = packageName.split("\\.");
-        		String chain = "";
-        		int n = pieces.length;
-        		for (int i = 0; i < n - 1; i++)
-        		{
-        			String piece = pieces[i];
-                	sb.append("\n");
-                	sb.append("\n");
-        			sb.append("/** @const */\n");
-        			if (chain.isEmpty())
-        				sb.append("var " + piece + " = {};\n");
-        			else
-        				sb.append(chain + "." + piece + " = {}\n");
-        			chain = chain + "." + piece;
-        		}
+            	if (!definedPackages.contains(packageName))
+	        	{
+            		definedPackages.add(packageName);
+	        		String[] pieces = packageName.split("\\.");
+	        		String chain = "";
+	        		int n = pieces.length;
+	        		for (int i = 0; i < n; i++)
+	        		{
+	        			String piece = pieces[i];
+	                	sb.append("\n");
+	                	sb.append("\n");
+	        			sb.append("/**\n * @const\n * @suppress {duplicate|const} */\n");
+	        			if (chain.isEmpty())
+	        				sb.append("var " + piece + " = {};\n\n\n");
+	        			else
+	        				sb.append(chain + "." + piece + " = {}\n\n\n");
+	        			chain = chain + "." + piece;
+	        		}
+	        	}
         	}
         }
         else
@@ -698,6 +704,10 @@ public class ClassReference extends BaseReference
     protected void emitCommentBody(StringBuilder sb)
     {
     	super.emitCommentBody(sb);
+		if (isInterface())
+			sb.append(" * @interface\n");
+		else
+			sb.append(" * @constructor ");
         if (getComment().hasBaseType())
         {
             emitSuperClass(sb);

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/808fd160/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/FieldReference.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/FieldReference.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/FieldReference.java
index 4ded9de..226cb19 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/FieldReference.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/FieldReference.java
@@ -242,7 +242,7 @@ public class FieldReference extends MemberReference
                 sb.append(indent);
                 sb.append(" * @type ");
                 sb.append("{");
-                sb.append(getModel().evaluate(type).toAnnotationString());
+                sb.append(mapBackToJS(getModel().evaluate(type).toAnnotationString()));
                 sb.append("} ");
                 sb.append("\n");
         	}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/808fd160/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/utils/FunctionUtils.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/utils/FunctionUtils.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/utils/FunctionUtils.java
index 4b2885b..d516b1c 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/utils/FunctionUtils.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/utils/FunctionUtils.java
@@ -164,7 +164,9 @@ public class FunctionUtils
         if (parameterType == null)
         {
         	System.out.println("no parameter type for " + paramName + " " + reference.getQualifiedName());
-            paramType = "Object";        	
+            paramType = "Object";
+            if (outputJS)
+            	sb.append(paramName);
         }
         else if (parameterType.isVarArgs())
         {