Allow for -> (#simd[N]T) style return types

This commit is contained in:
gingerBill
2026-06-24 10:51:28 +01:00
parent 078664a5c2
commit ade003e128

View File

@@ -4214,18 +4214,33 @@ gb_internal FieldFlag is_token_field_prefix(AstFile *f) {
return FieldFlag_using;
case Token_Hash:
advance_token(f);
switch (f->curr_token.kind) {
case Token_Ident:
for (i32 i = 0; i < gb_count_of(parse_field_prefix_mappings); i++) {
auto const &mapping = parse_field_prefix_mappings[i];
if (mapping.token_kind == Token_Hash) {
if (f->curr_token.string == mapping.name) {
return mapping.flag;
}
{
// Check for types first before fields
Token tok = peek_token(f);
if (tok.kind == Token_Ident) {
if (tok.string == "simd" ||
tok.string == "type" ||
tok.string == "row_major" ||
tok.string == "column_major" ||
tok.string == "sparse" ||
tok.string == "soa") {
return FieldFlag_Invalid;
}
}
break;
advance_token(f);
switch (f->curr_token.kind) {
case Token_Ident:
for (i32 i = 0; i < gb_count_of(parse_field_prefix_mappings); i++) {
auto const &mapping = parse_field_prefix_mappings[i];
if (mapping.token_kind == Token_Hash) {
if (f->curr_token.string == mapping.name) {
return mapping.flag;
}
}
}
break;
}
}
return FieldFlag_Unknown;
}