diff -r 55ffcf693d6d -r d0cdf1d00b74 stage4/generate_c/spec_init_separator.cc --- a/stage4/generate_c/spec_init_separator.cc Sat Nov 17 10:08:38 2007 +0100 +++ b/stage4/generate_c/spec_init_separator.cc Thu Dec 06 18:01:58 2007 +0100 @@ -113,13 +113,35 @@ void *visit(subrange_spec_init_c *symbol) { TRACE("spec_init_sperator_c::subrange_spec_init_c"); switch (search_what) { - case search_spec: return symbol->subrange_specification; + case search_spec: return symbol->subrange_specification->accept(*this); case search_init: return symbol->signed_integer; } ERROR; /* should never occur */ return NULL; } +/* integer_type_name '(' subrange')' */ +void *visit(subrange_specification_c *symbol) { + TRACE("spec_init_sperator_c::subrange_specification_c"); + switch (search_what) { + case search_spec: return symbol->integer_type_name; + case search_init: return NULL; /* should never occur */ + } + ERROR; /* should never occur */ + return NULL; +} + +/* array_specification [ASSIGN array_initialization} */ +/* array_initialization may be NULL ! */ +void *visit(array_spec_init_c *symbol) { + TRACE("spec_init_sperator_c::array_spec_init_c"); + switch (search_what) { + case search_spec: return symbol->array_specification; + case search_init: return symbol->array_initialization; + } + return NULL; +} + /* enumerated_specification ASSIGN enumerated_value */ void *visit(enumerated_spec_init_c *symbol) { TRACE("spec_init_sperator_c::enumerated_spec_init_c");