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;