Commit 0f3e7387bf

Andrew Kelley <superjoe30@gmail.com>
2018-10-31 15:44:05
cleanups
1 parent b04c6ce
Changed files (1)
std
atomic
std/atomic/queue.zig
@@ -105,28 +105,30 @@ pub fn Queue(comptime T: type) type {
         pub fn dump(self: *Self) void {
             var stderr_file = std.io.getStdErr() catch return;
             const stderr = &stderr_file.outStream().stream;
+            const Error = @typeInfo(@typeOf(stderr)).Pointer.child.Error;
 
-            self.dumpToStream(stderr) catch return;
+            self.dumpToStream(Error, stderr) catch return;
         }
 
-        pub fn dumpToStream(self: *Self, stream: var) @typeOf(stream).Error!void {
+        pub fn dumpToStream(self: *Self, comptime Error: type, stream: *std.io.OutStream(Error)) Error!void {
+            const S = struct.{
+                fn dumpRecursive(s: *std.io.OutStream(Error), optional_node: ?*Node, indent: usize) Error!void {
+                    try s.writeByteNTimes(' ', indent);
+                    if (optional_node) |node| {
+                        try s.print("0x{x}={}\n", @ptrToInt(node), node.data);
+                        try dumpRecursive(s, node.next, indent + 1);
+                    } else {
+                        try s.print("(null)\n");
+                    }
+                }
+            };
             const held = self.mutex.acquire();
             defer held.release();
 
             try stream.print("head: ");
-            try dumpRecursive(stream, self.head, 0);
+            try S.dumpRecursive(stream, self.head, 0);
             try stream.print("tail: ");
-            try dumpRecursive(stream, self.tail, 0);
-        }
-
-        fn dumpRecursive(stream: var, optional_node: ?*Node, indent: usize) error!void {
-            try stream.writeByteNTimes(' ', indent);
-            if (optional_node) |node| {
-                try stream.print("0x{x}={}\n", @ptrToInt(node), node.data);
-                try dumpRecursive(stream, node.next, indent + 1);
-            } else {
-                try stream.print("(null)\n");
-            }
+            try S.dumpRecursive(stream, self.tail, 0);
         }
     };
 }
@@ -291,15 +293,15 @@ test "std.atomic.Queue dump" {
 
     // Test empty stream
     sos.reset();
-    try queue.dumpToStream(&sos.stream);
+    try queue.dumpToStream(SliceOutStream.Error, &sos.stream);
     assert(mem.eql(u8, buffer[0..sos.pos],
         \\head: (null)
         \\tail: (null)
         \\
-        ));
+    ));
 
     // Test a stream with one element
-    var node_0 = Queue(i32).Node {
+    var node_0 = Queue(i32).Node.{
         .data = 1,
         .next = undefined,
         .prev = undefined,
@@ -307,7 +309,7 @@ test "std.atomic.Queue dump" {
     queue.put(&node_0);
 
     sos.reset();
-    try queue.dumpToStream(&sos.stream);
+    try queue.dumpToStream(SliceOutStream.Error, &sos.stream);
 
     var expected = try std.fmt.bufPrint(expected_buffer[0..],
         \\head: 0x{x}=1
@@ -315,11 +317,11 @@ test "std.atomic.Queue dump" {
         \\tail: 0x{x}=1
         \\ (null)
         \\
-        , @ptrToInt(queue.head), @ptrToInt(queue.tail));
+    , @ptrToInt(queue.head), @ptrToInt(queue.tail));
     assert(mem.eql(u8, buffer[0..sos.pos], expected));
 
     // Test a stream with two elements
-    var node_1 = Queue(i32).Node {
+    var node_1 = Queue(i32).Node.{
         .data = 2,
         .next = undefined,
         .prev = undefined,
@@ -327,7 +329,7 @@ test "std.atomic.Queue dump" {
     queue.put(&node_1);
 
     sos.reset();
-    try queue.dumpToStream(&sos.stream);
+    try queue.dumpToStream(SliceOutStream.Error, &sos.stream);
 
     expected = try std.fmt.bufPrint(expected_buffer[0..],
         \\head: 0x{x}=1
@@ -336,6 +338,6 @@ test "std.atomic.Queue dump" {
         \\tail: 0x{x}=2
         \\ (null)
         \\
-        , @ptrToInt(queue.head), @ptrToInt(queue.head.?.next), @ptrToInt(queue.tail));
+    , @ptrToInt(queue.head), @ptrToInt(queue.head.?.next), @ptrToInt(queue.tail));
     assert(mem.eql(u8, buffer[0..sos.pos], expected));
 }