mirror of
https://github.com/Ed94/Odin.git
synced 2026-07-30 19:30:06 +00:00
Add more uses of #no_capture
This commit is contained in:
@@ -139,7 +139,7 @@ clear :: proc "contextless" (a: ^$A/Small_Array($N, $T)) {
|
||||
resize(a, 0)
|
||||
}
|
||||
|
||||
push_back_elems :: proc "contextless" (a: ^$A/Small_Array($N, $T), items: ..T) {
|
||||
push_back_elems :: proc "contextless" (a: ^$A/Small_Array($N, $T), #no_capture items: ..T) {
|
||||
n := copy(a.data[a.len:], items[:])
|
||||
a.len += n
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ import "core:fmt"
|
||||
import "core:unicode"
|
||||
import "core:unicode/utf8"
|
||||
|
||||
Error_Handler :: #type proc(pos: Pos, fmt: string, args: ..any)
|
||||
Error_Handler :: #type proc(pos: Pos, fmt: string, #no_capture args: ..any)
|
||||
|
||||
Token :: struct {
|
||||
kind: Token_Kind,
|
||||
@@ -112,13 +112,13 @@ offset_to_pos :: proc(t: ^Tokenizer, offset: int) -> Pos {
|
||||
}
|
||||
}
|
||||
|
||||
default_error_handler :: proc(pos: Pos, msg: string, args: ..any) {
|
||||
default_error_handler :: proc(pos: Pos, msg: string, #no_capture args: ..any) {
|
||||
fmt.eprintf("%s(%d:%d) ", pos.file, pos.line, pos.column)
|
||||
fmt.eprintf(msg, ..args)
|
||||
fmt.eprintf("\n")
|
||||
}
|
||||
|
||||
error :: proc(t: ^Tokenizer, offset: int, msg: string, args: ..any) {
|
||||
error :: proc(t: ^Tokenizer, offset: int, msg: string, #no_capture args: ..any) {
|
||||
pos := offset_to_pos(t, offset)
|
||||
if t.err != nil {
|
||||
t.err(pos, msg, ..args)
|
||||
|
||||
+16
-16
@@ -75,43 +75,43 @@ nil_logger :: proc() -> Logger {
|
||||
return Logger{nil_logger_proc, nil, Level.Debug, nil}
|
||||
}
|
||||
|
||||
debugf :: proc(fmt_str: string, args: ..any, location := #caller_location) {
|
||||
debugf :: proc(fmt_str: string, #no_capture args: ..any, location := #caller_location) {
|
||||
logf(.Debug, fmt_str, ..args, location=location)
|
||||
}
|
||||
infof :: proc(fmt_str: string, args: ..any, location := #caller_location) {
|
||||
infof :: proc(fmt_str: string, #no_capture args: ..any, location := #caller_location) {
|
||||
logf(.Info, fmt_str, ..args, location=location)
|
||||
}
|
||||
warnf :: proc(fmt_str: string, args: ..any, location := #caller_location) {
|
||||
warnf :: proc(fmt_str: string, #no_capture args: ..any, location := #caller_location) {
|
||||
logf(.Warning, fmt_str, ..args, location=location)
|
||||
}
|
||||
errorf :: proc(fmt_str: string, args: ..any, location := #caller_location) {
|
||||
errorf :: proc(fmt_str: string, #no_capture args: ..any, location := #caller_location) {
|
||||
logf(.Error, fmt_str, ..args, location=location)
|
||||
}
|
||||
fatalf :: proc(fmt_str: string, args: ..any, location := #caller_location) {
|
||||
fatalf :: proc(fmt_str: string, #no_capture args: ..any, location := #caller_location) {
|
||||
logf(.Fatal, fmt_str, ..args, location=location)
|
||||
}
|
||||
|
||||
debug :: proc(args: ..any, sep := " ", location := #caller_location) {
|
||||
debug :: proc(#no_capture args: ..any, sep := " ", location := #caller_location) {
|
||||
log(.Debug, ..args, sep=sep, location=location)
|
||||
}
|
||||
info :: proc(args: ..any, sep := " ", location := #caller_location) {
|
||||
info :: proc(#no_capture args: ..any, sep := " ", location := #caller_location) {
|
||||
log(.Info, ..args, sep=sep, location=location)
|
||||
}
|
||||
warn :: proc(args: ..any, sep := " ", location := #caller_location) {
|
||||
warn :: proc(#no_capture args: ..any, sep := " ", location := #caller_location) {
|
||||
log(.Warning, ..args, sep=sep, location=location)
|
||||
}
|
||||
error :: proc(args: ..any, sep := " ", location := #caller_location) {
|
||||
error :: proc(#no_capture args: ..any, sep := " ", location := #caller_location) {
|
||||
log(.Error, ..args, sep=sep, location=location)
|
||||
}
|
||||
fatal :: proc(args: ..any, sep := " ", location := #caller_location) {
|
||||
fatal :: proc(#no_capture args: ..any, sep := " ", location := #caller_location) {
|
||||
log(.Fatal, ..args, sep=sep, location=location)
|
||||
}
|
||||
|
||||
panic :: proc(args: ..any, location := #caller_location) -> ! {
|
||||
panic :: proc(#no_capture args: ..any, location := #caller_location) -> ! {
|
||||
log(.Fatal, ..args, location=location)
|
||||
runtime.panic("log.panic", location)
|
||||
}
|
||||
panicf :: proc(fmt_str: string, args: ..any, location := #caller_location) -> ! {
|
||||
panicf :: proc(fmt_str: string, #no_capture args: ..any, location := #caller_location) -> ! {
|
||||
logf(.Fatal, fmt_str, ..args, location=location)
|
||||
runtime.panic("log.panicf", location)
|
||||
}
|
||||
@@ -133,14 +133,14 @@ assert :: proc(condition: bool, message := "", loc := #caller_location) {
|
||||
}
|
||||
|
||||
@(disabled=ODIN_DISABLE_ASSERT)
|
||||
assertf :: proc(condition: bool, fmt_str: string, args: ..any, loc := #caller_location) {
|
||||
assertf :: proc(condition: bool, fmt_str: string, #no_capture args: ..any, loc := #caller_location) {
|
||||
if !condition {
|
||||
// NOTE(dragos): We are using the same trick as in builtin.assert
|
||||
// to improve performance to make the CPU not
|
||||
// execute speculatively, making it about an order of
|
||||
// magnitude faster
|
||||
@(cold)
|
||||
internal :: proc(loc: runtime.Source_Code_Location, fmt_str: string, args: ..any) {
|
||||
internal :: proc(loc: runtime.Source_Code_Location, fmt_str: string, #no_capture args: ..any) {
|
||||
p := context.assertion_failure_proc
|
||||
if p == nil {
|
||||
p = runtime.default_assertion_failure_proc
|
||||
@@ -155,7 +155,7 @@ assertf :: proc(condition: bool, fmt_str: string, args: ..any, loc := #caller_lo
|
||||
|
||||
|
||||
|
||||
log :: proc(level: Level, args: ..any, sep := " ", location := #caller_location) {
|
||||
log :: proc(level: Level, #no_capture args: ..any, sep := " ", location := #caller_location) {
|
||||
logger := context.logger
|
||||
if logger.procedure == nil {
|
||||
return
|
||||
@@ -167,7 +167,7 @@ log :: proc(level: Level, args: ..any, sep := " ", location := #caller_location)
|
||||
logger.procedure(logger.data, level, str, logger.options, location)
|
||||
}
|
||||
|
||||
logf :: proc(level: Level, fmt_str: string, args: ..any, location := #caller_location) {
|
||||
logf :: proc(level: Level, fmt_str: string, #no_capture args: ..any, location := #caller_location) {
|
||||
logger := context.logger
|
||||
if logger.procedure == nil {
|
||||
return
|
||||
|
||||
@@ -404,7 +404,7 @@ clear_if_uninitialized_single :: proc(arg: ^Int, allocator := context.allocator)
|
||||
return #force_inline internal_clear_if_uninitialized_single(arg, allocator)
|
||||
}
|
||||
|
||||
clear_if_uninitialized_multi :: proc(args: ..^Int, allocator := context.allocator) -> (err: Error) {
|
||||
clear_if_uninitialized_multi :: proc(#no_capture args: ..^Int, allocator := context.allocator) -> (err: Error) {
|
||||
args := args
|
||||
assert_if_nil(..args)
|
||||
|
||||
@@ -420,7 +420,7 @@ error_if_immutable_single :: proc(arg: ^Int) -> (err: Error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
error_if_immutable_multi :: proc(args: ..^Int) -> (err: Error) {
|
||||
error_if_immutable_multi :: proc(#no_capture args: ..^Int) -> (err: Error) {
|
||||
for i in args {
|
||||
if i != nil && .Immutable in i.flags { return .Assignment_To_Immutable }
|
||||
}
|
||||
@@ -431,7 +431,7 @@ error_if_immutable :: proc {error_if_immutable_single, error_if_immutable_multi,
|
||||
/*
|
||||
Allocates several `Int`s at once.
|
||||
*/
|
||||
int_init_multi :: proc(integers: ..^Int, allocator := context.allocator) -> (err: Error) {
|
||||
int_init_multi :: proc(#no_capture integers: ..^Int, allocator := context.allocator) -> (err: Error) {
|
||||
assert_if_nil(..integers)
|
||||
|
||||
integers := integers
|
||||
@@ -812,13 +812,13 @@ assert_if_nil :: proc{
|
||||
assert_if_nil_rat,
|
||||
}
|
||||
|
||||
assert_if_nil_int :: #force_inline proc(integers: ..^Int, loc := #caller_location) {
|
||||
assert_if_nil_int :: #force_inline proc(#no_capture integers: ..^Int, loc := #caller_location) {
|
||||
for i in integers {
|
||||
assert(i != nil, "(nil)", loc)
|
||||
}
|
||||
}
|
||||
|
||||
assert_if_nil_rat :: #force_inline proc(rationals: ..^Rat, loc := #caller_location) {
|
||||
assert_if_nil_rat :: #force_inline proc(#no_capture rationals: ..^Rat, loc := #caller_location) {
|
||||
for r in rationals {
|
||||
assert(r != nil, "(nil)", loc)
|
||||
}
|
||||
|
||||
@@ -1844,7 +1844,7 @@ internal_root_n :: proc { internal_int_root_n, }
|
||||
Deallocates the backing memory of one or more `Int`s.
|
||||
Asssumes none of the `integers` to be a `nil`.
|
||||
*/
|
||||
internal_int_destroy :: proc(integers: ..^Int) {
|
||||
internal_int_destroy :: proc(#no_capture integers: ..^Int) {
|
||||
integers := integers
|
||||
|
||||
for &a in integers {
|
||||
@@ -2872,7 +2872,7 @@ internal_clear_if_uninitialized_single :: proc(arg: ^Int, allocator := context.a
|
||||
return err
|
||||
}
|
||||
|
||||
internal_clear_if_uninitialized_multi :: proc(args: ..^Int, allocator := context.allocator) -> (err: Error) {
|
||||
internal_clear_if_uninitialized_multi :: proc(#no_capture args: ..^Int, allocator := context.allocator) -> (err: Error) {
|
||||
context.allocator = allocator
|
||||
|
||||
for i in args {
|
||||
@@ -2890,7 +2890,7 @@ internal_error_if_immutable_single :: proc(arg: ^Int) -> (err: Error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
internal_error_if_immutable_multi :: proc(args: ..^Int) -> (err: Error) {
|
||||
internal_error_if_immutable_multi :: proc(#no_capture args: ..^Int) -> (err: Error) {
|
||||
for i in args {
|
||||
if i != nil && .Immutable in i.flags { return .Assignment_To_Immutable }
|
||||
}
|
||||
@@ -2901,7 +2901,7 @@ internal_error_if_immutable :: proc {internal_error_if_immutable_single, interna
|
||||
/*
|
||||
Allocates several `Int`s at once.
|
||||
*/
|
||||
internal_int_init_multi :: proc(integers: ..^Int, allocator := context.allocator) -> (err: Error) {
|
||||
internal_int_init_multi :: proc(#no_capture integers: ..^Int, allocator := context.allocator) -> (err: Error) {
|
||||
context.allocator = allocator
|
||||
|
||||
integers := integers
|
||||
|
||||
@@ -5,8 +5,8 @@ import "core:odin/tokenizer"
|
||||
|
||||
import "core:fmt"
|
||||
|
||||
Warning_Handler :: #type proc(pos: tokenizer.Pos, fmt: string, args: ..any)
|
||||
Error_Handler :: #type proc(pos: tokenizer.Pos, fmt: string, args: ..any)
|
||||
Warning_Handler :: #type proc(pos: tokenizer.Pos, fmt: string, #no_capture args: ..any)
|
||||
Error_Handler :: #type proc(pos: tokenizer.Pos, fmt: string, #no_capture args: ..any)
|
||||
|
||||
Flag :: enum u32 {
|
||||
Optional_Semicolons,
|
||||
@@ -67,25 +67,25 @@ Import_Decl_Kind :: enum {
|
||||
|
||||
|
||||
|
||||
default_warning_handler :: proc(pos: tokenizer.Pos, msg: string, args: ..any) {
|
||||
default_warning_handler :: proc(pos: tokenizer.Pos, msg: string, #no_capture args: ..any) {
|
||||
fmt.eprintf("%s(%d:%d): Warning: ", pos.file, pos.line, pos.column)
|
||||
fmt.eprintf(msg, ..args)
|
||||
fmt.eprintf("\n")
|
||||
}
|
||||
default_error_handler :: proc(pos: tokenizer.Pos, msg: string, args: ..any) {
|
||||
default_error_handler :: proc(pos: tokenizer.Pos, msg: string, #no_capture args: ..any) {
|
||||
fmt.eprintf("%s(%d:%d): ", pos.file, pos.line, pos.column)
|
||||
fmt.eprintf(msg, ..args)
|
||||
fmt.eprintf("\n")
|
||||
}
|
||||
|
||||
warn :: proc(p: ^Parser, pos: tokenizer.Pos, msg: string, args: ..any) {
|
||||
warn :: proc(p: ^Parser, pos: tokenizer.Pos, msg: string, #no_capture args: ..any) {
|
||||
if p.warn != nil {
|
||||
p.warn(pos, msg, ..args)
|
||||
}
|
||||
p.file.syntax_warning_count += 1
|
||||
}
|
||||
|
||||
error :: proc(p: ^Parser, pos: tokenizer.Pos, msg: string, args: ..any) {
|
||||
error :: proc(p: ^Parser, pos: tokenizer.Pos, msg: string, #no_capture args: ..any) {
|
||||
if p.err != nil {
|
||||
p.err(pos, msg, ..args)
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import "core:fmt"
|
||||
import "core:unicode"
|
||||
import "core:unicode/utf8"
|
||||
|
||||
Error_Handler :: #type proc(pos: Pos, fmt: string, args: ..any)
|
||||
Error_Handler :: #type proc(pos: Pos, fmt: string, #no_capture args: ..any)
|
||||
|
||||
Flag :: enum {
|
||||
Insert_Semicolon,
|
||||
@@ -62,13 +62,13 @@ offset_to_pos :: proc(t: ^Tokenizer, offset: int) -> Pos {
|
||||
}
|
||||
}
|
||||
|
||||
default_error_handler :: proc(pos: Pos, msg: string, args: ..any) {
|
||||
default_error_handler :: proc(pos: Pos, msg: string, #no_capture args: ..any) {
|
||||
fmt.eprintf("%s(%d:%d) ", pos.file, pos.line, pos.column)
|
||||
fmt.eprintf(msg, ..args)
|
||||
fmt.eprintf("\n")
|
||||
}
|
||||
|
||||
error :: proc(t: ^Tokenizer, offset: int, msg: string, args: ..any) {
|
||||
error :: proc(t: ^Tokenizer, offset: int, msg: string, #no_capture args: ..any) {
|
||||
pos := offset_to_pos(t, offset)
|
||||
if t.err != nil {
|
||||
t.err(pos, msg, ..args)
|
||||
|
||||
@@ -53,12 +53,12 @@ T :: struct {
|
||||
|
||||
|
||||
@(deprecated="prefer `log.error`")
|
||||
error :: proc(t: ^T, args: ..any, loc := #caller_location) {
|
||||
error :: proc(t: ^T, #no_capture args: ..any, loc := #caller_location) {
|
||||
pkg_log.error(..args, location = loc)
|
||||
}
|
||||
|
||||
@(deprecated="prefer `log.errorf`")
|
||||
errorf :: proc(t: ^T, format: string, args: ..any, loc := #caller_location) {
|
||||
errorf :: proc(t: ^T, format: string, #no_capture args: ..any, loc := #caller_location) {
|
||||
pkg_log.errorf(format, ..args, location = loc)
|
||||
}
|
||||
|
||||
@@ -87,12 +87,12 @@ failed :: proc(t: ^T) -> bool {
|
||||
}
|
||||
|
||||
@(deprecated="prefer `log.info`")
|
||||
log :: proc(t: ^T, args: ..any, loc := #caller_location) {
|
||||
log :: proc(t: ^T, #no_capture args: ..any, loc := #caller_location) {
|
||||
pkg_log.info(..args, location = loc)
|
||||
}
|
||||
|
||||
@(deprecated="prefer `log.infof`")
|
||||
logf :: proc(t: ^T, format: string, args: ..any, loc := #caller_location) {
|
||||
logf :: proc(t: ^T, format: string, #no_capture args: ..any, loc := #caller_location) {
|
||||
pkg_log.infof(format, ..args, location = loc)
|
||||
}
|
||||
|
||||
@@ -121,7 +121,7 @@ expect :: proc(t: ^T, ok: bool, msg: string = "", loc := #caller_location) -> bo
|
||||
return ok
|
||||
}
|
||||
|
||||
expectf :: proc(t: ^T, ok: bool, format: string, args: ..any, loc := #caller_location) -> bool {
|
||||
expectf :: proc(t: ^T, ok: bool, format: string, #no_capture args: ..any, loc := #caller_location) -> bool {
|
||||
if !ok {
|
||||
pkg_log.errorf(format, ..args, location=loc)
|
||||
}
|
||||
|
||||
@@ -250,7 +250,7 @@ error :: proc(s: ^Scanner, msg: string) {
|
||||
}
|
||||
}
|
||||
|
||||
errorf :: proc(s: ^Scanner, format: string, args: ..any) {
|
||||
errorf :: proc(s: ^Scanner, format: string, #no_capture args: ..any) {
|
||||
error(s, fmt.tprintf(format, ..args))
|
||||
}
|
||||
|
||||
|
||||
@@ -145,7 +145,7 @@ set_cell_value_and_alignment :: proc(tbl: ^Table, row, col: int, value: any, ali
|
||||
cell.alignment = alignment
|
||||
}
|
||||
|
||||
format :: proc(tbl: ^Table, _fmt: string, args: ..any) -> string {
|
||||
format :: proc(tbl: ^Table, _fmt: string, #no_capture args: ..any) -> string {
|
||||
context.allocator = tbl.format_allocator
|
||||
return fmt.aprintf(_fmt, ..args)
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ import "core:fmt"
|
||||
/*
|
||||
Silent error handler for the parser.
|
||||
*/
|
||||
Error_Handler :: proc(pos: xml.Pos, fmt: string, args: ..any) {}
|
||||
Error_Handler :: proc(pos: xml.Pos, fmt: string, #no_capture args: ..any) {}
|
||||
|
||||
OPTIONS :: xml.Options{ flags = { .Ignore_Unsupported, }, expected_doctype = "unicode", }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user