Forráskód Böngészése

#291: Ensure effective boolean expression is used in checks.

anyssen 9 éve
szülő
commit
bd34b41277

+ 15 - 0
plugins/org.yakindu.sct.generator.c/src/org/yakindu/sct/generator/c/ExpressionCode.xtend

@@ -151,4 +151,19 @@ class ExpressionCode {
 	
 	def dispatch CharSequence code(TypeCastExpression it) '''((«type.getTargetLanguageName») «operand.code»)'''
 
+	
+	// ensure we obtain an expression of type sc_boolean
+	
+	def dispatch CharSequence sc_boolean_code(Expression it) '''«it.code»'''
+	
+	def dispatch CharSequence sc_boolean_code(LogicalOrExpression it) '''(«it.code») ? bool_true : bool_false'''
+	
+	def dispatch CharSequence sc_boolean_code(LogicalAndExpression it) '''(«it.code») ? bool_true : bool_false'''
+	
+	def dispatch CharSequence sc_boolean_code(LogicalNotExpression it) '''(«it.code») ? bool_true : bool_false'''
+	
+	def dispatch CharSequence sc_boolean_code(LogicalRelationExpression it) '''(«it.code») ? bool_true : bool_false'''
+	
+	
+
 }

+ 2 - 2
plugins/org.yakindu.sct.generator.c/src/org/yakindu/sct/generator/c/FlowCode.xtend

@@ -121,14 +121,14 @@ class FlowCode {
 	'''	
 
 	def dispatch CharSequence code(Check it) 
-		'''«IF condition != null»«condition.code»«ELSE»bool_true«ENDIF»'''
+		'''«IF condition != null»«condition.sc_boolean_code»«ELSE»bool_true«ENDIF»'''
 	
 	def dispatch CharSequence code(CheckRef it) 
 		'''«IF check != null»«check.shortName»(«scHandle»)«ELSE»bool_true«ENDIF»'''
 
 	def dispatch CharSequence code(If it) '''
 		«stepComment»
-		if («check.code») { 
+		if («check.code» == bool_true) { 
 			«thenStep.code»
 		} «IF (elseStep != null)» else {
 			«elseStep.code»