diff -r 54d5d185d6e2 -r f824bf8e1579 stage3/print_datatypes_error.cc --- 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);