You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by jo...@apache.org on 2016/04/20 01:36:35 UTC

[1/4] git commit: [flex-falcon] [refs/heads/develop] - externc: add ability to handle methods declared without = function() by detecting if param or returns JSDoc is present

Repository: flex-falcon
Updated Branches:
  refs/heads/develop e6409b279 -> 15e753a7c


externc: add ability to handle methods declared without = function() by detecting if param or returns JSDoc is present


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

Branch: refs/heads/develop
Commit: 4ed67a8fed775a92d0d7dcd998aabbb2f7fd10fd
Parents: e6409b2
Author: Josh Tynjala <jo...@apache.org>
Authored: Tue Apr 19 16:06:22 2016 -0700
Committer: Josh Tynjala <jo...@apache.org>
Committed: Tue Apr 19 16:06:22 2016 -0700

----------------------------------------------------------------------
 .../codegen/externals/pass/AddMemberPass.java   | 43 +++++++++++++++++++-
 .../externals/reference/MethodReference.java    | 33 ++++++++++++++-
 .../externals/reference/ParameterReference.java |  6 +++
 .../codegen/externals/utils/FunctionUtils.java  |  2 +-
 4 files changed, 81 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/4ed67a8f/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/pass/AddMemberPass.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/pass/AddMemberPass.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/pass/AddMemberPass.java
index 8379af9..9308ff0 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/pass/AddMemberPass.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/pass/AddMemberPass.java
@@ -23,6 +23,7 @@ import org.apache.flex.compiler.internal.codegen.externals.reference.ReferenceMo
 
 import com.google.javascript.jscomp.AbstractCompiler;
 import com.google.javascript.jscomp.NodeTraversal;
+import com.google.javascript.rhino.JSDocInfo;
 import com.google.javascript.rhino.Node;
 
 public class AddMemberPass extends AbstractCompilerPass
@@ -80,7 +81,19 @@ public class AddMemberPass extends AbstractCompilerPass
                 }
                 else if (first.isGetProp())
                 {
-                    visitGetProp(t, first);
+                    JSDocInfo jsDocInfo = first.getJSDocInfo();
+                    if (jsDocInfo != null
+                        && (jsDocInfo.getParameterCount() > 0
+                            || jsDocInfo.getReturnType() != null))
+                    {
+                        // instance or static method that isn't declared as a
+                        // function, but has @param or @returns
+                        visitMethodFromJSDoc(t, first);
+                    }
+                    else
+                    {
+                        visitGetProp(t, first);
+                    }
                 }
             }
         }
@@ -119,6 +132,34 @@ public class AddMemberPass extends AbstractCompilerPass
             log(n);
         }
     }
+    private void visitMethodFromJSDoc(NodeTraversal t, Node n)
+    {
+        String qName = n.getQualifiedName();
+
+        if (n.isGetProp())
+        {
+            int protoType = qName.indexOf(".prototype.");
+            if (protoType != -1)
+            {
+                String className = qName.substring(0, protoType);
+                String memberName = qName.substring(protoType + 11,
+                        qName.length());
+                model.addMethod(n, className, memberName);
+            }
+            else
+            {
+                String className = qName.substring(0, qName.lastIndexOf("."));
+                String memberName = qName.substring(qName.lastIndexOf(".") + 1,
+                        qName.length());
+                model.addStaticMethod(n, className, memberName);
+            }
+        }
+        else if (n.isName())
+        {
+            err("visitMethod() non impl");
+            log(n);
+        }
+    }
 
     private void visitGetProp(NodeTraversal t, Node n)
     {

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/4ed67a8f/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/MethodReference.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/MethodReference.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/MethodReference.java
index 96aa9f2..6cfbadf 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/MethodReference.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/MethodReference.java
@@ -28,6 +28,7 @@ import org.apache.flex.compiler.internal.codegen.externals.utils.FunctionUtils;
 
 import com.google.common.collect.Lists;
 import com.google.javascript.rhino.JSDocInfo;
+import com.google.javascript.rhino.JSTypeExpression;
 import com.google.javascript.rhino.Node;
 import com.google.javascript.rhino.jstype.JSType;
 
@@ -122,6 +123,20 @@ public class MethodReference extends MemberReference
                 parameters.add(parameterReference);
             }
         }
