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())
{