aboutsummaryrefslogtreecommitdiff
path: root/core/testing/logging.odin
diff options
context:
space:
mode:
Diffstat (limited to 'core/testing/logging.odin')
-rw-r--r--core/testing/logging.odin28
1 files changed, 26 insertions, 2 deletions
diff --git a/core/testing/logging.odin b/core/testing/logging.odin
index 041489dab..85f28e564 100644
--- a/core/testing/logging.odin
+++ b/core/testing/logging.odin
@@ -83,7 +83,31 @@ format_log_text :: proc(level: runtime.Logger_Level, text: string, options: runt
log.do_level_header(options, &buf, level)
log.do_time_header(options, &buf, at_time)
- log.do_location_header(options, &buf, location)
-
+ when GO_TO_ERROR {
+ do_go_to_error_friendly_location(options, &buf, location)
+ } else {
+ log.do_location_header(options, &buf, location)
+ }
return fmt.aprintf("%s%s", strings.to_string(buf), text, allocator = allocator)
}
+
+do_go_to_error_friendly_location :: proc(opts: log.Options, buf: ^strings.Builder, location := #caller_location) {
+ if log.Location_Header_Opts & opts == nil {
+ return
+ }
+ fmt.sbprint(buf, "\n")
+
+ file := location.file_path
+ fmt.sbprint(buf, file)
+
+ fmt.sbprint(buf, "(")
+ fmt.sbprint(buf, location.line)
+ fmt.sbprint(buf, ":")
+ fmt.sbprint(buf, location.column)
+ fmt.sbprint(buf, ")")
+
+ if .Procedure in opts {
+ fmt.sbprintf(buf, ":%s()", location.procedure)
+ }
+ fmt.sbprint(buf, " ")
+} \ No newline at end of file