diff options
| author | Zuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian> | 2026-01-23 17:29:30 +0000 |
|---|---|---|
| committer | Zuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian> | 2026-01-23 17:29:30 +0000 |
| commit | d7b24c552305f1bd8c49e253d14dcf4b1581df2c (patch) | |
| tree | 1f5ae2aa05af21120525b180d07b2657078678da /src/parser/parser_type.c | |
| parent | c735d4b45f2db336e2aff8d94da7a08bb1fad68f (diff) | |
Fix for #94
Diffstat (limited to 'src/parser/parser_type.c')
| -rw-r--r-- | src/parser/parser_type.c | 75 |
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; |
