# HG changeset patch # User Laurent Bessard # Date 1343396612 -7200 # Node ID c6486bd97392655e19a68d80e3c970427e67b258 # Parent 8d876ad522f4eea146a5ba8991de578d35716f0f Fix bug while using complex type variables in Function and FunctionBlock interface diff -r 8d876ad522f4 -r c6486bd97392 stage4/generate_c/generate_c_il.cc --- a/stage4/generate_c/generate_c_il.cc Fri Jul 27 15:40:44 2012 +0200 +++ b/stage4/generate_c/generate_c_il.cc Fri Jul 27 15:43:32 2012 +0200 @@ -649,16 +649,24 @@ // SYM_REF2(structured_variable_c, record_variable, field_selector) void *visit(structured_variable_c *symbol) { TRACE("structured_variable_c"); + unsigned int vartype = search_varfb_instance_type->get_vartype(symbol->record_variable); + bool type_is_complex = search_varfb_instance_type->type_is_complex(); switch (wanted_variablegeneration) { case complextype_base_vg: case complextype_base_assignment_vg: symbol->record_variable->accept(*this); + if (!type_is_complex) { + s4o.print("."); + symbol->field_selector->accept(*this); + } break; case complextype_suffix_vg: case assignment_vg: symbol->record_variable->accept(*this); - s4o.print("."); - symbol->field_selector->accept(*this); + if (type_is_complex) { + s4o.print("."); + symbol->field_selector->accept(*this); + } break; default: if (this->is_variable_prefix_null()) { diff -r 8d876ad522f4 -r c6486bd97392 stage4/generate_c/generate_c_inlinefcall.cc --- a/stage4/generate_c/generate_c_inlinefcall.cc Fri Jul 27 15:40:44 2012 +0200 +++ b/stage4/generate_c/generate_c_inlinefcall.cc Fri Jul 27 15:43:32 2012 +0200 @@ -397,15 +397,23 @@ // SYM_REF2(structured_variable_c, record_variable, field_selector) void *visit(structured_variable_c *symbol) { TRACE("structured_variable_c"); + unsigned int vartype = search_varfb_instance_type->get_vartype(symbol->record_variable); + bool type_is_complex = search_varfb_instance_type->type_is_complex(); if (generating_inlinefunction) { switch (wanted_variablegeneration) { case complextype_base_vg: symbol->record_variable->accept(*this); + if (!type_is_complex) { + s4o.print("."); + symbol->field_selector->accept(*this); + } break; case complextype_suffix_vg: symbol->record_variable->accept(*this); - s4o.print("."); - symbol->field_selector->accept(*this); + if (type_is_complex) { + s4o.print("."); + symbol->field_selector->accept(*this); + } break; default: print_getter(symbol); diff -r 8d876ad522f4 -r c6486bd97392 stage4/generate_c/generate_c_st.cc --- a/stage4/generate_c/generate_c_st.cc Fri Jul 27 15:40:44 2012 +0200 +++ b/stage4/generate_c/generate_c_st.cc Fri Jul 27 15:43:32 2012 +0200 @@ -312,16 +312,24 @@ // SYM_REF2(structured_variable_c, record_variable, field_selector) void *visit(structured_variable_c *symbol) { TRACE("structured_variable_c"); + unsigned int vartype = search_varfb_instance_type->get_vartype(symbol->record_variable); + bool type_is_complex = search_varfb_instance_type->type_is_complex(); switch (wanted_variablegeneration) { case complextype_base_vg: case complextype_base_assignment_vg: symbol->record_variable->accept(*this); + if (!type_is_complex) { + s4o.print("."); + symbol->field_selector->accept(*this); + } break; case complextype_suffix_vg: case assignment_vg: symbol->record_variable->accept(*this); - s4o.print("."); - symbol->field_selector->accept(*this); + if (type_is_complex) { + s4o.print("."); + symbol->field_selector->accept(*this); + } break; default: if (this->is_variable_prefix_null()) {