mirror of
https://github.com/odin-lang/Odin.git
synced 2026-07-11 02:19:30 +00:00
Allow for -> (#simd[N]T) style return types
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user