From 57569ce27c909aa9cda1d4e1b405c83ae0ef29cb Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Thu, 22 Nov 2007 12:49:38 +0000 Subject: [PATCH] fix printing of array types [r18517] --- ast.c | 14 +++++++------- type.c | 10 ++++++++-- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/ast.c b/ast.c index 341d5f2..463bf13 100644 --- a/ast.c +++ b/ast.c @@ -513,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); + initializer_value_t *value = (initializer_value_t*) initializer; + 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) { + initializer_list_t *list = (initializer_list_t*) initializer; + + 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) diff --git a/type.c b/type.c index 78f691a..365b3fe 100644 --- a/type.c +++ b/type.c @@ -133,8 +133,7 @@ static void print_function_type_post(const function_type_t *type, fputc(')', out); } -static -void print_pointer_type_pre(const pointer_type_t *type) +static void print_pointer_type_pre(const pointer_type_t *type) { intern_print_type_pre(type->points_to); fputs("*", out); @@ -146,8 +145,14 @@ static void print_pointer_type_post(const pointer_type_t *type) intern_print_type_post(type->points_to); } +static void print_array_type_pre(const array_type_t *type) +{ + intern_print_type_pre(type->element_type); +} + static void print_array_type_post(const array_type_t *type) { + intern_print_type_post(type->element_type); fputc('[', out); if(type->is_static) { fputs("static ", out); @@ -277,6 +282,7 @@ static void intern_print_type_pre(type_t *type) print_pointer_type_pre((pointer_type_t*) type); return; case TYPE_ARRAY: + print_array_type_pre((array_type_t*) type); return; case TYPE_TYPEDEF: print_typedef_type_pre((typedef_type_t*) type); -- 2.20.1