aboutsummaryrefslogtreecommitdiff
path: root/src/parser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser.cpp')
-rw-r--r--src/parser.cpp21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/parser.cpp b/src/parser.cpp
index b99182189..7d1c37d84 100644
--- a/src/parser.cpp
+++ b/src/parser.cpp
@@ -5563,7 +5563,9 @@ gb_internal u64 parse_vet_tag(Token token_for_pos, String s) {
while (s.len > 0) {
String p = string_trim_whitespace(vet_tag_get_token(s, &s));
- if (p.len == 0) break;
+ if (p.len == 0) {
+ break;
+ }
bool is_notted = false;
if (p[0] == '!') {
@@ -5571,14 +5573,10 @@ 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 '!'");
- break;
+ return build_context.vet_flags;
}
}
- if (p.len == 0) {
- continue;
- }
-
u64 flag = get_vet_flag_from_name(p);
if (flag != VetFlag_NONE) {
if (is_notted) {
@@ -5595,13 +5593,20 @@ gb_internal u64 parse_vet_tag(Token token_for_pos, String s) {
error_line("\tusing-stmt\n");
error_line("\tusing-param\n");
error_line("\textra\n");
- break;
+ return build_context.vet_flags;
}
}
+ if (vet_flags == 0 && vet_not_flags == 0) {
+ return build_context.vet_flags;
+ }
if (vet_flags == 0 && vet_not_flags != 0) {
- vet_flags = VetFlag_All;
+ 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;
}