diff -r 54d5d185d6e2 -r f824bf8e1579 stage3/narrow_candidate_datatypes.cc --- a/stage3/narrow_candidate_datatypes.cc Tue May 20 08:25:59 2014 +0100 +++ b/stage3/narrow_candidate_datatypes.cc Thu May 29 12:06:22 2014 +0100 @@ -817,17 +817,16 @@ /********************************************/ /* B 1.6 Sequential function chart elements */ /********************************************/ - void *narrow_candidate_datatypes_c::visit(transition_condition_c *symbol) { - if (symbol->candidate_datatypes.size() != 1) - return NULL; - symbol->datatype = symbol->candidate_datatypes[0]; + // We can safely ask for a BOOL type, as even if the result is a SAFEBOOL, in that case it will aslo include BOOL as a possible datatype. + set_datatype(&get_datatype_info_c::bool_type_name /* datatype*/, symbol /* symbol */); + if (symbol->transition_condition_il != NULL) { - symbol->transition_condition_il->datatype = symbol->datatype; + set_datatype(symbol->datatype, symbol->transition_condition_il); symbol->transition_condition_il->accept(*this); } if (symbol->transition_condition_st != NULL) { - symbol->transition_condition_st->datatype = symbol->datatype; + set_datatype(symbol->datatype, symbol->transition_condition_st); symbol->transition_condition_st->accept(*this); } return NULL;