@@ -161,6 +161,14 @@ pub fn formatType(
161161 else = > return format (context , Errors , output , "{}@{x}" , @typeName (T .Child ), @ptrToInt (value )),
162162 },
163163 builtin .TypeInfo .Pointer .Size .Many = > {
164+ if (ptr_info .child == u8 ) {
165+ //This is a bit of a hack, but it made more sense to
166+ // do this check here than have formatText do it
167+ if (fmt [0 ] == 's' ) {
168+ const len = std .cstr .len (value );
169+ return formatText (value [0.. len ], fmt , context , Errors , output );
170+ }
171+ }
164172 return format (context , Errors , output , "{}@{x}" , @typeName (T .Child ), @ptrToInt (value ));
165173 },
166174 builtin .TypeInfo .Pointer .Size .Slice = > {
@@ -300,7 +308,7 @@ pub fn formatBuf(
300308 var leftover_padding = if (width > buf .len ) (width - buf .len ) else return ;
301309 const pad_byte : u8 = ' ' ;
302310 while (leftover_padding > 0 ) : (leftover_padding -= 1 ) {
303- try output (context , (& pad_byte )[0.. 1]);
311+ try output (context , (* [ 1 ] u8 )( & pad_byte )[0.. 1]);
304312 }
305313}
306314
@@ -841,6 +849,10 @@ test "fmt.format" {
841849 const value : u8 = 'a' ;
842850 try testFmt ("u8: a\n " , "u8: {c}\n " , value );
843851 }
852+ try testFmt ("buf: Test \n " , "buf: {s5}\n " , "Test" );
853+ try testFmt ("buf: Test\n Other text" , "buf: {s}\n Other text" , "Test" );
854+ try testFmt ("cstr: Test C\n " , "cstr: {s}\n " , c"Test C" );
855+ try testFmt ("cstr: Test C \n " , "cstr: {s10}\n " , c"Test C" );
844856 try testFmt ("file size: 63MiB\n " , "file size: {Bi}\n " , usize (63 * 1024 * 1024 ));
845857 try testFmt ("file size: 66.06MB\n " , "file size: {B2}\n " , usize (63 * 1024 * 1024 ));
846858 {
0 commit comments