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-12 21:17:36 +0000
committerZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-01-12 21:17:36 +0000
commit5e119f776780c05ca2002ef692d7458801585bdc (patch)
treee61a125cf5a554181d445d529022d64f730f2041 /src/parser/parser_type.c
parent097bb1fb97b9a4da82d191d316fa821d74d12152 (diff)
lowercase types support.
Diffstat (limited to 'src/parser/parser_type.c')
-rw-r--r--src/parser/parser_type.c99
1 files changed, 98 insertions, 1 deletions
diff --git a/src/parser/parser_type.c b/src/parser/parser_type.c
index 04a7de9..941c763 100644
--- a/src/parser/parser_type.c
+++ b/src/parser/parser_type.c
@@ -79,6 +79,39 @@ Type *parse_type_base(ParserContext *ctx, Lexer *l)
{
resolved_suffix = "uint64_t";
}
+ // Lowercase aliases
+ else if (strcmp(suffix, "i8") == 0)
+ {
+ resolved_suffix = "int8_t";
+ }
+ else if (strcmp(suffix, "u8") == 0)
+ {
+ resolved_suffix = "uint8_t";
+ }
+ else if (strcmp(suffix, "i16") == 0)
+ {
+ resolved_suffix = "int16_t";
+ }
+ else if (strcmp(suffix, "u16") == 0)
+ {
+ resolved_suffix = "uint16_t";
+ }
+ else if (strcmp(suffix, "i32") == 0)
+ {
+ resolved_suffix = "int32_t";
+ }
+ else if (strcmp(suffix, "u32") == 0)
+ {
+ resolved_suffix = "uint32_t";
+ }
+ else if (strcmp(suffix, "i64") == 0)
+ {
+ resolved_suffix = "int64_t";
+ }
+ else if (strcmp(suffix, "u64") == 0)
+ {
+ resolved_suffix = "uint64_t";
+ }
else if (strcmp(suffix, "usize") == 0)
{
resolved_suffix = "size_t";
@@ -123,6 +156,11 @@ Type *parse_type_base(ParserContext *ctx, Lexer *l)
free(name);
return type_new(TYPE_VOID);
}
+ if (strcmp(name, "u0") == 0)
+ {
+ free(name);
+ return type_new(TYPE_VOID);
+ }
if (strcmp(name, "I8") == 0)
{
free(name);
@@ -168,11 +206,21 @@ Type *parse_type_base(ParserContext *ctx, Lexer *l)
free(name);
return type_new(TYPE_F32);
}
+ if (strcmp(name, "f32") == 0)
+ {
+ free(name);
+ return type_new(TYPE_F32);
+ }
if (strcmp(name, "F64") == 0)
{
free(name);
return type_new(TYPE_F64);
}
+ if (strcmp(name, "f64") == 0)
+ {
+ free(name);
+ return type_new(TYPE_F64);
+ }
if (strcmp(name, "usize") == 0)
{
free(name);
@@ -198,6 +246,56 @@ Type *parse_type_base(ParserContext *ctx, Lexer *l)
free(name);
return type_new(TYPE_U128);
}
+ if (strcmp(name, "i8") == 0)
+ {
+ free(name);
+ return type_new(TYPE_I8);
+ }
+ if (strcmp(name, "u8") == 0)
+ {
+ free(name);
+ return type_new(TYPE_U8);
+ }
+ if (strcmp(name, "i16") == 0)
+ {
+ free(name);
+ return type_new(TYPE_I16);
+ }
+ if (strcmp(name, "u16") == 0)
+ {
+ free(name);
+ return type_new(TYPE_U16);
+ }
+ if (strcmp(name, "i32") == 0)
+ {
+ free(name);
+ return type_new(TYPE_I32);
+ }
+ if (strcmp(name, "u32") == 0)
+ {
+ free(name);
+ return type_new(TYPE_U32);
+ }
+ if (strcmp(name, "i64") == 0)
+ {
+ free(name);
+ return type_new(TYPE_I64);
+ }
+ if (strcmp(name, "u64") == 0)
+ {
+ free(name);
+ return type_new(TYPE_U64);
+ }
+ if (strcmp(name, "i128") == 0)
+ {
+ free(name);
+ return type_new(TYPE_I128);
+ }
+ if (strcmp(name, "u128") == 0)
+ {
+ free(name);
+ return type_new(TYPE_U128);
+ }
if (strcmp(name, "rune") == 0)
{
free(name);
@@ -300,7 +398,6 @@ Type *parse_type_base(ParserContext *ctx, Lexer *l)
zpanic_at(t, "Expected > after generic");
}
- // --- INSTANTIATION TRIGGER ---
char *arg_str = type_to_string(arg);
instantiate_generic(ctx, name, arg_str);