This is an automated email from the ASF dual-hosted git repository.

joshtynjala pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git


The following commit(s) were added to refs/heads/develop by this push:
     new 8461535  playerglobal-source-gen: constructors for built-ins should be 
forced to be optional
8461535 is described below

commit 846153597d83ef6e43585c74d274c719104c6640
Author: Josh Tynjala <[email protected]>
AuthorDate: Thu Feb 18 16:02:39 2021 -0800

    playerglobal-source-gen: constructors for built-ins should be forced to be 
optional
---
 .../apache/royale/playerglobal/PlayerglobalSourceGen.java | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git 
a/playerglobal-source-gen/src/main/java/org/apache/royale/playerglobal/PlayerglobalSourceGen.java
 
b/playerglobal-source-gen/src/main/java/org/apache/royale/playerglobal/PlayerglobalSourceGen.java
index 4da3a3d..b24a11d 100644
--- 
a/playerglobal-source-gen/src/main/java/org/apache/royale/playerglobal/PlayerglobalSourceGen.java
+++ 
b/playerglobal-source-gen/src/main/java/org/apache/royale/playerglobal/PlayerglobalSourceGen.java
@@ -70,6 +70,8 @@ class PlayerglobalSourceGen {
        //From the docs: Methods of the Object class are dynamically created on 
Object's prototype.
        private static final List<String> OBJECT_PROTOTYPE_METHODS = 
Arrays.asList("hasOwnProperty", "isPrototypeOf",
                        "propertyIsEnumerable", "setPropertyIsEnumerable", 
"toString", "toLocaleString", "valueOf");
+       private static final List<String> ANY_CONSTRUCTORS = 
Arrays.asList("Boolean", "Date", "int", "Number", "RegExp",
+                       "String", "uint", "XML", "XMLList");
        private static final List<String> XML_ANY_METHODS = 
Arrays.asList("addNamespace", "appendChild", "attribute",
                        "child", "contains", "descendants", "elements", 
"insertChildAfter", "insertChildBefore", "namespace",
                        "prependChild", "processingInstructions", 
"removeNamespace", "replace", "setChildren", "setName",
@@ -966,6 +968,13 @@ class PlayerglobalSourceGen {
                }
        }
 
+       private boolean isConstructorThatNeedsParamsTypedAsAny(String 
contextClassName, String contextFunctionName) {
+               if (!contextFunctionName.equals(contextClassName)) {
+                       return false;
+               }
+               return ANY_CONSTRUCTORS.contains(contextFunctionName);
+       }
+
        private boolean isXMLMethodThatNeedsParamsTypedAsAny(String 
contextClassName, String contextFunctionName) {
                if (!"XML".equals(contextClassName) && 
!"XMLList".equals(contextClassName)) {
                        return false;
@@ -975,8 +984,8 @@ class PlayerglobalSourceGen {
 
        private void parseParameters(List<Element> apiParamElements, String 
contextClassName, String contextFunctionName,
                        StringBuilder functionBuilder) throws Exception {
-               boolean isXMLConstructor = ("XML".equals(contextClassName) && 
"XML".equals(contextFunctionName))
-                               || ("XMLList".equals(contextClassName) && 
"XMLList".equals(contextFunctionName));
+               boolean forceOptionalConstructor = 
isConstructorThatNeedsParamsTypedAsAny(contextClassName,
+                               contextFunctionName);
                boolean forceAnyType = 
isXMLMethodThatNeedsParamsTypedAsAny(contextClassName, contextFunctionName);
                for (int i = 0; i < apiParamElements.size(); i++) {
                        if (i > 0) {
@@ -997,7 +1006,7 @@ class PlayerglobalSourceGen {
                                throw new Exception("apiItemName not found");
                        }
                        
functionBuilder.append(apiItemNameElement.getTextTrim());
-                       if (isXMLConstructor) {
+                       if (forceOptionalConstructor) {
                                //workaround for missing data in asdoc dita
                                functionBuilder.append(":* = null");
                        } else {

Reply via email to