Commit 9b91c76088

Andrew Kelley <superjoe30@gmail.com>
2017-10-21 19:03:08
std.fmt.format supports ints smaller than u8
closes #546 thanks to @Dimenus for the fix
1 parent b3d12d2
Changed files (1)
std
std/fmt/index.zig
@@ -312,7 +312,7 @@ fn formatIntUnsigned(value: var, base: u8, uppercase: bool, width: usize,
     // max_int_digits accounts for the minus sign. when printing an unsigned
     // number we don't need to do that.
     var buf: [max_int_digits - 1]u8 = undefined;
-    var a = value;
+    var a = if (@sizeOf(@typeOf(value)) == 1) u8(value) else value;
     var index: usize = buf.len;
 
     while (true) {
@@ -508,6 +508,12 @@ test "fmt.format" {
         const result = bufPrint(buf1[0..], "error union: {}\n", value);
         assert(mem.eql(u8, result, "error union: error.InvalidChar\n"));
     }
+    {
+        var buf1: [32]u8 = undefined;
+        const value: u3 = 0b101;
+        const result = bufPrint(buf1[0..], "u3: {}\n", value);
+        assert(mem.eql(u8, result, "u3: 5\n"));
+    }
 }
 
 pub fn trim(buf: []const u8) -> []const u8 {