stage3/print_datatypes_error.cc
changeset 514 c2880eba49a1
parent 510 9317e04c1dde
child 549 af9517cad953
equal deleted inserted replaced
513:99aa36a77703 514:c2880eba49a1
  1247 	return NULL;
  1247 	return NULL;
  1248 }
  1248 }
  1249 
  1249 
  1250 void *print_datatypes_error_c::visit(while_statement_c *symbol) {
  1250 void *print_datatypes_error_c::visit(while_statement_c *symbol) {
  1251 	symbol->expression->accept(*this);
  1251 	symbol->expression->accept(*this);
  1252 	if (symbol->candidate_datatypes.size() != 1) {
  1252 	if (!is_type_valid(symbol->expression->datatype)) {
  1253 		STAGE3_ERROR(0, symbol, symbol, "Invalid data type for 'WHILE' condition.");
  1253 		STAGE3_ERROR(0, symbol, symbol, "Invalid data type for 'WHILE' condition.");
  1254 		return NULL;
  1254 		return NULL;
  1255 	}
  1255 	}
  1256 	if (NULL != symbol->statement_list)
  1256 	if (NULL != symbol->statement_list)
  1257 		symbol->statement_list->accept(*this);
  1257 		symbol->statement_list->accept(*this);
  1258 	return NULL;
  1258 	return NULL;
  1259 }
  1259 }
  1260 
  1260 
  1261 void *print_datatypes_error_c::visit(repeat_statement_c *symbol) {
  1261 void *print_datatypes_error_c::visit(repeat_statement_c *symbol) {
  1262 	if (symbol->candidate_datatypes.size() != 1) {
  1262 	if (!is_type_valid(symbol->expression->datatype)) {
  1263 		STAGE3_ERROR(0, symbol, symbol, "Invalid data type for 'REPEAT' condition.");
  1263 		STAGE3_ERROR(0, symbol, symbol, "Invalid data type for 'REPEAT' condition.");
  1264 		return NULL;
  1264 		return NULL;
  1265 	}
  1265 	}
  1266 	if (NULL != symbol->statement_list)
  1266 	if (NULL != symbol->statement_list)
  1267 		symbol->statement_list->accept(*this);
  1267 		symbol->statement_list->accept(*this);