+        else if(comment.getParameterCount() > 0 || comment.getReturnType() != null)
+        {
+            for (int i = 0; i < comment.getParameterCount(); i++)
+            {
+                String parameterName = comment.getParameterNameAt(i);
+                String qualifiedName = FunctionUtils.toParameterType(this, parameterName);
+                ParameterReference parameterReference = new ParameterReference(getModel(), parameterName, qualifiedName);
+                parameters.add(parameterReference);
+            }
+        }
+        else
+        {
+            System.out.println(getQualifiedName() + " parameters not found! " + " " + comment.getParameterCount());
+        }
     }
 
     @Override
@@ -300,7 +315,23 @@ public class MethodReference extends MemberReference
 
     private String toParameterString()
     {
-        return FunctionUtils.toParameterString(getContext(), getContext().getComment(), paramNode, outputJS);
+        if (paramNode != null)
+        {
+            return FunctionUtils.toParameterString(getContext(), getContext().getComment(), paramNode, outputJS);
+        }
+        StringBuilder sb = new StringBuilder();
+        sb.append("(");
+        int len = comment.getParameterCount();
+        for (int i = 0; i < len; i++)
+        {
+            String parameterName = comment.getParameterNameAt(i);
+            JSTypeExpression parameterType = comment.getParameterType(i);
+            sb.append(FunctionUtils.toParameter(getContext(), comment, parameterName, parameterType, outputJS));
+            if (i < len - 1)
+                sb.append(", ");
+        }
+        sb.append(")");
+        return sb.toString();
     }
 
     public boolean isOverride()

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/4ed67a8f/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/ParameterReference.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/ParameterReference.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/ParameterReference.java
index 4823873..30d7c15 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/ParameterReference.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/externals/reference/ParameterReference.java
@@ -35,6 +35,12 @@ public class ParameterReference extends BaseReference
         name = node.getString();
     }
 
+    public ParameterReference(final ReferenceModel model, final String name, final String qualifiedName)
+    {
+        super(model, null, qualifiedName, null);
+        this.name = name;
+    }
+
     public ParameterReference(final ReferenceModel model, final Node parameterNode)
     {
         this(model, parameterNode, "Object");

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/4ed67a8f/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 473e42c..f384689 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
@@ -154,7 +154,7 @@ public class FunctionUtils
         return canImport;
     }
 
