87 // if ((NULL == datatype) && (NULL != symbol->datatype)) ERROR; |
87 // if ((NULL == datatype) && (NULL != symbol->datatype)) ERROR; |
88 if ((NULL == datatype) && (NULL != symbol->datatype)) return; |
88 if ((NULL == datatype) && (NULL != symbol->datatype)) return; |
89 if ((NULL == datatype) && (NULL == symbol->datatype)) return; |
89 if ((NULL == datatype) && (NULL == symbol->datatype)) return; |
90 |
90 |
91 if (search_in_candidate_datatype_list(datatype, symbol->candidate_datatypes) < 0) |
91 if (search_in_candidate_datatype_list(datatype, symbol->candidate_datatypes) < 0) |
92 symbol->datatype = &(search_constant_type_c::invalid_type_name); |
92 symbol->datatype = &(get_datatype_info_c::invalid_type_name); |
93 else { |
93 else { |
94 if (NULL == symbol->datatype) |
94 if (NULL == symbol->datatype) |
95 /* not yet set to anything, so we set it to the requested data type */ |
95 /* not yet set to anything, so we set it to the requested data type */ |
96 symbol->datatype = datatype; |
96 symbol->datatype = datatype; |
97 else { |
97 else { |
98 /* had already been set previously to some data type. Let's check if they are the same! */ |
98 /* had already been set previously to some data type. Let's check if they are the same! */ |
99 if (!get_datatype_info_c::is_type_equal(symbol->datatype, datatype)) |
99 if (!get_datatype_info_c::is_type_equal(symbol->datatype, datatype)) |
100 symbol->datatype = &(search_constant_type_c::invalid_type_name); |
100 symbol->datatype = &(get_datatype_info_c::invalid_type_name); |
101 // else |
101 // else |
102 /* we leave it unchanged, as it is the same as the requested data type! */ |
102 /* we leave it unchanged, as it is the same as the requested data type! */ |
103 } |
103 } |
104 } |
104 } |
105 } |
105 } |
399 * FB call must be left unchanged! |
399 * FB call must be left unchanged! |
400 */ |
400 */ |
401 if ((NULL == il_instruction->datatype) || (get_datatype_info_c::is_type_equal(param_value.datatype, il_instruction->datatype))) { |
401 if ((NULL == il_instruction->datatype) || (get_datatype_info_c::is_type_equal(param_value.datatype, il_instruction->datatype))) { |
402 set_datatype_in_prev_il_instructions(param_value.datatype, fake_prev_il_instruction); |
402 set_datatype_in_prev_il_instructions(param_value.datatype, fake_prev_il_instruction); |
403 } else { |
403 } else { |
404 set_datatype_in_prev_il_instructions(&search_constant_type_c::invalid_type_name, fake_prev_il_instruction); |
404 set_datatype_in_prev_il_instructions(&get_datatype_info_c::invalid_type_name, fake_prev_il_instruction); |
405 } |
405 } |
406 return NULL; |
406 return NULL; |
407 } |
407 } |
408 |
408 |
409 |
409 |