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);
         }

Reply via email to