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 e5953d3986bd207490d13bce3ff7a3fef6269927 Author: Josh Tynjala <[email protected]> AuthorDate: Wed Mar 5 14:32:48 2025 -0800 compiler-jx: pass LANGUAGE_QNAME to formatQualifiedName(), like other qualified names This will help if we ever support other module systems, and the module imports require rewriting/formatting qnames --- .../royale/compiler/internal/codegen/js/JSEmitter.java | 10 +++++----- .../compiler/internal/codegen/js/jx/AsIsEmitter.java | 9 ++++++--- .../internal/codegen/js/jx/BinaryOperatorEmitter.java | 5 ++++- .../internal/codegen/js/jx/DynamicAccessEmitter.java | 2 +- .../internal/codegen/js/jx/FunctionCallEmitter.java | 18 +++++++++--------- .../internal/codegen/js/jx/IdentifierEmitter.java | 2 +- .../internal/codegen/js/jx/UnaryOperatorEmitter.java | 7 +++++-- .../internal/codegen/js/royale/JSRoyaleEmitter.java | 6 +++--- .../codegen/mxml/royale/MXMLRoyaleASDocEmitter.java | 2 +- .../codegen/mxml/royale/MXMLRoyaleEmitter.java | 2 +- 10 files changed, 36 insertions(+), 27 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 a991d6af0..03dbe93a6 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,7 +742,7 @@ public class JSEmitter extends ASEmitter implements IJSEmitter endMapping(assignedNode); } else { startMapping(assignedNode); - write(JSRoyaleEmitterTokens.LANGUAGE_QNAME); + write(formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken())); write(ASEmitterTokens.MEMBER_ACCESS); write(JSRoyaleEmitterTokens.SYNTH_VECTOR); write(ASEmitterTokens.PAREN_OPEN); @@ -764,7 +764,7 @@ public class JSEmitter extends ASEmitter implements IJSEmitter && project instanceof RoyaleJSProject && ((RoyaleJSProject)project).config.getJsVectorEmulationClass() == null ){ startMapping(assignedNode); - write(JSRoyaleEmitterTokens.LANGUAGE_QNAME); + write(formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken())); write(ASEmitterTokens.MEMBER_ACCESS); write(JSRoyaleEmitterTokens.SYNTH_VECTOR); write(ASEmitterTokens.PAREN_OPEN); @@ -890,7 +890,7 @@ public class JSEmitter extends ASEmitter implements IJSEmitter if (needsCoercion) { //add a comment tag leader, so implicit casts are identifiable in the output coercionStart = "/* implicit cast */ " - + JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken() + + formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken()) + ASEmitterTokens.MEMBER_ACCESS.getToken() + ASEmitterTokens.AS.getToken() + ASEmitterTokens.PAREN_OPEN.getToken(); @@ -899,12 +899,12 @@ public class JSEmitter extends ASEmitter implements IJSEmitter String synthCall; String synthethicType; if (NativeUtils.isVector(coercionTypeString)) { - synthCall = JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken() + synthCall = formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken()) + ASEmitterTokens.MEMBER_ACCESS.getToken() + JSRoyaleEmitterTokens.SYNTH_VECTOR.getToken(); synthethicType = formatQualifiedName(coercionTypeString.substring(8, coercionTypeString.length() -1)); } else { - synthCall = JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken() + synthCall = formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken()) + ASEmitterTokens.MEMBER_ACCESS.getToken() + JSRoyaleEmitterTokens.SYNTH_TYPE.getToken(); synthethicType = coercionTypeString; 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 d32ef6e87..828a826de 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 @@ -50,6 +50,9 @@ public class AsIsEmitter extends JSSubEmitter public void emitIsAs(IExpressionNode node, IExpressionNode left, IExpressionNode right, ASTNodeID id, boolean coercion) { + // TODO (mschmalle) will remove this cast as more things get abstracted + JSRoyaleEmitter fjs = (JSRoyaleEmitter) getEmitter(); + // project is null in unit tests //IDefinition dnode = project != null ? (right).resolve(project) : null; IDefinition dnode = getProject() != null ? (right) @@ -157,7 +160,7 @@ public class AsIsEmitter extends JSSubEmitter { startMapping(node); } - write(JSRoyaleEmitterTokens.LANGUAGE_QNAME); + write(fjs.formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken())); write(ASEmitterTokens.MEMBER_ACCESS); if (id == ASTNodeID.Op_IsID) @@ -188,13 +191,13 @@ public class AsIsEmitter extends JSSubEmitter String langMethod; String synthName; if (NativeUtils.isVector(dnode.getQualifiedName()) && dnode instanceof IAppliedVectorDefinition) { - langMethod = JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken() + langMethod = fjs.formatQualifiedName(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.LANGUAGE_QNAME.getToken() + langMethod = fjs.formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken()) + ASEmitterTokens.MEMBER_ACCESS.getToken() + JSRoyaleEmitterTokens.SYNTH_TYPE.getToken(); synthName = getEmitter().formatQualifiedName(dnode.getQualifiedName()); diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java index 507d4765c..816e6bc6b 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java @@ -678,6 +678,9 @@ public class BinaryOperatorEmitter extends JSSubEmitter implements private void super_emitBinaryOperator(IBinaryOperatorNode node, boolean isAssignment) { + // TODO (mschmalle) will remove this cast as more things get abstracted + JSRoyaleEmitter fjs = (JSRoyaleEmitter) getEmitter(); + if (ASNodeUtils.hasParenOpen(node)) write(ASEmitterTokens.PAREN_OPEN); @@ -725,7 +728,7 @@ public class BinaryOperatorEmitter extends JSSubEmitter implements //the dynamic access field name is a constant on Language, so it can be different/shorter in release build getWalker().walk(((MemberAccessExpressionNode) node.getLeftOperandNode()).getLeftOperandNode()); write(ASEmitterTokens.SQUARE_OPEN); - write(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken()); + write(fjs.formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken())); write(ASEmitterTokens.MEMBER_ACCESS); write(JSRoyaleEmitterTokens.ROYALE_SYNTH_TAG_FIELD_NAME); write(ASEmitterTokens.SQUARE_CLOSE); 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 9ae75e366..d31736107 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,7 +125,7 @@ public class DynamicAccessEmitter extends JSSubEmitter implements ((RoyaleJSProject) getProject()).needLanguage = true; getWalker().walk(leftOperandNode); write(ASEmitterTokens.SQUARE_OPEN); - write(JSRoyaleEmitterTokens.LANGUAGE_QNAME); + write(fjs.formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken())); write(ASEmitterTokens.MEMBER_ACCESS); write(JSRoyaleEmitterTokens.VECTOR_INDEX_CHECK_METHOD_NAME); write(ASEmitterTokens.SQUARE_CLOSE); 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 3d1c87f98..83219178a 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 @@ -122,7 +122,7 @@ public class FunctionCallEmitter extends JSSubEmitter implements ISubEmitter<IFu if (wrapResolve) { ((RoyaleJSProject) getProject()).needLanguage = true; getModel().needLanguage = true; - write(JSRoyaleEmitterTokens.LANGUAGE_QNAME); + write(fjs.formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken())); write(ASEmitterTokens.MEMBER_ACCESS); write("resolveUncertain"); write(ASEmitterTokens.PAREN_OPEN); @@ -154,7 +154,7 @@ 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(fjs.formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken())); write(ASEmitterTokens.MEMBER_ACCESS); write(JSRoyaleEmitterTokens.SYNTH_VECTOR); write(ASEmitterTokens.PAREN_OPEN); @@ -246,7 +246,7 @@ public class FunctionCallEmitter extends JSSubEmitter implements ISubEmitter<IFu if (project instanceof RoyaleJSProject) ((RoyaleJSProject) project).needLanguage = true; getEmitter().getModel().needLanguage = true; - write(JSRoyaleEmitterTokens.LANGUAGE_QNAME); + write(fjs.formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken())); write(ASEmitterTokens.MEMBER_ACCESS); if (isInt) write(JSRoyaleEmitterTokens.UNDERSCORE); @@ -339,7 +339,7 @@ public class FunctionCallEmitter extends JSSubEmitter implements ISubEmitter<IFu if (getProject() instanceof RoyaleJSProject) ((RoyaleJSProject) getProject()).needLanguage = true; getEmitter().getModel().needLanguage = true; - write(JSRoyaleEmitterTokens.LANGUAGE_QNAME); + write(fjs.formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken())); write(ASEmitterTokens.MEMBER_ACCESS); startMapping(node.getNameNode()); write("arrayAsVector"); @@ -420,7 +420,7 @@ public class FunctionCallEmitter extends JSSubEmitter implements ISubEmitter<IFu ((RoyaleJSProject) project).needLanguage = true; getEmitter().getModel().needLanguage = true; startMapping(node.getNameNode()); - write(JSRoyaleEmitterTokens.LANGUAGE_QNAME); + write(fjs.formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken())); write(ASEmitterTokens.MEMBER_ACCESS); if (isInt) write(JSRoyaleEmitterTokens.UNDERSCORE); @@ -436,7 +436,7 @@ public class FunctionCallEmitter extends JSSubEmitter implements ISubEmitter<IFu if (project instanceof RoyaleJSProject) ((RoyaleJSProject) project).needLanguage = true; getEmitter().getModel().needLanguage = true; - write(JSRoyaleEmitterTokens.LANGUAGE_QNAME); + write(fjs.formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken())); write(ASEmitterTokens.MEMBER_ACCESS); write("sortOn"); IContainerNode newArgs = EmitterUtils.insertArgumentsBefore(node.getArgumentsNode(), cnode); @@ -471,7 +471,7 @@ public class FunctionCallEmitter extends JSSubEmitter implements ISubEmitter<IFu if (project instanceof RoyaleJSProject) ((RoyaleJSProject) project).needLanguage = true; getEmitter().getModel().needLanguage = true; - write(JSRoyaleEmitterTokens.LANGUAGE_QNAME); + write(fjs.formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken())); write(ASEmitterTokens.MEMBER_ACCESS); write("sort("); // can't use parameter emitter because the parameter types would be for @@ -612,7 +612,7 @@ public class FunctionCallEmitter extends JSSubEmitter implements ISubEmitter<IFu } else { //default Vector implementation startMapping(node.getNameNode()); - write(JSRoyaleEmitterTokens.LANGUAGE_QNAME); + write(fjs.formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken())); write(ASEmitterTokens.MEMBER_ACCESS); write(JSRoyaleEmitterTokens.SYNTH_VECTOR); write(ASEmitterTokens.PAREN_OPEN); @@ -667,7 +667,7 @@ public class FunctionCallEmitter extends JSSubEmitter implements ISubEmitter<IFu wrapResolve = true; ((RoyaleJSProject) getProject()).needLanguage = true; getModel().needLanguage = true; - write(JSRoyaleEmitterTokens.LANGUAGE_QNAME); + write(fjs.formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken())); write(ASEmitterTokens.MEMBER_ACCESS); write("resolveUncertain"); write(ASEmitterTokens.PAREN_OPEN); 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 83c70dad8..c504d7bd6 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,7 +300,7 @@ public class IdentifierEmitter extends JSSubEmitter implements ((RoyaleJSProject)project).needLanguage = true; } getEmitter().getModel().needLanguage = true; - write(JSRoyaleEmitterTokens.LANGUAGE_QNAME); + write(fjs.formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken())); write(ASEmitterTokens.MEMBER_ACCESS); write(JSRoyaleEmitterTokens.SYNTH_TYPE); write(ASEmitterTokens.PAREN_OPEN); 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 5aedb00c3..c8988b70d 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 @@ -23,6 +23,7 @@ import org.apache.royale.compiler.codegen.ISubEmitter; import org.apache.royale.compiler.codegen.js.IJSEmitter; import org.apache.royale.compiler.internal.codegen.as.ASEmitterTokens; import org.apache.royale.compiler.internal.codegen.js.JSSubEmitter; +import org.apache.royale.compiler.internal.codegen.js.royale.JSRoyaleEmitter; import org.apache.royale.compiler.internal.codegen.js.royale.JSRoyaleEmitterTokens; import org.apache.royale.compiler.internal.definitions.AppliedVectorDefinition; import org.apache.royale.compiler.internal.projects.RoyaleJSProject; @@ -43,7 +44,7 @@ public class UnaryOperatorEmitter extends JSSubEmitter implements @Override public void emit(IUnaryOperatorNode node) - { + { if (ASNodeUtils.hasParenOpen(node)) write(ASEmitterTokens.PAREN_OPEN); @@ -64,7 +65,9 @@ public class UnaryOperatorEmitter extends JSSubEmitter implements ((RoyaleJSProject)getProject()).needLanguage = true; } getModel().needLanguage = true; - String synthTagName = JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken() + // TODO (mschmalle) will remove this cast as more things get abstracted + JSRoyaleEmitter fjs = (JSRoyaleEmitter) getEmitter(); + String synthTagName = fjs.formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken()) + ASEmitterTokens.MEMBER_ACCESS.getToken() + JSRoyaleEmitterTokens.ROYALE_SYNTH_TAG_FIELD_NAME.getToken(); LiteralNode synthType = new LiteralNode(ILiteralNode.LiteralType.STRING, synthTagName); 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 b62ca6773..ecf679d18 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,7 @@ 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.LANGUAGE_QNAME.getToken() + result = formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken()) + ASEmitterTokens.MEMBER_ACCESS.getToken() + JSRoyaleEmitterTokens.VECTOR.getToken(); } @@ -1467,7 +1467,7 @@ public class JSRoyaleEmitter extends JSEmitter implements IJSRoyaleEmitter if (project instanceof RoyaleJSProject) ((RoyaleJSProject)project).needLanguage = true; getModel().needLanguage = true; - write(JSRoyaleEmitterTokens.LANGUAGE_QNAME); + write(formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken())); write(ASEmitterTokens.MEMBER_ACCESS); write(JSRoyaleEmitterTokens.CLOSURE_FUNCTION_NAME); write(ASEmitterTokens.PAREN_OPEN); @@ -1881,7 +1881,7 @@ public class JSRoyaleEmitter extends JSEmitter implements IJSRoyaleEmitter if (node instanceof TypedExpressionNode) { startMapping(node); write(ASEmitterTokens.PAREN_OPEN); - write(JSRoyaleEmitterTokens.LANGUAGE_QNAME); + write(formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken())); write(ASEmitterTokens.MEMBER_ACCESS); write(JSRoyaleEmitterTokens.SYNTH_VECTOR); write(ASEmitterTokens.PAREN_OPEN); 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 c98b16b0b..0d5702f3f 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,7 +679,7 @@ public class MXMLRoyaleASDocEmitter extends MXMLEmitter implements handler.isProperty = true; handler.name = "handlerFunction"; handler.parent = setEvent; - handler.value = JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken() + handler.value = formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken()) + ASEmitterTokens.MEMBER_ACCESS.getToken() + JSRoyaleEmitterTokens.CLOSURE_FUNCTION_NAME.getToken() + ASEmitterTokens.PAREN_OPEN.getToken() 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 df98f5cb6..1576125db 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,7 +2822,7 @@ public class MXMLRoyaleEmitter extends MXMLEmitter implements handler.isProperty = true; handler.name = "handlerFunction"; handler.parent = setEvent; - handler.value = JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken() + handler.value = formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken()) + ASEmitterTokens.MEMBER_ACCESS.getToken() + JSRoyaleEmitterTokens.CLOSURE_FUNCTION_NAME.getToken() + ASEmitterTokens.PAREN_OPEN.getToken()
