94 while((var_name = fpi.next()) != NULL) { |
94 while((var_name = fpi.next()) != NULL) { |
95 if (fpi.param_direction() == function_param_iterator_c::direction_extref) { |
95 if (fpi.param_direction() == function_param_iterator_c::direction_extref) { |
96 /* found an external reference parameter. */ |
96 /* found an external reference parameter. */ |
97 symbol_c *glo_decl = search_var_instance_glo_decl.get_decl(var_name); |
97 symbol_c *glo_decl = search_var_instance_glo_decl.get_decl(var_name); |
98 symbol_c *ext_decl = search_var_instance_ext_decl.get_decl(var_name); |
98 symbol_c *ext_decl = search_var_instance_ext_decl.get_decl(var_name); |
99 if (search_var_instance_glo_decl.get_option(var_name) != search_var_instance_ext_decl.get_option(var_name)) |
99 if (glo_decl == NULL) { |
|
100 STAGE3_ERROR(0, ext_decl, ext_decl, "Declaration error an external doesn't mach with any global var."); |
|
101 continue; |
|
102 } |
|
103 if (search_var_instance_glo_decl.get_option(var_name) != search_var_instance_ext_decl.get_option(var_name)) |
100 STAGE3_ERROR(0, glo_decl, glo_decl, "Declaration error an external redefinition option."); |
104 STAGE3_ERROR(0, glo_decl, glo_decl, "Declaration error an external redefinition option."); |
101 |
105 |
102 /* TODO: Check redefinition data type. |
106 /* TODO: Check redefinition data type. |
103 * We need a new class (like search_base_type class) to get type id by variable declaration. |
107 * We need a new class (like search_base_type class) to get type id by variable declaration. |
104 * symbol_c *glo_type = ????; |
108 * symbol_c *glo_type = ????; |