special case XML == true/false. Partial fix for apache/royale-asjs#819
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 @@
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 @@
}
@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\"");