From a14ea5b2b5068e679a961d0fd43e84eea593e2da Mon Sep 17 00:00:00 2001 From: gingerBill Date: Fri, 20 Nov 2020 16:25:11 +0000 Subject: [PATCH] Add support for %s and %q for [dynamic]byte --- core/fmt/fmt.odin | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/core/fmt/fmt.odin b/core/fmt/fmt.odin index 79c62cc17..ec664a2a9 100644 --- a/core/fmt/fmt.odin +++ b/core/fmt/fmt.odin @@ -1633,13 +1633,15 @@ fmt_value :: proc(fi: ^Info, v: any, verb: rune) { } case runtime.Type_Info_Dynamic_Array: - if verb == 'p' { - slice := cast(^mem.Raw_Dynamic_Array)v.data; - fmt_pointer(fi, slice.data, 'p'); + array := cast(^mem.Raw_Dynamic_Array)v.data; + if (verb == 's' || verb == 'q') && reflect.is_byte(info.elem) { + s := strings.string_from_ptr((^byte)(array.data), array.len); + fmt_string(fi, s, verb); + } else if verb == 'p' { + fmt_pointer(fi, array.data, 'p'); } else { strings.write_byte(fi.buf, '['); defer strings.write_byte(fi.buf, ']'); - array := cast(^mem.Raw_Dynamic_Array)v.data; for i in 0.. 0 { strings.write_string(fi.buf, ", "); }