stage3/print_datatypes_error.cc
changeset 895 f824bf8e1579
parent 873 dea39ef02847
child 933 76324f461aed
--- a/stage3/print_datatypes_error.cc	Tue May 20 08:25:59 2014 +0100
+++ b/stage3/print_datatypes_error.cc	Thu May 29 12:06:22 2014 +0100
@@ -689,6 +689,18 @@
 }
 
 
+/********************************************/
+/* B 1.6 Sequential function chart elements */
+/********************************************/
+void *print_datatypes_error_c::visit(transition_condition_c *symbol) {
+	if (symbol->transition_condition_il != NULL)   symbol->transition_condition_il->accept(*this);
+	if (symbol->transition_condition_st != NULL)   symbol->transition_condition_st->accept(*this);
+
+	if (!get_datatype_info_c::is_type_valid(symbol->datatype))
+		STAGE3_ERROR(0, symbol, symbol, "Transition condition has invalid data type (should be BOOL).");
+	return NULL;
+}
+
 
 /********************************/
 /* B 1.7 Configuration elements */
@@ -1163,7 +1175,7 @@
 	symbol->expression->accept(*this);
 	if ((!get_datatype_info_c::is_type_valid(symbol->expression->datatype)) &&
 	    (symbol->expression->candidate_datatypes.size() > 0)) {
-		STAGE3_ERROR(0, symbol, symbol, "Invalid data type for 'IF' condition.");
+		STAGE3_ERROR(0, symbol, symbol, "Invalid data type for 'IF' condition (should be BOOL).");
 	}
 	if (NULL != symbol->statement_list)
 		symbol->statement_list->accept(*this);
@@ -1178,7 +1190,7 @@
 	symbol->expression->accept(*this);
 	if ((!get_datatype_info_c::is_type_valid(symbol->expression->datatype)) &&
 	    (symbol->expression->candidate_datatypes.size() > 0)) {
-		STAGE3_ERROR(0, symbol, symbol, "Invalid data type for 'ELSIF' condition.");
+		STAGE3_ERROR(0, symbol, symbol, "Invalid data type for 'ELSIF' condition (should be BOOL).");
 	}
 	if (NULL != symbol->statement_list)
 		symbol->statement_list->accept(*this);