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

commit 70c1c9a610da2518634515f759240f3f413775ef
Author: Josh Tynjala <[email protected]>
AuthorDate: Thu Feb 18 12:49:00 2021 -0800

    playerglobal-source-gen: fix issue where XML/XMLList methods should accept 
* instead of a specific type
    
    The docs here are wrong and don't match the compiler behavior
---
 .../apache/royale/playerglobal/PlayerglobalSourceGen.java | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

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 88f1449..5d0ae34 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
@@ -67,6 +67,10 @@ class PlayerglobalSourceGen {
        }
 
        private static final List<String> VECTOR_SUFFIXES = 
Arrays.asList("$double", "$int", "$uint", "$object");
+       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",
+                       "setNamespace");
 
        private File sourceFolder;
        private File targetFolder;
@@ -958,10 +962,18 @@ class PlayerglobalSourceGen {
                }
        }
 
+       private boolean isXMLMethodThatNeedsParamsTypedAsAny(String 
contextClassName, String contextFunctionName) {
+               if (!"XML".equals(contextClassName) && 
!"XMLList".equals(contextClassName)) {
+                       return false;
+               }
+               return XML_ANY_METHODS.contains(contextFunctionName);
+       }
+
        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 forceAnyType = 
isXMLMethodThatNeedsParamsTypedAsAny(contextClassName, contextFunctionName);
                for (int i = 0; i < apiParamElements.size(); i++) {
                        if (i > 0) {
                                functionBuilder.append(", ");
@@ -990,6 +1002,9 @@ class PlayerglobalSourceGen {
                                        paramType = 
apiOperationClassifierElement.getTextTrim();
                                        paramType = paramType.replace(":", ".");
                                }
+                               if (forceAnyType) {
+                                       paramType = "*";
+                               }
                                if (paramType != null) {
                                        functionBuilder.append(":");
                                        functionBuilder.append(paramType);

Reply via email to