aboutsummaryrefslogtreecommitdiff
path: root/src/parser.cpp
diff options
context:
space:
mode:
authorgingerBill <gingerBill@users.noreply.github.com>2026-01-24 13:55:41 +0000
committerGitHub <noreply@github.com>2026-01-24 13:55:41 +0000
commitcc4a7ec11c0ea30d493eaabc131edfe70811bf21 (patch)
tree54c0ffd7f84560f91f3b90fdbfc14dc835375339 /src/parser.cpp
parentcd684ed7a06173cd6164b9511f467a4e7828f3a0 (diff)
parenta9a65b5377e8146edc35040a1faedd38c425d6cf (diff)
Merge pull request #6166 from laytan/vet-file-tags-in-addition-to-command-line
make #+vet tags always work in addition to command line flags
Diffstat (limited to 'src/parser.cpp')
-rw-r--r--src/parser.cpp28
1 files changed, 8 insertions, 20 deletions
diff --git a/src/parser.cpp b/src/parser.cpp
index fe864a6bc..c1a7fe0ff 100644
--- a/src/parser.cpp
+++ b/src/parser.cpp
@@ -6369,14 +6369,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) {
@@ -6389,16 +6387,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();
@@ -6416,21 +6414,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) {