summaryrefslogtreecommitdiff
path: root/src/codegen
diff options
context:
space:
mode:
authorZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-01-23 15:55:02 +0000
committerZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-01-23 15:55:02 +0000
commitc735d4b45f2db336e2aff8d94da7a08bb1fad68f (patch)
tree16f079ddb7e400ddce4a83be47bed5cc6d46c884 /src/codegen
parent8d0ea93a7220730ccce754429549fd63e4eeaa7c (diff)
Update for tuples.
Diffstat (limited to 'src/codegen')
-rw-r--r--src/codegen/codegen.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/codegen/codegen.c b/src/codegen/codegen.c
index 22cbc15..95e0ccd 100644
--- a/src/codegen/codegen.c
+++ b/src/codegen/codegen.c
@@ -603,7 +603,15 @@ void codegen_expression(ParserContext *ctx, ASTNode *node, FILE *out)
emit_auto_type(ctx, node->member.target, node->token, out);
fprintf(out, " _t = (");
codegen_expression(ctx, node->member.target, out);
- fprintf(out, "); _t ? _t->%s : 0; })", node->member.field);
+ char *field = node->member.field;
+ if (field && field[0] >= '0' && field[0] <= '9')
+ {
+ fprintf(out, "); _t ? _t->v%s : 0; })", field);
+ }
+ else
+ {
+ fprintf(out, "); _t ? _t->%s : 0; })", field);
+ }
}
else
{
@@ -619,7 +627,15 @@ void codegen_expression(ParserContext *ctx, ASTNode *node, FILE *out)
{
free(lt);
}
- fprintf(out, "%s%s", actually_ptr ? "->" : ".", node->member.field);
+ char *field = node->member.field;
+ if (field && field[0] >= '0' && field[0] <= '9')
+ {
+ fprintf(out, "%sv%s", actually_ptr ? "->" : ".", field);
+ }
+ else
+ {
+ fprintf(out, "%s%s", actually_ptr ? "->" : ".", field);
+ }
}
break;
case NODE_EXPR_INDEX: