summaryrefslogtreecommitdiff
path: root/src/codegen
diff options
context:
space:
mode:
authorZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-01-12 12:35:57 +0000
committerZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-01-12 12:36:16 +0000
commit9a54f2f52fdaf9364b0f757f5cdcbf09de230919 (patch)
tree3fbbe8bb9216c6b63d56b9b15f972b1671bb57aa /src/codegen
parent96faad9e45f799fe5a595ce28cb0718fdb9ad6ca (diff)
Improved comptime feature, and added example.
Diffstat (limited to 'src/codegen')
-rw-r--r--src/codegen/codegen_decl.c4
-rw-r--r--src/codegen/codegen_utils.c9
2 files changed, 11 insertions, 2 deletions
diff --git a/src/codegen/codegen_decl.c b/src/codegen/codegen_decl.c
index b009a64..ac4ae14 100644
--- a/src/codegen/codegen_decl.c
+++ b/src/codegen/codegen_decl.c
@@ -433,7 +433,7 @@ void emit_globals(ParserContext *ctx, ASTNode *node, FILE *out)
}
if (node->var_decl.type_str)
{
- fprintf(out, "%s %s", node->var_decl.type_str, node->var_decl.name);
+ emit_var_decl_type(ctx, out, node->var_decl.type_str, node->var_decl.name);
}
else
{
@@ -445,7 +445,7 @@ void emit_globals(ParserContext *ctx, ASTNode *node, FILE *out)
if (inferred && strcmp(inferred, "__auto_type") != 0)
{
- fprintf(out, "%s %s", inferred, node->var_decl.name);
+ emit_var_decl_type(ctx, out, inferred, node->var_decl.name);
}
else
{
diff --git a/src/codegen/codegen_utils.c b/src/codegen/codegen_utils.c
index 8969276..2feb757 100644
--- a/src/codegen/codegen_utils.c
+++ b/src/codegen/codegen_utils.c
@@ -117,6 +117,15 @@ char *infer_type(ParserContext *ctx, ASTNode *node)
return node->resolved_type;
}
+ if (node->type == NODE_EXPR_LITERAL)
+ {
+ if (node->type_info)
+ {
+ return type_to_string(node->type_info);
+ }
+ return NULL;
+ }
+
if (node->type == NODE_EXPR_VAR)
{
Symbol *sym = find_symbol_entry(ctx, node->var_ref.name);