diff options
| author | gingerBill <bill@gingerbill.org> | 2019-11-05 20:09:09 +0000 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2019-11-05 20:09:09 +0000 |
| commit | dacfc9de15c8bbf510c52b708b64e7980d8fe6ff (patch) | |
| tree | 30b371ad5ebdd17bc940d09611eea3f334635557 | |
| parent | 689aa4d734d9ab5cf30306cc42e5e075990ca06e (diff) | |
Fix `//+build` for ! e.g. `//+build !windows amd64, linux !amd64`
| -rw-r--r-- | src/parser.cpp | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/parser.cpp b/src/parser.cpp index 891711a50..7d59eaf9e 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -4585,13 +4585,12 @@ String build_tag_get_token(String s, String *out) { while (n < s.len) { Rune rune = 0; isize width = gb_utf8_decode(&s[n], s.len-n, &rune); - if (n == 0 && rune == ',') { - *out = substring(s, width, s.len); - return substring(s, 0, width); - } - if (!rune_is_letter(rune) && !rune_is_digit(rune)) { - *out = substring(s, n, s.len); - return substring(s, 0, n); + if (n == 0 && rune == '!') { + + } else if (!rune_is_letter(rune) && !rune_is_digit(rune)) { + isize k = gb_max(gb_max(n, width), 1); + *out = substring(s, k, s.len); + return substring(s, 0, k); } n += width; } @@ -4614,7 +4613,7 @@ bool parse_build_tag(Token token_for_pos, String s) { bool this_kind_correct = true; do { - String p = build_tag_get_token(s, &s); + String p = string_trim_whitespace(build_tag_get_token(s, &s)); if (p.len == 0) break; if (p == ",") break; |