stage4/generate_c/spec_init_separator.cc
changeset 98 d0cdf1d00b74
parent 70 e1f0ebd2d9ec
--- 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");