summaryrefslogtreecommitdiff
path: root/src/codegen/codegen_decl.c
diff options
context:
space:
mode:
authorZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-01-17 00:10:30 +0000
committerZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-01-17 00:10:30 +0000
commitea160abc678e9578b5e140121a6d7c59a3b9dd06 (patch)
tree0ae4d0ed1449f74d6cc361a5f8787892c0789168 /src/codegen/codegen_decl.c
parenta5d5a97818fb4fbd26c4fb25a5c410b1a60a1b18 (diff)
Improved struct pointer codegen, template instantiation and docs...
Diffstat (limited to 'src/codegen/codegen_decl.c')
-rw-r--r--src/codegen/codegen_decl.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/codegen/codegen_decl.c b/src/codegen/codegen_decl.c
index fe2829e..18e6987 100644
--- a/src/codegen/codegen_decl.c
+++ b/src/codegen/codegen_decl.c
@@ -170,7 +170,7 @@ void emit_enum_protos(ASTNode *node, FILE *out)
{
if (v->variant.payload)
{
- char *tstr = type_to_string(v->variant.payload);
+ char *tstr = codegen_type_to_string(v->variant.payload);
fprintf(out, "%s %s_%s(%s v);\n", node->enm.name, node->enm.name,
v->variant.name, tstr);
free(tstr);
@@ -306,7 +306,7 @@ void emit_struct_defs(ParserContext *ctx, ASTNode *node, FILE *out)
{
if (v->variant.payload)
{
- char *tstr = type_to_string(v->variant.payload);
+ char *tstr = codegen_type_to_string(v->variant.payload);
fprintf(out, "%s %s; ", tstr, v->variant.name);
free(tstr);
}
@@ -318,7 +318,7 @@ void emit_struct_defs(ParserContext *ctx, ASTNode *node, FILE *out)
{
if (v->variant.payload)
{
- char *tstr = type_to_string(v->variant.payload);
+ char *tstr = codegen_type_to_string(v->variant.payload);
fprintf(out,
"%s %s_%s(%s v) { return (%s){.tag=%s_%s_Tag, "
".data.%s=v}; }\n",
@@ -498,7 +498,8 @@ void emit_protos(ASTNode *node, FILE *out)
}
else
{
- fprintf(out, "%s %s(%s);\n", f->func.ret_type, f->func.name, f->func.args);
+ emit_func_signature(out, f, NULL);
+ fprintf(out, ";\n");
}
}
else if (f->type == NODE_IMPL)
@@ -574,7 +575,8 @@ void emit_protos(ASTNode *node, FILE *out)
}
else
{
- fprintf(out, "%s %s(%s);\n", m->func.ret_type, proto, m->func.args);
+ emit_func_signature(out, m, proto);
+ fprintf(out, ";\n");
}
free(proto);