- when parsing compound types, do NOT destroy old declarations if
[cparser] / ast.c
diff --git a/ast.c b/ast.c
index c3b0c6b..545f513 100644 (file)
--- a/ast.c
+++ b/ast.c
@@ -1478,22 +1478,28 @@ void print_declaration(const declaration_t *declaration)
        case NAMESPACE_STRUCT:
                fputs("struct ", out);
                fputs(declaration->symbol->string, out);
-               fputc(' ', out);
-               print_compound_definition(declaration);
+               if (declaration->init.complete) {
+                       fputc(' ', out);
+                       print_compound_definition(declaration);
+               }
                fputc(';', out);
                break;
        case NAMESPACE_UNION:
                fputs("union ", out);
                fputs(declaration->symbol->string, out);
-               fputc(' ', out);
-               print_compound_definition(declaration);
+               if (declaration->init.complete) {
+                       fputc(' ', out);
+                       print_compound_definition(declaration);
+               }
                fputc(';', out);
                break;
        case NAMESPACE_ENUM:
                fputs("enum ", out);
                fputs(declaration->symbol->string, out);
-               fputc(' ', out);
-               print_enum_definition(declaration);
+               if (declaration->init.complete) {
+                       fputc(' ', out);
+                       print_enum_definition(declaration);
+               }
                fputc(';', out);
                break;
        }