@@ -404,16 +404,16 @@ pub fn formatType(
404
404
},
405
405
.Optional = > {
406
406
if (value ) | payload | {
407
- return @call (.{ . modifier = .always_tail }, formatType , .{ payload , fmt , options , generator , max_depth } );
407
+ return formatType ( payload , fmt , options , generator , max_depth );
408
408
} else {
409
409
return generator .yield ("null" );
410
410
}
411
411
},
412
412
.ErrorUnion = > {
413
413
if (value ) | payload | {
414
- return @call (.{ . modifier = .always_tail }, formatType , .{ payload , fmt , options , generator , max_depth } );
414
+ return formatType ( payload , fmt , options , generator , max_depth );
415
415
} else | err | {
416
- return @call (.{ . modifier = .always_tail }, formatType , .{ err , fmt , options , generator , max_depth } );
416
+ return formatType ( err , fmt , options , generator , max_depth );
417
417
}
418
418
},
419
419
.ErrorSet = > {
@@ -426,52 +426,50 @@ pub fn formatType(
426
426
// }
427
427
generator .yield (@typeName (T ));
428
428
generator .yield ("." );
429
- return @call (.{ . modifier = .always_tail }, formatType , .{ @tagName (value ), "" , options , generator , max_depth } );
429
+ return generator . yield ( @tagName (value ));
430
430
},
431
- .Union = > {
431
+ .Union = > | union_info | {
432
432
// if (comptime std.meta.trait.hasFn("format")(T)) {
433
433
// return value.format(fmt, options, context, Errors, output);
434
434
// }
435
- generator .yield (@typeName (T ));
436
- if (max_depth == 0 ) {
437
- return generator .yield ("{ ... }" );
438
- }
439
- const info = @typeInfo (T ).Union ;
440
- if (info .tag_type ) | UnionTagType | {
435
+ if (union_info .tag_type ) | UnionTagType | {
436
+ generator .yield (@typeName (T ));
437
+ if (max_depth == 0 ) {
438
+ return generator .yield ("{ ... }" );
439
+ }
441
440
generator .yield ("{ ." );
442
441
generator .yield (@tagName (@as (UnionTagType , value )));
443
442
generator .yield (" = " );
444
- inline for (info .fields ) | u_field | {
443
+ inline for (union_info .fields ) | u_field | {
445
444
if (@enumToInt (@as (UnionTagType , value )) == u_field .enum_field .? .value ) {
446
445
formatType (@field (value , u_field .name ), "" , options , generator , max_depth - 1 );
447
446
}
448
447
}
449
448
generator .yield (" }" );
450
449
} else {
451
- generator .yield ("@" );
452
- return formatInt (@ptrToInt (& value ), 16 , false , FormatOptions {}, generator );
450
+ return formatPtr (T , @ptrToInt (& value ), generator );
453
451
}
454
452
},
455
- .Struct = > {
453
+ .Struct = > | struct_info | {
456
454
// if (comptime std.meta.trait.hasFn("format")(T)) {
457
455
// return value.format(fmt, options, context, Errors, output);
458
456
// }
459
457
generator .yield (@typeName (T ));
460
458
if (max_depth == 0 ) {
461
459
return generator .yield ("{ ... }" );
462
460
}
463
- comptime var field_i = 0 ;
461
+
464
462
generator .yield ("{" );
465
- inline while ( field_i < @memberCount ( T )) : ( field_i += 1 ) {
466
- if (field_i == 0 ) {
463
+ inline for ( struct_info . fields ) | field , i | {
464
+ if (i == 0 ) {
467
465
generator .yield (" ." );
468
466
} else {
469
467
generator .yield (", ." );
470
468
}
471
- generator .yield (@memberName ( T , field_i ) );
469
+ generator .yield (field . name );
472
470
generator .yield (" = " );
473
471
474
- formatType (@field (value , @memberName ( T , field_i ) ), "" , options , generator , max_depth - 1 );
472
+ formatType (@field (value , field . name ), "" , options , generator , max_depth - 1 );
475
473
}
476
474
generator .yield (" }" );
477
475
},
@@ -484,7 +482,7 @@ pub fn formatType(
484
482
return formatPtr (T .Child , @ptrToInt (value ), generator );
485
483
},
486
484
builtin .TypeId .Enum , builtin .TypeId .Union , builtin .TypeId .Struct = > {
487
- return @call (.{ . modifier = .always_tail }, formatType , .{ value .* , fmt , options , generator , max_depth } );
485
+ return formatType ( value .* , fmt , options , generator , max_depth );
488
486
},
489
487
else = > return formatPtr (T .Child , @ptrToInt (value ), generator ),
490
488
},
@@ -522,7 +520,7 @@ pub fn formatType(
522
520
.sentinel = null ,
523
521
},
524
522
});
525
- return @call (.{ . modifier = .always_tail }, formatType , .{ @as (Slice , & value ), fmt , options , generator , max_depth } );
523
+ return formatType ( @as (Slice , & value ), fmt , options , generator , max_depth );
526
524
},
527
525
.Fn = > {
528
526
return formatPtr (T , @ptrToInt (value ), generator );
@@ -638,7 +636,7 @@ pub fn formatAsciiChar(
638
636
generator : * Generator ([]const u8 ),
639
637
) void {
640
638
if (std .ascii .isPrint (c ))
641
- return generator .yield (@as (* const [1 ]u8 , & c )[0 .. ] );
639
+ return generator .yield (@as (* const [1 ]u8 , & c ));
642
640
@panic ("FIXME" );
643
641
// return format(context, Errors, output, "\\x{x:0<2}", .{c});
644
642
}
@@ -654,7 +652,7 @@ pub fn formatBuf(
654
652
var leftover_padding = if (width > buf .len ) (width - buf .len ) else return ;
655
653
const pad_byte : u8 = options .fill ;
656
654
while (leftover_padding > 0 ) : (leftover_padding -= 1 ) {
657
- generator .yield (@as (* const [1 ]u8 , & pad_byte )[0 .. 1] );
655
+ generator .yield (@as (* const [1 ]u8 , & pad_byte ));
658
656
}
659
657
}
660
658
@@ -978,15 +976,13 @@ fn formatIntSigned(
978
976
979
977
const uint = @IntType (false , @TypeOf (value ).bit_count );
980
978
if (value < 0 ) {
981
- const minus_sign : u8 = '-' ;
982
- generator .yield (@as (* const [1 ]u8 , & minus_sign )[0.. ]);
979
+ generator .yield ("-" );
983
980
const new_value = @intCast (uint , - (value + 1 )) + 1 ;
984
981
return formatIntUnsigned (new_value , base , uppercase , new_options , generator );
985
982
} else if (options .width == null or options .width .? == 0 ) {
986
983
return formatIntUnsigned (@intCast (uint , value ), base , uppercase , options , generator );
987
984
} else {
988
- const plus_sign : u8 = '+' ;
989
- generator .yield (@as (* const [1 ]u8 , & plus_sign )[0.. ]);
985
+ generator .yield ("+" );
990
986
const new_value = @intCast (uint , value );
991
987
return formatIntUnsigned (new_value , base , uppercase , new_options , generator );
992
988
}
@@ -1022,7 +1018,7 @@ fn formatIntUnsigned(
1022
1018
const zero_byte : u8 = options .fill ;
1023
1019
var leftover_padding = padding - index ;
1024
1020
while (true ) {
1025
- generator .yield (@as (* const [1 ]u8 , & zero_byte )[0 .. ] );
1021
+ generator .yield (@as (* const [1 ]u8 , & zero_byte ));
1026
1022
leftover_padding -= 1 ;
1027
1023
if (leftover_padding == 0 ) break ;
1028
1024
}
0 commit comments