From cab3795047870ccc3a9d124e8b940e47d062a7c6 Mon Sep 17 00:00:00 2001 From: Matthew Sotoudeh Date: Wed, 26 Jul 2023 15:15:53 -0700 Subject: fix bug in printing type decls --- codegen.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'codegen.c') diff --git a/codegen.c b/codegen.c index 7e8565a..8b99e64 100644 --- a/codegen.c +++ b/codegen.c @@ -145,7 +145,11 @@ const void typedecl(Type *type) { println("typedef char Type_%d ;", type->id); break; case TY_PTR: + // When we recurse, we need to set the type id to 0 because we haven't + // printed it out yet. + type->id = 0; typedecl(type->base); + if (!type->id) type->id = count(); println("typedef Type_%d * Type_%d ;", type->base->id, type->id); break; case TY_FUNC: { @@ -167,7 +171,9 @@ const void typedecl(Type *type) { break; } case TY_ARRAY: + type->id = 0; typedecl(type->base); + if (!type->id) type->id = count(); if (type->array_len == -1) println("typedef Type_%d Type_%d [ ] ;", type->base->id, type->id); else -- cgit v1.2.3