summaryrefslogtreecommitdiff
path: root/src/parser/parser_type.c
diff options
context:
space:
mode:
authorZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-01-23 17:29:30 +0000
committerZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-01-23 17:29:30 +0000
commitd7b24c552305f1bd8c49e253d14dcf4b1581df2c (patch)
tree1f5ae2aa05af21120525b180d07b2657078678da /src/parser/parser_type.c
parentc735d4b45f2db336e2aff8d94da7a08bb1fad68f (diff)
Fix for #94
Diffstat (limited to 'src/parser/parser_type.c')
-rw-r--r--src/parser/parser_type.c75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/parser/parser_type.c b/src/parser/parser_type.c
index 4e44c00..b11bedb 100644
--- a/src/parser/parser_type.c
+++ b/src/parser/parser_type.c
@@ -368,6 +368,76 @@ Type *parse_type_base(ParserContext *ctx, Lexer *l)
free(name);
return type_new(TYPE_CHAR);
}
+ if (strcmp(name, "long") == 0)
+ {
+ free(name);
+ return type_new(TYPE_I64);
+ }
+ if (strcmp(name, "short") == 0)
+ {
+ free(name);
+ return type_new(TYPE_I16);
+ }
+ if (strcmp(name, "unsigned") == 0)
+ {
+ free(name);
+ return type_new(TYPE_UINT);
+ }
+ if (strcmp(name, "signed") == 0)
+ {
+ free(name);
+ return type_new(TYPE_INT);
+ }
+ if (strcmp(name, "int8_t") == 0)
+ {
+ free(name);
+ return type_new(TYPE_I8);
+ }
+ if (strcmp(name, "uint8_t") == 0)
+ {
+ free(name);
+ return type_new(TYPE_U8);
+ }
+ if (strcmp(name, "int16_t") == 0)
+ {
+ free(name);
+ return type_new(TYPE_I16);
+ }
+ if (strcmp(name, "uint16_t") == 0)
+ {
+ free(name);
+ return type_new(TYPE_U16);
+ }
+ if (strcmp(name, "int32_t") == 0)
+ {
+ free(name);
+ return type_new(TYPE_I32);
+ }
+ if (strcmp(name, "uint32_t") == 0)
+ {
+ free(name);
+ return type_new(TYPE_U32);
+ }
+ if (strcmp(name, "int64_t") == 0)
+ {
+ free(name);
+ return type_new(TYPE_I64);
+ }
+ if (strcmp(name, "uint64_t") == 0)
+ {
+ free(name);
+ return type_new(TYPE_U64);
+ }
+ if (strcmp(name, "size_t") == 0)
+ {
+ free(name);
+ return type_new(TYPE_USIZE);
+ }
+ if (strcmp(name, "ssize_t") == 0)
+ {
+ free(name);
+ return type_new(TYPE_ISIZE);
+ }
// Selective imports ONLY apply when we're NOT in a module context
if (!ctx->current_module_prefix)
@@ -395,6 +465,11 @@ Type *parse_type_base(ParserContext *ctx, Lexer *l)
name = prefixed_name;
}
+ if (!is_known_generic(ctx, name) && strcmp(name, "Self") != 0)
+ {
+ register_type_usage(ctx, name, t);
+ }
+
Type *ty = type_new(TYPE_STRUCT);
ty->name = name;
ty->is_explicit_struct = explicit_struct;