stage3/narrow_candidate_datatypes.cc
changeset 854 13d0b67de111
parent 843 f9a059c24aea
child 873 dea39ef02847
equal deleted inserted replaced
853:818c4ac5d64d 854:13d0b67de111
  1358 			r_type = r_expr->candidate_datatypes[j];
  1358 			r_type = r_expr->candidate_datatypes[j];
  1359 			if        (is_widening_compatible(widen_table, l_type, r_type, symbol->datatype, deprecated_operation)) {
  1359 			if        (is_widening_compatible(widen_table, l_type, r_type, symbol->datatype, deprecated_operation)) {
  1360 				l_expr->datatype = l_type;
  1360 				l_expr->datatype = l_type;
  1361 				r_expr->datatype = r_type;
  1361 				r_expr->datatype = r_type;
  1362 				count ++;
  1362 				count ++;
  1363 			} else if ((l_type == r_type) && search_base_type_c::type_is_enumerated(l_type) && get_datatype_info_c::is_BOOL_compatible(symbol->datatype)) {
  1363 			} else if ((l_type == r_type) && get_datatype_info_c::is_enumerated(l_type) && get_datatype_info_c::is_BOOL_compatible(symbol->datatype)) {
  1364 				if (NULL != deprecated_operation)  *deprecated_operation = false;
  1364 				if (NULL != deprecated_operation)  *deprecated_operation = false;
  1365 				l_expr->datatype = l_type;
  1365 				l_expr->datatype = l_type;
  1366 				r_expr->datatype = r_type;
  1366 				r_expr->datatype = r_type;
  1367 				count ++;
  1367 				count ++;
  1368 			}
  1368 			}
  1514 /* CASE expression OF case_element_list ELSE statement_list END_CASE */
  1514 /* CASE expression OF case_element_list ELSE statement_list END_CASE */
  1515 // SYM_REF3(case_statement_c, expression, case_element_list, statement_list)
  1515 // SYM_REF3(case_statement_c, expression, case_element_list, statement_list)
  1516 void *narrow_candidate_datatypes_c::visit(case_statement_c *symbol) {
  1516 void *narrow_candidate_datatypes_c::visit(case_statement_c *symbol) {
  1517 	for (unsigned int i = 0; i < symbol->expression->candidate_datatypes.size(); i++) {
  1517 	for (unsigned int i = 0; i < symbol->expression->candidate_datatypes.size(); i++) {
  1518 		if ((get_datatype_info_c::is_ANY_INT(symbol->expression->candidate_datatypes[i]))
  1518 		if ((get_datatype_info_c::is_ANY_INT(symbol->expression->candidate_datatypes[i]))
  1519 				 || (search_base_type_c::type_is_enumerated(symbol->expression->candidate_datatypes[i])))
  1519 				 || (get_datatype_info_c::is_enumerated(symbol->expression->candidate_datatypes[i])))
  1520 			symbol->expression->datatype = symbol->expression->candidate_datatypes[i];
  1520 			symbol->expression->datatype = symbol->expression->candidate_datatypes[i];
  1521 	}
  1521 	}
  1522 	symbol->expression->accept(*this);
  1522 	symbol->expression->accept(*this);
  1523 	if (NULL != symbol->statement_list)
  1523 	if (NULL != symbol->statement_list)
  1524 		symbol->statement_list->accept(*this);
  1524 		symbol->statement_list->accept(*this);