diff -r 7898ba56c7cf -r 0630cc31569f stage4/generate_c/generate_c_vardecl.cc --- a/stage4/generate_c/generate_c_vardecl.cc Mon Mar 11 12:54:25 2013 +0100 +++ b/stage4/generate_c/generate_c_vardecl.cc Thu Apr 04 09:45:11 2013 +0900 @@ -1258,8 +1258,10 @@ return NULL; } + void *visit(en_param_declaration_c *symbol) { TRACE("en_declaration_c"); + update_type_init(symbol->type_decl); if (wanted_varformat == finterface_vf) { finterface_var_count++; } @@ -1267,7 +1269,7 @@ if (wanted_varformat == finterface_vf) { s4o.print(nv->get()); s4o.print("\n" + s4o.indent_spaces); - symbol->type->accept(*this); + this->current_var_type_symbol->accept(*this); s4o.print(" "); symbol->name->accept(*this); } @@ -1279,11 +1281,11 @@ if (wanted_varformat == local_vf) { s4o.print(DECLARE_VAR); s4o.print("("); - symbol->type->accept(*this); + this->current_var_type_symbol->accept(*this); s4o.print(","); } else if (wanted_varformat == localinit_vf) { - symbol->type->accept(*this); + this->current_var_type_symbol->accept(*this); s4o.print(" "); } print_variable_prefix(); @@ -1292,7 +1294,7 @@ s4o.print(")\n"); else { s4o.print(" = "); - symbol->value->accept(*this); + this->current_var_init_symbol->accept(*this); s4o.print(";\n"); } } @@ -1306,11 +1308,12 @@ // s4o.print("EN = __BOOL_LITERAL(TRUE);"); symbol->name->accept(*this); s4o.print(","); - symbol->value->accept(*this); + this->current_var_init_symbol->accept(*this); print_retain(); s4o.print(")"); } } + void_type_init(); return NULL; } @@ -1480,7 +1483,7 @@ /* Start off by setting the current_var_type_symbol and * current_var_init_symbol private variables... */ - update_type_init(symbol); + update_type_init(symbol->fb_spec_init); /* now to produce the c equivalent... */ symbol->fb_name_list->accept(*this);