change back union stuff and expriment with new union mode for initializers
[cparser] / ast.c
diff --git a/ast.c b/ast.c
index 27105f6..984df78 100644 (file)
--- a/ast.c
+++ b/ast.c
@@ -380,6 +380,7 @@ static void print_case_label(const case_label_statement_t *statement)
                print_expression(statement->expression);
                fputs(":\n", out);
        }
+       print_statement(statement->label_statement);
 }
 
 static void print_declaration_statement(
@@ -512,22 +513,22 @@ static void print_storage_class(storage_class_t storage_class)
 void print_initializer(const initializer_t *initializer)
 {
        if(initializer->type == INITIALIZER_VALUE) {
-               //print_expression(initializer->v.value);
+               const initializer_value_t *value = &initializer->value;
+               print_expression(value->value);
                return;
        }
 
-#if 0
        assert(initializer->type == INITIALIZER_LIST);
        fputs("{ ", out);
-       initializer_t *iter = initializer->v.list;
-       for( ; iter != NULL; iter = iter->next) {
-               print_initializer(iter);
-               if(iter->next != NULL) {
+       const initializer_list_t *list = &initializer->list;
+
+       for(size_t i = 0 ; i < list->len; ++i) {
+               if(i > 0) {
                        fputs(", ", out);
                }
+               print_initializer(list->initializers[i]);
        }
        fputs("}", out);
-#endif
 }
 
 static void print_normal_declaration(const declaration_t *declaration)