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 bf016f17cdd67b0cd8ce40fdfc3ffb27f7292e6d
Author: Josh Tynjala <joshtynj...@apache.org>
AuthorDate: Tue Mar 16 14:06:38 2021 -0700

    playerglobalc: constants that should be read/write variables
---
 .../org/apache/royale/compiler/clients/PLAYERGLOBALC.java   | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git 
a/compiler-playerglobalc/src/main/java/org/apache/royale/compiler/clients/PLAYERGLOBALC.java
 
b/compiler-playerglobalc/src/main/java/org/apache/royale/compiler/clients/PLAYERGLOBALC.java
index d164b41..bfb13b9 100644
--- 
a/compiler-playerglobalc/src/main/java/org/apache/royale/compiler/clients/PLAYERGLOBALC.java
+++ 
b/compiler-playerglobalc/src/main/java/org/apache/royale/compiler/clients/PLAYERGLOBALC.java
@@ -76,6 +76,10 @@ class PLAYERGLOBALC implements FlexTool {
                GLOBAL_CONSTANTS.put("NaN", "0 / 0");
                GLOBAL_CONSTANTS.put("undefined", "void 0");
        }
+       private static final Map<String, List<String>> WRITABLE_VARIABLES = new 
HashMap<String, List<String>>();
+       {
+               WRITABLE_VARIABLES.put("flash.external.ExternalInterface", 
Arrays.asList("marshallExceptions"));
+       }
        private static final Map<String, List<String>> REST_METHODS = new 
HashMap<String, List<String>>();
        {
                REST_METHODS.put("Array", Arrays.asList("splice"));
@@ -685,7 +689,7 @@ class PLAYERGLOBALC implements FlexTool {
 
                boolean isGetter = false;
                boolean isSetter = false;
-               boolean isConst = true;
+               boolean isConst = 
!isVariableThatShouldBeWritable(contextClassName, variableName);
                boolean isStatic = false;
                boolean isOverride = false;
                String variableType = "*";
@@ -1173,6 +1177,13 @@ class PLAYERGLOBALC implements FlexTool {
                return 
ANY_VARIABLES.get(contextClassName).contains(contextVariableName);
        }
 
+       private boolean isVariableThatShouldBeWritable(String contextClassName, 
String contextVariableName) {
+               if (!WRITABLE_VARIABLES.containsKey(contextClassName)) {
+                       return false;
+               }
+               return 
WRITABLE_VARIABLES.get(contextClassName).contains(contextVariableName);
+       }
+
        private void parseParameters(List<Element> apiParamElements, String 
contextClassName, String contextFunctionName,
                        StringBuilder functionBuilder) throws Exception {
                boolean forceOptionalConstructor = 
isConstructorThatNeedsParamsTypedAsAny(contextClassName,

Reply via email to