diff --git a/src/parser.cpp b/src/parser.cpp index 14258b5c6..36645d2b6 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -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; }