-    private static String toParameter(BaseReference reference, JSDocInfo comment, String paramName,
+    public static String toParameter(BaseReference reference, JSDocInfo comment, String paramName,
             JSTypeExpression parameterType, boolean outputJS)
     {
         final StringBuilder sb = new StringBuilder();


[2/4] git commit: [flex-falcon] [refs/heads/develop] - externs/node: updated configuration files to build without error based on the recent changes to externc

Posted by jo...@apache.org.
externs/node: updated configuration files to build without error based on the recent changes to externc


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

Branch: refs/heads/develop
Commit: 36b65ef6695058e0bcede897ce063046568a5aff
Parents: 4ed67a8
Author: Josh Tynjala <jo...@apache.org>
Authored: Tue Apr 19 16:12:32 2016 -0700
Committer: Josh Tynjala <jo...@apache.org>
Committed: Tue Apr 19 16:12:32 2016 -0700

----------------------------------------------------------------------
 externs/node/compile-config.xml      |  2 +-
 externs/node/node-compile-config.xml | 14 +++++++-------
 2 files changed, 8 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/36b65ef6/externs/node/compile-config.xml
----------------------------------------------------------------------
diff --git a/externs/node/compile-config.xml b/externs/node/compile-config.xml
index 564ba44..91df9e3 100644
--- a/externs/node/compile-config.xml
+++ b/externs/node/compile-config.xml
@@ -33,7 +33,7 @@
     </compiler>
     
     <include-sources>
-        <path-element>out/as/constants</path-element>
+        <!--<path-element>out/as/constants</path-element>-->
         <path-element>out/as/classes</path-element>
         <path-element>out/as/functions</path-element>
         <path-element>out/as/typedefs</path-element>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/36b65ef6/externs/node/node-compile-config.xml
----------------------------------------------------------------------
diff --git a/externs/node/node-compile-config.xml b/externs/node/node-compile-config.xml
index c0a3e50..aa97477 100644
--- a/externs/node/node-compile-config.xml
+++ b/externs/node/node-compile-config.xml
@@ -33,11 +33,11 @@
     <external>
         <path-element>missing.js</path-element>
         <path-element>externs/assert.js</path-element>
-        <path-element>externs/buffer.js</path-element>
-        <path-element>externs/child_process.js</path-element>
-        <path-element>externs/cluster.js</path-element>
+        <!--<path-element>externs/buffer.js</path-element>-->
+        <!--<path-element>externs/child_process.js</path-element>-->
+        <!--<path-element>externs/cluster.js</path-element>-->
         <path-element>externs/crypto.js</path-element>
-        <path-element>externs/dgram.js</path-element>
+        <!--<path-element>externs/dgram.js</path-element>-->
         <path-element>externs/dns.js</path-element>
         <path-element>externs/domain.js</path-element>
         <path-element>externs/events.js</path-element>
@@ -48,12 +48,12 @@
         <path-element>externs/net.js</path-element>
         <path-element>externs/os.js</path-element>
         <path-element>externs/path.js</path-element>
-        <path-element>externs/punycode.js</path-element>
-        <path-element>externs/querystring.js</path-element>
+        <!--<path-element>externs/punycode.js</path-element>-->
+        <!--<path-element>externs/querystring.js</path-element>-->
         <path-element>externs/readline.js</path-element>
         <path-element>externs/repl.js</path-element>
         <path-element>externs/stream.js</path-element>
-        <path-element>externs/string_decoder.js</path-element>
+        <!--<path-element>externs/string_decoder.js</path-element>-->
         <path-element>externs/tls.js</path-element>
         <path-element>externs/tty.js</path-element>
         <path-element>externs/url.js</path-element>


[4/4] git commit: [flex-falcon] [refs/heads/develop] - externs/js: some of the excludes can now be included because externc issues have been fixed

Posted by jo...@apache.org.
externs/js: some of the excludes can now be included because externc issues have been fixed


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

Branch: refs/heads/develop
Commit: 15e753a7c70a12affeb6c8c572e20a645909a600
Parents: 2b5fb56
Author: Josh Tynjala <jo...@apache.org>
Authored: Tue Apr 19 16:36:18 2016 -0700
Committer: Josh Tynjala <jo...@apache.org>
Committed: Tue Apr 19 16:36:18 2016 -0700

----------------------------------------------------------------------
 .../codegen/externals/ExternalsTestUtils.java   | 21 --------------------
 externs/js/js-compile-config.xml                | 20 -------------------
 2 files changed, 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/15e753a7/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/externals/ExternalsTestUtils.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/externals/ExternalsTestUtils.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/externals/ExternalsTestUtils.java
index 7956e25..da0571a 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/externals/ExternalsTestUtils.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/externals/ExternalsTestUtils.java
@@ -58,31 +58,10 @@ public class ExternalsTestUtils
         config.addExclude("Date", "valueOf");
         config.addExclude("String", "valueOf");
 
-        config.addExclude("FontFaceSet", "delete");
-
-        config.addExclude("CSSStyleDeclaration", "cssText");
-        config.addExclude("CSSStyleRule", "style");
-        config.addExclude("CSSFontFaceRule", "style");
-        config.addExclude("CSSPageRule", "style");
-
-        config.addExclude("Generator", "throw");
-        config.addExclude("Generator", "return");
         config.addExclude("HTMLMenuItemElement", "default");
         config.addExclude("MessageEvent", "data"); // TODO returns T
         config.addExclude("MessageEvent", "initMessageEventNS"); // TODO param T
         config.addExclude("MessageEvent", "initMessageEvent"); // TODO param T
-        config.addExclude("MessageEvent", "default");
-        config.addExclude("Object", "is");
-        config.addExclude("Promise", "catch");
-
-        config.addExclude("IDBCursor", "continue");
-        config.addExclude("IDBCursor", "delete");
-        config.addExclude("IDBObjectStore", "delete");
-
-        // TODO method treated like field
-        config.addFieldExclude("Iterator", "next");
-        config.addExclude("Generator", "next");
-        config.addExclude("LinkStyle", "sheet");
 
         // SVG
         config.addExclude("SVGStylable", "className");

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/15e753a7/externs/js/js-compile-config.xml
----------------------------------------------------------------------
diff --git a/externs/js/js-compile-config.xml b/externs/js/js-compile-config.xml
index 2346f10..7edd1d6 100644
--- a/externs/js/js-compile-config.xml
+++ b/externs/js/js-compile-config.xml
@@ -138,31 +138,11 @@
         <class>String</class>
         <name>valueOf</name>
     </exclude>
-    <exclude><class>FontFaceSet</class><name>delete</name></exclude>
     
-    <exclude><class>CSSStyleDeclaration</class><name>cssText</name></exclude>
-    <exclude><class>CSSStyleRule</class><name>style</name></exclude>
-    <exclude><class>CSSFontFaceRule</class><name>style</name></exclude>
-    <exclude><class>CSSPageRule</class><name>style</name></exclude>
-    
-    <exclude><class>Generator</class><name>throw</name></exclude>
-    <exclude><class>Generator</class><name>return</name></exclude>
     <exclude><class>HTMLMenuItemElement</class><name>default</name></exclude>
     <exclude><class>MessageEvent</class><name>data</name></exclude><!-- TODO returns T -->
     <exclude><class>MessageEvent</class><name>initMessageEventNS</name></exclude> <!-- TODO param T -->
     <exclude><class>MessageEvent</class><name>initMessageEvent</name></exclude> <!-- TODO param T -->
-    <exclude><class>MessageEvent</class><name>default</name></exclude>
-    <exclude><class>Object</class><name>is</name></exclude>
-    <exclude><class>Promise</class><name>catch</name></exclude>
-    
-    <exclude><class>IDBCursor</class><name>continue</name></exclude>
-    <exclude><class>IDBCursor</class><name>delete</name></exclude>
-    <exclude><class>IDBObjectStore</class><name>delete</name></exclude>
-    
-    <!-- TODO method treated like field -->
-    <field-exclude><class>Iterator</class><field>next</field></field-exclude>
-    <exclude><class>Generator</class><name>next</name></exclude>
-    <exclude><class>LinkStyle</class><name>sheet</name></exclude>
     
     <!-- SVG -->
     <exclude><class>SVGStylable</class><name>className</name></exclude>


[3/4] git commit: [flex-falcon] [refs/heads/develop] - externc: hasTemplate() and containsTemplate() in FunctionUtils updated to grab templates from the parent class too

Posted by jo...@apache.org.
externc: hasTemplate() and containsTemplate() in FunctionUtils updated to grab templates from the parent class too


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

Branch: refs/heads/develop
Commit: 2b5fb56f147f927c638e3643d954ce4586a35b79
Parents: 36b65ef
Author: Josh Tynjala <jo...@apache.org>
Authored: Tue Apr 19 16:29:57 2016 -0700
Committer: Josh Tynjala <jo...@apache.org>
Committed: Tue Apr 19 16:29:57 2016 -0700

----------------------------------------------------------------------
 .../codegen/externals/utils/FunctionUtils.java  | 38 +++++++++++++++-----
 1 file changed, 30 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/2b5fb56f/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 f384689..5a9b658 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
@@ -21,6 +21,7 @@ package org.apache.flex.compiler.internal.codegen.externals.utils;
 
 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.MemberReference;
 import org.apache.flex.compiler.internal.codegen.externals.reference.ReferenceModel;
 
 import com.google.common.base.Strings;
@@ -214,19 +215,40 @@ public class FunctionUtils
 
     public static boolean hasTemplate(BaseReference reference)
     {
+        if(reference instanceof MemberReference)
+        {
+            MemberReference memberRef = (MemberReference) reference;
+            if(memberRef.getClassReference().getComment().getTemplateTypeNames().size() > 0)
+            {
+                return true;
+            }
+        }
         return reference.getComment().getTemplateTypeNames().size() > 0;
     }
     
     public static boolean containsTemplate(BaseReference reference, String name)
     {
-    	for (String template : reference.getComment().getTemplateTypeNames())
-    	{
-    		if (name.contains("<" + template + ">"))
-    			return true;
-    		if (name.equals(template))
-    			return true;
-    	}
-    	return false;
+        if(reference instanceof MemberReference)
+        {
+            MemberReference memberRef = (MemberReference) reference;
+            if(commentContainsTemplate(memberRef.getClassReference().getComment(), name))
+            {
+                return true;
+            }
+        }
+        return commentContainsTemplate(reference.getComment(), name);
+    }
+    
+    private static boolean commentContainsTemplate(JSDocInfo comment, String name)
+    {
+        for (String template : comment.getTemplateTypeNames())
+        {
+            if (name.contains("<" + template + ">"))
+                return true;
+            if (name.equals(template))
+                return true;
+        }
+        return false;
     }
 
 }