summaryrefslogtreecommitdiff
path: root/typedefs_cgen.c
diff options
context:
space:
mode:
Diffstat (limited to 'typedefs_cgen.c')
-rw-r--r--typedefs_cgen.c42
1 files changed, 1 insertions, 41 deletions
diff --git a/typedefs_cgen.c b/typedefs_cgen.c
index 531fb0d..884d61e 100644
--- a/typedefs_cgen.c
+++ b/typedefs_cgen.c
@@ -7,46 +7,6 @@ static bool typedefs_stmt(CGenerator *g, Statement *s);
static bool typedefs_decl(CGenerator *g, Declaration *d);
static bool typedefs_expr(CGenerator *g, Expression *e);
-#define cgen_recurse_into_type(f, g, type, extra) \
- switch (type->kind) { \
- case TYPE_STRUCT: \
- arr_foreach(type->struc->fields, Field, fl) \
- if (!f(g, fl->type, extra)) \
- return false; \
- break; \
- case TYPE_FN: \
- arr_foreach(type->fn.types, Type, sub) { \
- if (!f(g, sub, extra)) \
- return false; \
- } \
- break; \
- case TYPE_TUPLE: \
- arr_foreach(type->tuple, Type, sub) \
- if (!f(g, sub, extra)) \
- return false; \
- break; \
- case TYPE_ARR: \
- if (!f(g, type->arr.of, extra)) \
- return false; \
- break; \
- case TYPE_SLICE: \
- if (!f(g, type->slice, extra)) \
- return false; \
- break; \
- case TYPE_PTR: \
- if (!f(g, type->ptr, extra)) \
- return false; \
- break; \
- case TYPE_VOID: \
- case TYPE_BUILTIN: \
- case TYPE_PKG: \
- case TYPE_TYPE: \
- case TYPE_UNKNOWN: \
- break; \
- case TYPE_EXPR: assert(0); \
- }
-
-
/* i is the name for this type, NULL if not available */
/* ALWAYS RETURNS TRUE. it just returns a bool for cgen_recurse_into_type to work */
static bool typedefs_type(CGenerator *g, Type *type, Identifier i) {
@@ -72,7 +32,7 @@ static bool typedefs_type(CGenerator *g, Type *type, Identifier i) {
cgen_nl(g);
}
}
- cgen_recurse_into_type(typedefs_type, g, type, NULL);
+ cgen_recurse_subtypes(typedefs_type, g, type, NULL);
return true;
}