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);
