You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by jo...@apache.org on 2019/02/04 18:37:37 UTC

[royale-compiler] 03/03: compiler-jx: coercion on assignment also applies to member and static variables of a class (references #74)

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 6b475f70d7897032dff93b66ae1cd967d1f2ce52
Author: Josh Tynjala <jo...@apache.org>
AuthorDate: Mon Feb 4 10:37:06 2019 -0800

    compiler-jx: coercion on assignment also applies to member and static variables of a class (references #74)
---
 .../royale/compiler/internal/codegen/js/jx/ClassEmitter.java      | 2 +-
 .../royale/compiler/internal/codegen/js/jx/FieldEmitter.java      | 8 +++-----
 .../compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java  | 2 +-
 3 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/ClassEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/ClassEmitter.java
index 01f4d70..807e7ae 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/ClassEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/ClassEmitter.java
@@ -255,7 +255,7 @@ public class ClassEmitter extends JSSubEmitter implements
                     }
                     write(ASEmitterTokens.SPACE);
                     writeToken(ASEmitterTokens.EQUAL);
-                    getEmitter().getWalker().walk(vnode);
+                    getEmitter().emitAssignmentCoercion(vnode, varnode.getVariableTypeNode().resolve(getProject()));
                     write(ASEmitterTokens.SEMICOLON);
                     wroteOne = true;
                 }
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FieldEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FieldEmitter.java
index 1b1d07c..dfcff18 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FieldEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FieldEmitter.java
@@ -158,9 +158,7 @@ public class FieldEmitter extends JSSubEmitter implements
 	            write(ASEmitterTokens.SPACE);
 	            writeToken(ASEmitterTokens.EQUAL);
 	            endMapping(node);
-                startMapping(vnode);
-	            write(vnodeString);
-                endMapping(vnode);
+                getEmitter().emitAssignmentCoercion(vnode, node.getVariableTypeNode().resolve(getProject()));
 	        }
 	        else if (ndef.isStatic() && EmitterUtils.needsStaticInitializer(vnodeString, className))
 	        {
@@ -267,8 +265,8 @@ public class FieldEmitter extends JSSubEmitter implements
         	if (ndef.isStatic() && EmitterUtils.needsStaticInitializer(vnodeString, className) && !isPackageOrFileMember)
 	        {
                 writeNewline();
-                write(className
-                        + ASEmitterTokens.MEMBER_ACCESS.getToken());
+                write(className);
+                write(ASEmitterTokens.MEMBER_ACCESS.getToken());
                 write(node.getName());
 	
 	            if (node.getNodeID() == ASTNodeID.BindableVariableID && !node.isConst())
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 36dac1b..a1e1d3e 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
@@ -3059,7 +3059,7 @@ public class MXMLRoyaleEmitter extends MXMLEmitter implements
     	                    	write("_"); // use backing variable
     	                    write(ASEmitterTokens.SPACE);
     	                    writeToken(ASEmitterTokens.EQUAL);
-    	                    fjs.getWalker().walk(vnode);
+                            fjs.emitAssignmentCoercion(vnode, varnode.getVariableTypeNode().resolve(getMXMLWalker().getProject()));
     	                    write(ASEmitterTokens.SEMICOLON);
 
     			        }