This is an automated email from the ASF dual-hosted git repository.

aharui pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git


The following commit(s) were added to refs/heads/develop by this push:
     new e78dbcf  special case XML == true/false.  Partial fix for 
apache/royale-asjs#819
e78dbcf is described below

commit e78dbcfff5a841467ab1d66f22e71cfa40a8a0c3
Author: Alex Harui <[email protected]>
AuthorDate: Sat May 9 14:31:32 2020 -0700

    special case XML == true/false.  Partial fix for apache/royale-asjs#819
---
 .../internal/codegen/js/jx/BinaryOperatorEmitter.java    |  9 +++++++++
 .../codegen/js/royale/TestRoyaleExpressions.java         | 16 ++++++++++++++++
 2 files changed, 25 insertions(+)

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 2138d61..b37e337 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
@@ -255,6 +255,15 @@ public class BinaryOperatorEmitter extends JSSubEmitter 
implements
                            write(ASEmitterTokens.PAREN_CLOSE);
                            return;
                        }
+                       else if (node.getNodeID() == ASTNodeID.Op_EqualID &&
+                                       node.getRightOperandNode().getNodeID() 
== ASTNodeID.LiteralBooleanID)
+                       {
+                               getWalker().walk(xmlNode);
+                               write(" == '");
+                           getWalker().walk(node.getRightOperandNode());
+                               write("'");
+                               return;
+                       }
                 }
                 else if (isDynamicAccess && 
((JSRoyaleEmitter)getEmitter()).isXMLish((IExpressionNode)lnode))
                 {
diff --git 
a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleExpressions.java
 
b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleExpressions.java
index a9a7c26..2c4e651 100644
--- 
a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleExpressions.java
+++ 
b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleExpressions.java
@@ -483,6 +483,22 @@ public class TestRoyaleExpressions extends 
TestGoogExpressions
     }
 
     @Test
+    public void testVisitBinaryOperatorNode_XMLChildEqualsTrue()
+    {
+        IBinaryOperatorNode node = getBinaryNode("var var2:XML;var2.child == 
true");
+        asBlockWalker.visitBinaryOperator(node);
+        assertOut("var2.child('child') == 'true'");
+    }
+
+    @Test
+    public void testVisitBinaryOperatorNode_XMLChildEqualsFalse()
+    {
+        IBinaryOperatorNode node = getBinaryNode("var var2:XML;var2.child == 
false");
+        asBlockWalker.visitBinaryOperator(node);
+        assertOut("var2.child('child') == 'false'");
+    }
+    
+    @Test
     public void testVisitBinaryOperatorNode_AssignmentStringLiteralToString()
     {
         IBinaryOperatorNode node = getBinaryNode("var var1:String;var1 = 
\"hi\"");

Reply via email to