You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ha...@apache.org on 2021/12/27 10:04:02 UTC

[royale-compiler] branch feature/ROYALE_INTERFACE_INFO updated: Added dynamic access exceptions

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

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


The following commit(s) were added to refs/heads/feature/ROYALE_INTERFACE_INFO by this push:
     new 6c1bd52  Added dynamic access exceptions
6c1bd52 is described below

commit 6c1bd52f8942bff982b09ffcbc7e33dffeb51dfd
Author: Harbs <ha...@in-tools.com>
AuthorDate: Mon Dec 27 12:03:46 2021 +0200

    Added dynamic access exceptions
---
 .../internal/codegen/js/jx/MemberAccessEmitter.java      | 14 ++++++++++++++
 .../codegen/js/jx/ObjectLiteralValuePairEmitter.java     | 16 ++++++++++++++++
 2 files changed, 30 insertions(+)

diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/MemberAccessEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/MemberAccessEmitter.java
index 60bbe8c..fa425a7 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/MemberAccessEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/MemberAccessEmitter.java
@@ -548,6 +548,20 @@ public class MemberAccessEmitter extends JSSubEmitter implements
 							break;
 						}
 					}
+					// Special cases to avoid dynamic access
+					if(emitDynamicAccess)
+					{
+						switch(identifierNode.getName())
+						{
+							case "ROYALE_CLASS_INFO":
+     					case "ROYALE_INTERFACE_INFO":
+    					case "ROYALE_REFLECTION_INFO":
+								emitDynamicAccess = false;
+								break;
+							default:
+								break;
+						}
+					}
 				}
 			}
 			if (emitDynamicAccess)
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/ObjectLiteralValuePairEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/ObjectLiteralValuePairEmitter.java
index 5b69f79..d740f5b 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/ObjectLiteralValuePairEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/ObjectLiteralValuePairEmitter.java
@@ -55,6 +55,22 @@ public class ObjectLiteralValuePairEmitter extends JSSubEmitter implements
         }
 
         IExpressionNode nameNode = node.getNameNode();
+        // First check for special cases
+        if(dynamicAccessUnknownMembers && nameNode instanceof IIdentifierNode)
+        {
+            IIdentifierNode identifierNode = (IIdentifierNode) nameNode;
+            switch(identifierNode.getName())
+            {
+                case "ROYALE_CLASS_INFO":
+                case "ROYALE_INTERFACE_INFO":
+                case "ROYALE_REFLECTION_INFO":
+                    dynamicAccessUnknownMembers = false;
+                    break;
+                default:
+                    break;
+
+            }
+        }
         if(dynamicAccessUnknownMembers && nameNode instanceof IIdentifierNode)
         {
             IIdentifierNode identifierNode = (IIdentifierNode) nameNode;