diff options
| author | Laytan Laats <laytanlaats@hotmail.com> | 2026-01-24 12:59:55 +0100 |
|---|---|---|
| committer | Laytan Laats <laytanlaats@hotmail.com> | 2026-01-24 12:59:55 +0100 |
| commit | a9a65b5377e8146edc35040a1faedd38c425d6cf (patch) | |
| tree | b7f293b2b5673cffff4336e179a559a27d29450d /src/parser.cpp | |
| parent | 8ffc98b4bf791e25e9281ddfe32a1308b5ccbed3 (diff) | |
make #+vet tags always work in addition to command line flags
Diffstat (limited to 'src/parser.cpp')
| -rw-r--r-- | src/parser.cpp | 28 |
1 files changed, 8 insertions, 20 deletions
diff --git a/src/parser.cpp b/src/parser.cpp index 277a405b7..91ee0ba22 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -6363,14 +6363,12 @@ gb_internal u64 parse_vet_tag(Token token_for_pos, String s) { GB_ASSERT(string_starts_with(s, prefix)); s = string_trim_whitespace(substring(s, prefix.len, s.len)); + u64 vet_flags = build_context.vet_flags; + if (s.len == 0) { - return VetFlag_All; + vet_flags |= VetFlag_All; } - - u64 vet_flags = 0; - u64 vet_not_flags = 0; - while (s.len > 0) { String p = string_trim_whitespace(vet_tag_get_token(s, &s, /*allow_colon*/false)); if (p.len == 0) { @@ -6383,16 +6381,16 @@ gb_internal u64 parse_vet_tag(Token token_for_pos, String s) { p = substring(p, 1, p.len); if (p.len == 0) { syntax_error(token_for_pos, "Expected a vet flag name after '!'"); - return build_context.vet_flags; + return vet_flags; } } u64 flag = get_vet_flag_from_name(p); if (flag != VetFlag_NONE) { if (is_notted) { - vet_not_flags |= flag; + vet_flags = vet_flags &~ flag; } else { - vet_flags |= flag; + vet_flags |= flag; } } else { ERROR_BLOCK(); @@ -6410,21 +6408,11 @@ gb_internal u64 parse_vet_tag(Token token_for_pos, String s) { error_line("\tcast\n"); error_line("\ttabs\n"); error_line("\texplicit-allocators\n"); - return build_context.vet_flags; + return vet_flags; } } - if (vet_flags == 0 && vet_not_flags == 0) { - return build_context.vet_flags; - } - if (vet_flags == 0 && vet_not_flags != 0) { - return build_context.vet_flags &~ vet_not_flags; - } - if (vet_flags != 0 && vet_not_flags == 0) { - return vet_flags; - } - GB_ASSERT(vet_flags != 0 && vet_not_flags != 0); - return vet_flags &~ vet_not_flags; + return vet_flags; } gb_internal u64 parse_feature_tag(Token token_for_pos, String s) { |