aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2023-09-30 15:34:39 +0100
committergingerBill <bill@gingerbill.org>2023-09-30 15:34:39 +0100
commit14adcb9db89f4a668210a56d909cdca96088aae2 (patch)
tree3f11a5d5ca0dd638387abc60e6cc50a8e1604d0c
parent41a22bd83d9458249a60a9d1415f4862f1593b76 (diff)
Use `or_break` and `or_continue` where appropriate in the core library
-rw-r--r--core/encoding/json/marshal.odin9
-rw-r--r--core/encoding/xml/helpers.odin4
-rw-r--r--core/fmt/fmt.odin9
-rw-r--r--core/math/big/prime.odin12
-rw-r--r--core/net/dns.odin46
-rw-r--r--core/net/dns_windows.odin13
-rw-r--r--core/odin/ast/ast.odin4
-rw-r--r--core/odin/parser/parser.odin33
-rw-r--r--core/path/filepath/match.odin4
-rw-r--r--core/path/filepath/path.odin5
-rw-r--r--core/path/slashpath/match.odin5
-rw-r--r--core/text/i18n/qt_linguist.odin15
-rw-r--r--core/text/match/strlib.odin5
-rw-r--r--core/unicode/tools/generate_entity_table.odin70
14 files changed, 92 insertions, 142 deletions
diff --git a/core/encoding/json/marshal.odin b/core/encoding/json/marshal.odin
index 43f464bdb..85eca50b6 100644
--- a/core/encoding/json/marshal.odin
+++ b/core/encoding/json/marshal.odin
@@ -265,9 +265,8 @@ marshal_to_writer :: proc(w: io.Writer, v: any, opt: ^Marshal_Options) -> (err:
i := 0
for bucket_index in 0..<map_cap {
- if !runtime.map_hash_is_valid(hs[bucket_index]) {
- continue
- }
+ runtime.map_hash_is_valid(hs[bucket_index]) or_continue
+
opt_write_iteration(w, opt, i) or_return
i += 1
@@ -284,8 +283,8 @@ marshal_to_writer :: proc(w: io.Writer, v: any, opt: ^Marshal_Options) -> (err:
#partial switch info in ti.variant {
case runtime.Type_Info_String:
switch s in a {
- case string: name = s
- case cstring: name = string(s)
+ case string: name = s
+ case cstring: name = string(s)
}
opt_write_key(w, opt, name) or_return
diff --git a/core/encoding/xml/helpers.odin b/core/encoding/xml/helpers.odin
index 200c5c1de..e0b5ecc32 100644
--- a/core/encoding/xml/helpers.odin
+++ b/core/encoding/xml/helpers.odin
@@ -21,13 +21,13 @@ find_child_by_ident :: proc(doc: ^Document, parent_id: Element_ID, ident: string
/*
Skip commments. They have no name.
*/
- if child.kind != .Element { continue }
+ if child.kind != .Element { continue }
/*
If the ident matches and it's the nth such child, return it.
*/
if child.ident == ident {
- if count == nth { return child_id, true }
+ if count == nth { return child_id, true }
count += 1
}
}
diff --git a/core/fmt/fmt.odin b/core/fmt/fmt.odin
index ab57209c3..c2240c275 100644
--- a/core/fmt/fmt.odin
+++ b/core/fmt/fmt.odin
@@ -755,9 +755,8 @@ _parse_int :: proc(s: string, offset: int) -> (result: int, new_offset: int, ok:
new_offset = offset
for new_offset < len(s) {
c := s[new_offset]
- if !is_digit(c) {
- break
- }
+ is_digit(c) or_break
+
new_offset += 1
result *= 10
@@ -2555,9 +2554,7 @@ fmt_value :: proc(fi: ^Info, v: any, verb: rune) {
ks, vs, hs, _, _ := runtime.map_kvh_data_dynamic(m^, info.map_info)
j := 0
for bucket_index in 0..<map_cap {
- if !runtime.map_hash_is_valid(hs[bucket_index]) {
- continue
- }
+ runtime.map_hash_is_valid(hs[bucket_index]) or_continue
if j > 0 {
io.write_string(fi.writer, ", ", &fi.n)
diff --git a/core/math/big/prime.odin b/core/math/big/prime.odin
index 2f8b81af2..7e9607cb3 100644
--- a/core/math/big/prime.odin
+++ b/core/math/big/prime.odin
@@ -1214,7 +1214,6 @@ internal_random_prime :: proc(a: ^Int, size_in_bits: int, trials: int, flags :=
trials = number_of_rabin_miller_trials(size_in_bits)
}
- res: bool
RANDOM_PRIME_ITERATIONS_USED = 0
for {
@@ -1251,11 +1250,7 @@ internal_random_prime :: proc(a: ^Int, size_in_bits: int, trials: int, flags :=
/*
Is it prime?
*/
- res = internal_int_is_prime(a, trials) or_return
-
- if (!res) {
- continue
- }
+ internal_int_is_prime(a, trials) or_return or_continue
if .Safe in flags {
/*
@@ -1267,9 +1262,10 @@ internal_random_prime :: proc(a: ^Int, size_in_bits: int, trials: int, flags :=
/*
Is it prime?
*/
- res = internal_int_is_prime(a, trials) or_return
+ if internal_int_is_prime(a, trials) or_return {
+ break
+ }
}
- if res { break }
}
if .Safe in flags {
diff --git a/core/net/dns.odin b/core/net/dns.odin
index 27713d790..c556450c6 100644
--- a/core/net/dns.odin
+++ b/core/net/dns.odin
@@ -247,23 +247,19 @@ get_dns_records_from_nameservers :: proc(hostname: string, type: DNS_Record_Type
}
defer close(conn)
- _, send_err := send(conn, dns_packet[:], name_server)
- if send_err != nil {
- continue
- }
+ _ = send(conn, dns_packet[:], name_server) or_continue
- set_err := set_option(conn, .Receive_Timeout, time.Second * 1)
- if set_err != nil {
+ if set_option(conn, .Receive_Timeout, time.Second * 1) != nil {
return nil, .Connection_Error
}
- recv_sz, _, recv_err := recv_udp(conn, dns_response_buf[:])
- if recv_err == UDP_Recv_Error.Timeout {
- continue
- } else if recv_err != nil {
- continue
- }
-
+ // recv_sz, _, recv_err := recv_udp(conn, dns_response_buf[:])
+ // if recv_err == UDP_Recv_Error.Timeout {
+ // continue
+ // } else if recv_err != nil {
+ // continue
+ // }
+ recv_sz, _ := recv_udp(conn, dns_response_buf[:]) or_continue
if recv_sz == 0 {
continue
}
@@ -429,11 +425,9 @@ load_hosts :: proc(hosts_file_path: string, allocator := context.allocator) -> (
}
for hostname in splits[1:] {
- if len(hostname) == 0 {
- continue
+ if len(hostname) != 0 {
+ append(&_hosts, DNS_Host_Entry{hostname, addr})
}
-
- append(&_hosts, DNS_Host_Entry{hostname, addr})
}
}
@@ -833,11 +827,9 @@ parse_response :: proc(response: []u8, filter: DNS_Record_Type = nil, allocator
}
rec := parse_record(response, &cur_idx, filter) or_return
- if rec == nil {
- continue
+ if rec != nil {
+ append(&_records, rec)
}
-
- append(&_records, rec)
}
for _ in 0..<authority_count {
@@ -846,11 +838,9 @@ parse_response :: proc(response: []u8, filter: DNS_Record_Type = nil, allocator
}
rec := parse_record(response, &cur_idx, filter) or_return
- if rec == nil {
- continue
+ if rec != nil {
+ append(&_records, rec)
}
-
- append(&_records, rec)
}
for _ in 0..<additional_count {
@@ -859,11 +849,9 @@ parse_response :: proc(response: []u8, filter: DNS_Record_Type = nil, allocator
}
rec := parse_record(response, &cur_idx, filter) or_return
- if rec == nil {
- continue
+ if rec != nil {
+ append(&_records, rec)
}
-
- append(&_records, rec)
}
return _records[:], true
diff --git a/core/net/dns_windows.odin b/core/net/dns_windows.odin
index 72d67c54a..e54b067b6 100644
--- a/core/net/dns_windows.odin
+++ b/core/net/dns_windows.odin
@@ -45,15 +45,22 @@ _get_dns_records_os :: proc(hostname: string, type: DNS_Record_Type, allocator :
count := 0
for r := rec; r != nil; r = r.pNext {
- if r.wType != u16(type) do continue // NOTE(tetra): Should never happen, but...
+ if r.wType != u16(type) {
+ // NOTE(tetra): Should never happen, but...
+ continue
+ }
count += 1
}
recs := make([dynamic]DNS_Record, 0, count)
- if recs == nil do return nil, .System_Error // return no results if OOM.
+ if recs == nil {
+ return nil, .System_Error // return no results if OOM.
+ }
for r := rec; r != nil; r = r.pNext {
- if r.wType != u16(type) do continue // NOTE(tetra): Should never happen, but...
+ if r.wType != u16(type) {
+ continue // NOTE(tetra): Should never happen, but...
+ }
base_record := DNS_Record_Base{
record_name = strings.clone(string(r.pName)),
diff --git a/core/odin/ast/ast.odin b/core/odin/ast/ast.odin
index 67e616a9f..67a26d6f2 100644
--- a/core/odin/ast/ast.odin
+++ b/core/odin/ast/ast.odin
@@ -551,8 +551,8 @@ unparen_expr :: proc(expr: ^Expr) -> (val: ^Expr) {
return
}
for {
- e, ok := val.derived.(^Paren_Expr)
- if !ok || e.expr == nil {
+ e := val.derived.(^Paren_Expr) or_break
+ if e.expr == nil {
break
}
val = e.expr
diff --git a/core/odin/parser/parser.odin b/core/odin/parser/parser.odin
index a2b2a9944..bbfaf9114 100644
--- a/core/odin/parser/parser.odin
+++ b/core/odin/parser/parser.odin
@@ -1053,9 +1053,7 @@ parse_attribute :: proc(p: ^Parser, tok: tokenizer.Token, open_kind, close_kind:
}
append(&elems, elem)
- if !allow_token(p, .Comma) {
- break
- }
+ allow_token(p, .Comma) or_break
}
p.expr_level -= 1
close = expect_token_after(p, close_kind, "attribute")
@@ -1174,9 +1172,7 @@ parse_foreign_decl :: proc(p: ^Parser) -> ^ast.Decl {
path := expect_token(p, .String)
append(&fullpaths, path.text)
- if !allow_token(p, .Comma) {
- break
- }
+ allow_token(p, .Comma) or_break
}
expect_token(p, .Close_Brace)
} else {
@@ -1961,9 +1957,7 @@ parse_field_list :: proc(p: ^Parser, follow: tokenizer.Token_Kind, allowed_flags
eaf := Expr_And_Flags{param, prefix_flags}
append(&list, eaf)
- if !allow_token(p, .Comma) {
- break
- }
+ allow_token(p, .Comma) or_break
}
if p.curr_tok.kind != .Colon {
@@ -2011,10 +2005,7 @@ parse_field_list :: proc(p: ^Parser, follow: tokenizer.Token_Kind, allowed_flags
names = parse_ident_list(p, allow_poly_names)
total_name_count += len(names)
- ok := handle_field(p, &seen_ellipsis, &fields, docs, names, allowed_flags, set_flags)
- if !ok {
- break
- }
+ handle_field(p, &seen_ellipsis, &fields, docs, names, allowed_flags, set_flags) or_break
}
}
@@ -2361,9 +2352,7 @@ parse_operand :: proc(p: ^Parser, lhs: bool) -> ^ast.Expr {
elem := parse_expr(p, false)
append(&args, elem)
- if !allow_token(p, .Comma) {
- break
- }
+ allow_token(p, .Comma) or_break
}
close := expect_token(p, .Close_Brace)
@@ -2696,9 +2685,7 @@ parse_operand :: proc(p: ^Parser, lhs: bool) -> ^ast.Expr {
if _, ok := type.derived.(^ast.Bad_Expr); !ok {
append(&variants, type)
}
- if !allow_token(p, .Comma) {
- break
- }
+ allow_token(p, .Comma) or_break
}
close := expect_closing_brace_of_field_list(p)
@@ -2916,9 +2903,7 @@ parse_elem_list :: proc(p: ^Parser) -> []^ast.Expr {
append(&elems, elem)
- if !allow_token(p, .Comma) {
- break
- }
+ allow_token(p, .Comma) or_break
}
return elems[:]
@@ -2993,9 +2978,7 @@ parse_call_expr :: proc(p: ^Parser, operand: ^ast.Expr) -> ^ast.Expr {
seen_ellipsis = true
}
- if !allow_token(p, .Comma) {
- break
- }
+ allow_token(p, .Comma) or_break
}
close := expect_token_after(p, .Close_Paren, "argument list")
diff --git a/core/path/filepath/match.odin b/core/path/filepath/match.odin
index fe67ebe2c..1279bdd84 100644
--- a/core/path/filepath/match.odin
+++ b/core/path/filepath/match.odin
@@ -99,9 +99,7 @@ scan_chunk :: proc(pattern: string) -> (star: bool, chunk, rest: string) {
case ']':
in_range = false
case '*':
- if !in_range {
- break scan_loop
- }
+ in_range or_break scan_loop
}
}
diff --git a/core/path/filepath/path.odin b/core/path/filepath/path.odin
index fa47e483d..21183e0f7 100644
--- a/core/path/filepath/path.odin
+++ b/core/path/filepath/path.odin
@@ -392,9 +392,8 @@ rel :: proc(base_path, target_path: string, allocator := context.allocator) -> (
for ti < tl && target[ti] != SEPARATOR {
ti += 1
}
- if !strings.equal_fold(target[t0:ti], base[b0:bi]) {
- break
- }
+ strings.equal_fold(target[t0:ti], base[b0:bi]) or_break
+
if bi < bl {
bi += 1
}
diff --git a/core/path/slashpath/match.odin b/core/path/slashpath/match.odin
index 09e774275..15ce174e0 100644
--- a/core/path/slashpath/match.odin
+++ b/core/path/slashpath/match.odin
@@ -93,10 +93,7 @@ scan_chunk :: proc(pattern: string) -> (star: bool, chunk, rest: string) {
case ']':
in_range = false
case '*':
- if !in_range {
- break scan_loop
- }
-
+ in_range or_break scan_loop
}
}
return star, pattern[:i], pattern[i:]
diff --git a/core/text/i18n/qt_linguist.odin b/core/text/i18n/qt_linguist.odin
index f4d2d78d6..72eeb80ff 100644
--- a/core/text/i18n/qt_linguist.odin
+++ b/core/text/i18n/qt_linguist.odin
@@ -91,10 +91,7 @@ parse_qt_linguist_from_bytes :: proc(data: []byte, options := DEFAULT_PARSE_OPTI
// Find messages in section.
nth: int
for {
- message_id, message_found := xml.find_child_by_ident(ts, child_id, "message", nth)
- if !message_found {
- break
- }
+ message_id := xml.find_child_by_ident(ts, child_id, "message", nth) or_break
numerus_tag, _ := xml.find_attribute_val_by_key(ts, message_id, "numerus")
has_plurals := numerus_tag == "yes"
@@ -131,10 +128,7 @@ parse_qt_linguist_from_bytes :: proc(data: []byte, options := DEFAULT_PARSE_OPTI
num_plurals: int
for {
- numerus_id, numerus_found := xml.find_child_by_ident(ts, translation_id, "numerusform", num_plurals)
- if !numerus_found {
- break
- }
+ numerus_id := xml.find_child_by_ident(ts, translation_id, "numerusform", num_plurals) or_break
num_plurals += 1
}
@@ -145,10 +139,7 @@ parse_qt_linguist_from_bytes :: proc(data: []byte, options := DEFAULT_PARSE_OPTI
num_plurals = 0
for {
- numerus_id, numerus_found := xml.find_child_by_ident(ts, translation_id, "numerusform", num_plurals)
- if !numerus_found {
- break
- }
+ numerus_id := xml.find_child_by_ident(ts, translation_id, "numerusform", num_plurals) or_break
numerus := get_str(ts.elements[numerus_id].value[0]) or_return
numerus, _ = strings.intern_get(&translation.intern, numerus)
section[source][num_plurals] = numerus
diff --git a/core/text/match/strlib.odin b/core/text/match/strlib.odin
index 654996bc7..189ed7ec0 100644
--- a/core/text/match/strlib.odin
+++ b/core/text/match/strlib.odin
@@ -775,10 +775,9 @@ gsub_with :: proc(
haystack := haystack
for {
- length, err := find_aux(haystack, pattern, 0, false, &captures)
-
+ length := find_aux(haystack, pattern, 0, false, &captures) or_break
// done
- if length == 0 || err != .OK {
+ if length == 0 {
break
}
diff --git a/core/unicode/tools/generate_entity_table.odin b/core/unicode/tools/generate_entity_table.odin
index fb4e4c2a4..e5a4d5513 100644
--- a/core/unicode/tools/generate_entity_table.odin
+++ b/core/unicode/tools/generate_entity_table.odin
@@ -86,44 +86,40 @@ generate_encoding_entity_table :: proc() {
nth := 0
for {
- character_entity, entity_ok := xml.find_child_by_ident(char, "entity", nth)
- if !entity_ok { break }
-
- nth += 1
- if name, name_ok := xml.find_attribute_val_by_key(character_entity, "id"); name_ok {
-
- if len(name) == 0 {
- /*
- Invalid name. Skip.
- */
- continue
- }
-
- if name == "\"\"" {
- printf("%#v\n", char)
- printf("%#v\n", character_entity)
- }
-
- if len(name) > max_name_length { longest_name = name }
- if len(name) < min_name_length { shortest_name = name }
-
- min_name_length = min(min_name_length, len(name))
- max_name_length = max(max_name_length, len(name))
-
- e := Entity{
- name = name,
- codepoint = rune(codepoint),
- description = description,
- }
-
- if _, seen := entity_map[name]; seen {
- continue
- }
-
- entity_map[name] = e
- append(&names, name)
- count += 1
+ character_entity := xml.find_child_by_ident(char, "entity", nth) or_break
+ nth += 1
+ name := xml.find_attribute_val_by_key(character_entity, "id") or_continue
+ if len(name) == 0 {
+ /*
+ Invalid name. Skip.
+ */
+ continue
}
+
+ if name == "\"\"" {
+ printf("%#v\n", char)
+ printf("%#v\n", character_entity)
+ }
+
+ if len(name) > max_name_length { longest_name = name }
+ if len(name) < min_name_length { shortest_name = name }
+
+ min_name_length = min(min_name_length, len(name))
+ max_name_length = max(max_name_length, len(name))
+
+ e := Entity{
+ name = name,
+ codepoint = rune(codepoint),
+ description = description,
+ }
+
+ if name in entity_map {
+ continue
+ }
+
+ entity_map[name] = e
+ append(&names, name)
+ count += 1
}
}
}