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 c8b7f353d8e6535935f8827240cb9202a7a57b4e Author: Josh Tynjala <[email protected]> AuthorDate: Wed Jan 14 15:15:22 2026 -0800 AsIsEmitter: fix as and is when using js-vector-emulation-class Was checking against Language.synthVector() instead of the custom class --- .../internal/codegen/js/jx/AsIsEmitter.java | 73 +++++++++++++++------- 1 file changed, 51 insertions(+), 22 deletions(-) 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 828a826de..cf35c48d5 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 @@ -187,32 +187,61 @@ public class AsIsEmitter extends JSSubEmitter if (dnode instanceof IClassDefinition) { startMapping(right); - if (NativeUtils.isSyntheticJSType(dnode.getQualifiedName())) { - String langMethod; - String synthName; - if (NativeUtils.isVector(dnode.getQualifiedName()) && dnode instanceof IAppliedVectorDefinition) { - langMethod = fjs.formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken()) - + ASEmitterTokens.MEMBER_ACCESS.getToken() - + JSRoyaleEmitterTokens.SYNTH_VECTOR.getToken(); - synthName = getEmitter().formatQualifiedName(((IAppliedVectorDefinition) dnode).resolveElementType(project).getQualifiedName()); - } else { + if (NativeUtils.isSyntheticJSType(dnode.getQualifiedName())) + { + if (NativeUtils.isVector(dnode.getQualifiedName()) && dnode instanceof IAppliedVectorDefinition) + { + String vectorEmulationClass = null; + if (project instanceof RoyaleJSProject) + { + RoyaleJSProject royaleProject = (RoyaleJSProject) project; + if (royaleProject.config != null) + { + vectorEmulationClass = royaleProject.config.getJsVectorEmulationClass(); + } + } + if (vectorEmulationClass != null) + { + write(vectorEmulationClass); + } + else + { + String langMethod = fjs.formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken()) + + ASEmitterTokens.MEMBER_ACCESS.getToken() + + JSRoyaleEmitterTokens.SYNTH_VECTOR.getToken(); + String synthName = getEmitter().formatQualifiedName(((IAppliedVectorDefinition) dnode).resolveElementType(project).getQualifiedName()); + write(langMethod); + write(ASEmitterTokens.PAREN_OPEN); + write(ASEmitterTokens.SINGLE_QUOTE); + write(synthName); + write(ASEmitterTokens.SINGLE_QUOTE); + write(ASEmitterTokens.PAREN_CLOSE); + if (project instanceof RoyaleJSProject) + ((RoyaleJSProject)project).needLanguage = true; + getEmitter().getModel().needLanguage = true; + } + } + else + { //non-vector, e.g. int/uint - langMethod = fjs.formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken()) + String langMethod = fjs.formatQualifiedName(JSRoyaleEmitterTokens.LANGUAGE_QNAME.getToken()) + ASEmitterTokens.MEMBER_ACCESS.getToken() + JSRoyaleEmitterTokens.SYNTH_TYPE.getToken(); - synthName = getEmitter().formatQualifiedName(dnode.getQualifiedName()); + String synthName = getEmitter().formatQualifiedName(dnode.getQualifiedName()); + write(langMethod); + write(ASEmitterTokens.PAREN_OPEN); + write(ASEmitterTokens.SINGLE_QUOTE); + write(synthName); + write(ASEmitterTokens.SINGLE_QUOTE); + write(ASEmitterTokens.PAREN_CLOSE); + if (project instanceof RoyaleJSProject) + ((RoyaleJSProject)project).needLanguage = true; + getEmitter().getModel().needLanguage = true; } - write(langMethod); - write(ASEmitterTokens.PAREN_OPEN); - write(ASEmitterTokens.SINGLE_QUOTE); - write(synthName); - write(ASEmitterTokens.SINGLE_QUOTE); - write(ASEmitterTokens.PAREN_CLOSE); - if (project instanceof RoyaleJSProject) - ((RoyaleJSProject)project).needLanguage = true; - getEmitter().getModel().needLanguage = true; - } else { - write(getEmitter().formatQualifiedName(((JSRoyaleEmitter)getEmitter()).convertASTypeToJS(dnode.getQualifiedName()))); + } + else + { + write(getEmitter().formatQualifiedName(fjs.convertASTypeToJS(dnode.getQualifiedName()))); } endMapping(right); }
