Browse Source

Bugfix: NotEquals compare with string in java code generator

Andreas Mülder 13 years ago
parent
commit
8b544b7ec9

+ 10 - 2
plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/templates/Expression.ext

@@ -106,10 +106,18 @@ String toCode(LogicalNotExpression expression) :
 
 String toCode(LogicalRelationExpression expression) :
 	if (expression.leftOperand.inferType().isString()) then
-		"("+expression.leftOperand.toCode()+"==null?"+expression.rightOperand.toCode()+"==null:"+expression.leftOperand.toCode()+".equals("+expression.rightOperand.toCode()+"))"
+		expression.logicalString()
 	else
 		"("+expression.leftOperand.toCode() + getOperator(expression.operator) + expression.rightOperand.toCode()+")";
-    
+
+String logicalString(LogicalRelationExpression expression) : 
+if(expression.operator == RelationalOperator::equals) then
+	"("+expression.leftOperand.toCode()+"==null?"+expression.rightOperand.toCode()+"==null:"+expression.leftOperand.toCode()+".equals("+expression.rightOperand.toCode()+"))"
+else if(expression.operator == RelationalOperator::notEquals) then
+	"("+expression.leftOperand.toCode()+"==null?"+expression.rightOperand.toCode()+"==null:!"+expression.leftOperand.toCode()+".equals("+expression.rightOperand.toCode()+"))"
+;
+
+
 String toCode(BitwiseAndExpression expression) :
   	"("+expression.leftOperand.toCode() + " & " + expression.rightOperand.toCode()+")";
 

+ 1 - 1
test-plugins/org.yakindu.sct.generator.java.test/src-gen/org/yakindu/scr/stringexpressions/StringExpressionsStatemachine.java

@@ -200,7 +200,7 @@ public class StringExpressionsStatemachine
 
 			sCIDefault.notEqual = (sCIDefault.myString == null
 					? sCIDefault.myString2 == null
-					: sCIDefault.myString.equals(sCIDefault.myString2));
+					: !sCIDefault.myString.equals(sCIDefault.myString2));
 
 			nextStateIndex = 0;
 			stateVector[0] = State.Main_region_StateB;