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 90277ffe7df1d83f9fa8f5ed3b8992d923b587d1 Author: Josh Tynjala <[email protected]> AuthorDate: Wed Mar 5 13:50:08 2025 -0800 JSRoyaleEmitterTokens: keep LANGUAGE_QNAME token separate from names of methods on that class This will allow us to manipulate/format LANGUAGE_QNAME more easily, such as if we ever support a different module system Plus, we already had function names without the class qname prepended in other tokens, so it's better to be consistent --- .../royale/compiler/internal/codegen/js/JSEmitter.java | 12 ++++++++++-- .../compiler/internal/codegen/js/jx/AsIsEmitter.java | 10 +++++++--- .../internal/codegen/js/jx/DynamicAccessEmitter.java | 2 ++ .../internal/codegen/js/jx/FunctionCallEmitter.java | 4 ++++ .../internal/codegen/js/jx/IdentifierEmitter.java | 2 ++ .../internal/codegen/js/jx/UnaryOperatorEmitter.java | 4 +++- .../internal/codegen/js/royale/JSRoyaleEmitter.java | 8 +++++++- .../codegen/js/royale/JSRoyaleEmitterTokens.java | 10 +++++----- .../codegen/mxml/royale/MXMLRoyaleASDocEmitter.java | 16 ++++++++++------ .../internal/codegen/mxml/royale/MXMLRoyaleEmitter.java | 16 ++++++++++------ 10 files changed, 60 insertions(+), 24 deletions(-) diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/JSEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/JSEmitter.java index b534c2783..a991d6af0 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/JSEmitter.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/JSEmitter.java @@ -742,6 +742,8 @@ public class JSEmitter extends ASEmitter implements IJSEmitter endMapping(assignedNode); } else { startMapping(assignedNode); + write(JSRoyaleEmitterTokens.LANGUAGE_QNAME); + write(ASEmitterTokens.MEMBER_ACCESS); write(JSRoyaleEmitterTokens.SYNTH_VECTOR); write(ASEmitterTokens.PAREN_OPEN); write(ASEmitterTokens.SINGLE_QUOTE); @@ -762,6 +764,8 @@ public class JSEmitter extends ASEmitter implements IJSEmitter && project instanceof RoyaleJSProject && ((RoyaleJSProject)project).config.getJsVectorEmulationClass() == null ){ startMapping(assignedNode); + write(JSRoyaleEmitterTokens.LANGUAGE_QNAME); + write(ASEmitterTokens.MEMBER_ACCESS); write(JSRoyaleEmitterTokens.SYNTH_VECTOR); write(ASEmitterTokens.PAREN_OPEN); //null to signify not a valid constructor @@ -895,10 +899,14 @@ public class JSEmitter extends ASEmitter implements IJSEmitter String synthCall; String synthethicType; if (NativeUtils.isVector(coercionTypeString)) { - synthCall = JSRoyaleEmitterTokens.SYNTH_VECTOR.getToken(); + synthCall = JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken() + + ASEmitterTokens.MEMBER_ACCESS.getToken() + + JSRoyaleEmitterTokens.SYNTH_VECTOR.getToken(); synthethicType = formatQualifiedName(coercionTypeString.substring(8, coercionTypeString.length() -1)); } else { - synthCall = JSRoyaleEmitterTokens.SYNTH_TYPE.getToken(); + synthCall = JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken() + + ASEmitterTokens.MEMBER_ACCESS.getToken() + + JSRoyaleEmitterTokens.SYNTH_TYPE.getToken(); synthethicType = coercionTypeString; } coercionTypeString = synthCall diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/AsIsEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/AsIsEmitter.java index 9ddea56c7..d32ef6e87 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/AsIsEmitter.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/AsIsEmitter.java @@ -185,14 +185,18 @@ public class AsIsEmitter extends JSSubEmitter { startMapping(right); if (NativeUtils.isSyntheticJSType(dnode.getQualifiedName())) { - JSRoyaleEmitterTokens langMethod; + String langMethod; String synthName; if (NativeUtils.isVector(dnode.getQualifiedName()) && dnode instanceof IAppliedVectorDefinition) { - langMethod = JSRoyaleEmitterTokens.SYNTH_VECTOR; + langMethod = JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken() + + ASEmitterTokens.MEMBER_ACCESS.getToken() + + JSRoyaleEmitterTokens.SYNTH_VECTOR.getToken(); synthName = getEmitter().formatQualifiedName(((IAppliedVectorDefinition) dnode).resolveElementType(project).getQualifiedName()); } else { //non-vector, e.g. int/uint - langMethod = JSRoyaleEmitterTokens.SYNTH_TYPE; + langMethod = JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken() + + ASEmitterTokens.MEMBER_ACCESS.getToken() + + JSRoyaleEmitterTokens.SYNTH_TYPE.getToken(); synthName = getEmitter().formatQualifiedName(dnode.getQualifiedName()); } write(langMethod); diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/DynamicAccessEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/DynamicAccessEmitter.java index 47ddcee57..9ae75e366 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/DynamicAccessEmitter.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/DynamicAccessEmitter.java @@ -125,6 +125,8 @@ public class DynamicAccessEmitter extends JSSubEmitter implements ((RoyaleJSProject) getProject()).needLanguage = true; getWalker().walk(leftOperandNode); write(ASEmitterTokens.SQUARE_OPEN); + write(JSRoyaleEmitterTokens.LANGUAGE_QNAME); + write(ASEmitterTokens.MEMBER_ACCESS); write(JSRoyaleEmitterTokens.VECTOR_INDEX_CHECK_METHOD_NAME); write(ASEmitterTokens.SQUARE_CLOSE); write(ASEmitterTokens.PAREN_OPEN); diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FunctionCallEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FunctionCallEmitter.java index 75e478d83..3d1c87f98 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FunctionCallEmitter.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FunctionCallEmitter.java @@ -154,6 +154,8 @@ public class FunctionCallEmitter extends JSSubEmitter implements ISubEmitter<IFu } else { //no 'new' output in this case, just coercion, so map from the start of 'new' startMapping(node); + write(JSRoyaleEmitterTokens.LANGUAGE_QNAME); + write(ASEmitterTokens.MEMBER_ACCESS); write(JSRoyaleEmitterTokens.SYNTH_VECTOR); write(ASEmitterTokens.PAREN_OPEN); write(ASEmitterTokens.SINGLE_QUOTE); @@ -610,6 +612,8 @@ public class FunctionCallEmitter extends JSSubEmitter implements ISubEmitter<IFu } else { //default Vector implementation startMapping(node.getNameNode()); + write(JSRoyaleEmitterTokens.LANGUAGE_QNAME); + write(ASEmitterTokens.MEMBER_ACCESS); write(JSRoyaleEmitterTokens.SYNTH_VECTOR); write(ASEmitterTokens.PAREN_OPEN); write(ASEmitterTokens.SINGLE_QUOTE); diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/IdentifierEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/IdentifierEmitter.java index 83a3ea1f0..83c70dad8 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/IdentifierEmitter.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/IdentifierEmitter.java @@ -300,6 +300,8 @@ public class IdentifierEmitter extends JSSubEmitter implements ((RoyaleJSProject)project).needLanguage = true; } getEmitter().getModel().needLanguage = true; + write(JSRoyaleEmitterTokens.LANGUAGE_QNAME); + write(ASEmitterTokens.MEMBER_ACCESS); write(JSRoyaleEmitterTokens.SYNTH_TYPE); write(ASEmitterTokens.PAREN_OPEN); write(ASEmitterTokens.SINGLE_QUOTE); diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/UnaryOperatorEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/UnaryOperatorEmitter.java index 6f9a990e5..5aedb00c3 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/UnaryOperatorEmitter.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/UnaryOperatorEmitter.java @@ -64,7 +64,9 @@ public class UnaryOperatorEmitter extends JSSubEmitter implements ((RoyaleJSProject)getProject()).needLanguage = true; } getModel().needLanguage = true; - String synthTagName = JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken() + ASEmitterTokens.MEMBER_ACCESS.getToken() + JSRoyaleEmitterTokens.ROYALE_SYNTH_TAG_FIELD_NAME.getToken(); + String synthTagName = JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken() + + ASEmitterTokens.MEMBER_ACCESS.getToken() + + JSRoyaleEmitterTokens.ROYALE_SYNTH_TAG_FIELD_NAME.getToken(); LiteralNode synthType = new LiteralNode(ILiteralNode.LiteralType.STRING, synthTagName); synthType.setSynthetic(true); DynamicAccessNode patchedVectorReference = new DynamicAccessNode(((ExpressionNodeBase)((MemberAccessExpressionNode) node.getOperandNode()).getLeftOperandNode())); diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitter.java index f93859e48..b62ca6773 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitter.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitter.java @@ -958,7 +958,9 @@ public class JSRoyaleEmitter extends JSEmitter implements IJSRoyaleEmitter || name.equals(IASLanguageConstants.uint)) result = IASLanguageConstants.Number; else if (name.equals(IASLanguageConstants.Vector) || name.equals("__AS3__.vec.Vector")) { - result = JSRoyaleEmitterTokens.VECTOR.getToken(); + result = JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken() + + ASEmitterTokens.MEMBER_ACCESS.getToken() + + JSRoyaleEmitterTokens.VECTOR.getToken(); } return result; @@ -1465,6 +1467,8 @@ public class JSRoyaleEmitter extends JSEmitter implements IJSRoyaleEmitter if (project instanceof RoyaleJSProject) ((RoyaleJSProject)project).needLanguage = true; getModel().needLanguage = true; + write(JSRoyaleEmitterTokens.LANGUAGE_QNAME); + write(ASEmitterTokens.MEMBER_ACCESS); write(JSRoyaleEmitterTokens.CLOSURE_FUNCTION_NAME); write(ASEmitterTokens.PAREN_OPEN); } @@ -1877,6 +1881,8 @@ public class JSRoyaleEmitter extends JSEmitter implements IJSRoyaleEmitter if (node instanceof TypedExpressionNode) { startMapping(node); write(ASEmitterTokens.PAREN_OPEN); + write(JSRoyaleEmitterTokens.LANGUAGE_QNAME); + write(ASEmitterTokens.MEMBER_ACCESS); write(JSRoyaleEmitterTokens.SYNTH_VECTOR); write(ASEmitterTokens.PAREN_OPEN); write(ASEmitterTokens.SINGLE_QUOTE); diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitterTokens.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitterTokens.java index 51ae49a98..8f7e4b2b6 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitterTokens.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitterTokens.java @@ -67,15 +67,15 @@ public enum JSRoyaleEmitterTokens implements IEmitterTokens GETTER_PREFIX("get__"), SETTER_PREFIX("set__"), BINDABLE_PREFIX("bindable__"), - CLOSURE_FUNCTION_NAME(LANGUAGE_QNAME.getToken() +".closure"), + CLOSURE_FUNCTION_NAME("closure"), SKIP_AS_COERCIONS("skipAsCoercions"), SKIP_FUNCTION_COERCIONS("skipFunctionCoercions"), JSX("JSX"), JS_UNSAFE_INLINE_FUNCTION_NAME("jsUnsafeNativeInline"), - VECTOR(LANGUAGE_QNAME.getToken() + ".Vector"), - SYNTH_TYPE(LANGUAGE_QNAME.getToken() + ".synthType"), - SYNTH_VECTOR(LANGUAGE_QNAME.getToken() + ".synthVector"), - VECTOR_INDEX_CHECK_METHOD_NAME(LANGUAGE_QNAME.getToken() + ".CHECK_INDEX"), + VECTOR("Vector"), + SYNTH_TYPE("synthType"), + SYNTH_VECTOR("synthVector"), + VECTOR_INDEX_CHECK_METHOD_NAME("CHECK_INDEX"), ; private String token; diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleASDocEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleASDocEmitter.java index 14d6008b0..c98b16b0b 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleASDocEmitter.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleASDocEmitter.java @@ -679,12 +679,16 @@ public class MXMLRoyaleASDocEmitter extends MXMLEmitter implements handler.isProperty = true; handler.name = "handlerFunction"; handler.parent = setEvent; - handler.value = JSRoyaleEmitterTokens.CLOSURE_FUNCTION_NAME.getToken() + ASEmitterTokens.PAREN_OPEN.getToken() + - ASEmitterTokens.THIS.getToken() + ASEmitterTokens.MEMBER_ACCESS.getToken() + eventHandler + - ASEmitterTokens.COMMA.getToken() + ASEmitterTokens.SPACE.getToken() + ASEmitterTokens.THIS.getToken() + - ASEmitterTokens.COMMA.getToken() + ASEmitterTokens.SPACE.getToken() + ASEmitterTokens.SINGLE_QUOTE.getToken() + - eventHandler + ASEmitterTokens.SINGLE_QUOTE.getToken() + - ASEmitterTokens.PAREN_CLOSE.getToken(); + handler.value = JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken() + + ASEmitterTokens.MEMBER_ACCESS.getToken() + + JSRoyaleEmitterTokens.CLOSURE_FUNCTION_NAME.getToken() + + ASEmitterTokens.PAREN_OPEN.getToken() + + ASEmitterTokens.THIS.getToken() + + ASEmitterTokens.MEMBER_ACCESS.getToken() + + eventHandler + ASEmitterTokens.COMMA.getToken() + ASEmitterTokens.SPACE.getToken() + + ASEmitterTokens.THIS.getToken() + ASEmitterTokens.COMMA.getToken() + ASEmitterTokens.SPACE.getToken() + + ASEmitterTokens.SINGLE_QUOTE.getToken() + eventHandler + ASEmitterTokens.SINGLE_QUOTE.getToken() + + ASEmitterTokens.PAREN_CLOSE.getToken(); setEvent.propertySpecifiers.add(handler); inStatesOverride = false; diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java index f97e80f45..df98f5cb6 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java @@ -2822,12 +2822,16 @@ public class MXMLRoyaleEmitter extends MXMLEmitter implements handler.isProperty = true; handler.name = "handlerFunction"; handler.parent = setEvent; - handler.value = JSRoyaleEmitterTokens.CLOSURE_FUNCTION_NAME.getToken() + ASEmitterTokens.PAREN_OPEN.getToken() + - ASEmitterTokens.THIS.getToken() + ASEmitterTokens.MEMBER_ACCESS.getToken() + eventHandler + - ASEmitterTokens.COMMA.getToken() + ASEmitterTokens.SPACE.getToken() + ASEmitterTokens.THIS.getToken() + - ASEmitterTokens.COMMA.getToken() + ASEmitterTokens.SPACE.getToken() + ASEmitterTokens.SINGLE_QUOTE.getToken() + - eventHandler + ASEmitterTokens.SINGLE_QUOTE.getToken() + - ASEmitterTokens.PAREN_CLOSE.getToken(); + handler.value = JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken() + + ASEmitterTokens.MEMBER_ACCESS.getToken() + + JSRoyaleEmitterTokens.CLOSURE_FUNCTION_NAME.getToken() + + ASEmitterTokens.PAREN_OPEN.getToken() + + ASEmitterTokens.THIS.getToken() + + ASEmitterTokens.MEMBER_ACCESS.getToken() + + eventHandler + ASEmitterTokens.COMMA.getToken() + ASEmitterTokens.SPACE.getToken() + + ASEmitterTokens.THIS.getToken() + ASEmitterTokens.COMMA.getToken() + ASEmitterTokens.SPACE.getToken() + + ASEmitterTokens.SINGLE_QUOTE.getToken() + eventHandler + ASEmitterTokens.SINGLE_QUOTE.getToken() + + ASEmitterTokens.PAREN_CLOSE.getToken(); setEvent.propertySpecifiers.add(handler); JSRoyaleEmitter fjs = (JSRoyaleEmitter) ((IMXMLBlockWalker) getMXMLWalker())
