stage2: small fixes + adjustments to std tests

This commit is contained in:
Veikka Tuominen 2022-06-10 12:10:14 +03:00
parent 95ab942184
commit 488e1e5f51
11 changed files with 50 additions and 47 deletions

View file

@ -5,7 +5,6 @@ pub const gzip = @import("compress/gzip.zig");
pub const zlib = @import("compress/zlib.zig"); pub const zlib = @import("compress/zlib.zig");
test { test {
if (@import("builtin").zig_backend != .stage1) return error.SkipZigTest;
_ = deflate; _ = deflate;
_ = gzip; _ = gzip;
_ = zlib; _ = zlib;

View file

@ -254,7 +254,10 @@ pub fn Compressor(comptime WriterType: anytype) type {
// Inner writer wrapped in a HuffmanBitWriter // Inner writer wrapped in a HuffmanBitWriter
hm_bw: hm_bw.HuffmanBitWriter(WriterType) = undefined, hm_bw: hm_bw.HuffmanBitWriter(WriterType) = undefined,
bulk_hasher: fn ([]u8, []u32) u32, bulk_hasher: if (@import("builtin").zig_backend == .stage1)
fn ([]u8, []u32) u32
else
*const fn ([]u8, []u32) u32,
sync: bool, // requesting flush sync: bool, // requesting flush
best_speed_enc: *fast.DeflateFast, // Encoder for best_speed best_speed_enc: *fast.DeflateFast, // Encoder for best_speed

View file

@ -122,11 +122,8 @@ fn testToFromWithLevelAndLimit(level: deflate.Compression, input: []const u8, li
try expect(compressed.items.len <= limit); try expect(compressed.items.len <= limit);
} }
var decomp = try decompressor( var fib = io.fixedBufferStream(compressed.items);
testing.allocator, var decomp = try decompressor(testing.allocator, fib.reader(), null);
io.fixedBufferStream(compressed.items).reader(),
null,
);
defer decomp.deinit(); defer decomp.deinit();
var decompressed = try testing.allocator.alloc(u8, input.len); var decompressed = try testing.allocator.alloc(u8, input.len);
@ -136,7 +133,9 @@ fn testToFromWithLevelAndLimit(level: deflate.Compression, input: []const u8, li
try expect(read == input.len); try expect(read == input.len);
try expect(mem.eql(u8, input, decompressed)); try expect(mem.eql(u8, input, decompressed));
if (builtin.zig_backend == .stage1) {
try testSync(level, input); try testSync(level, input);
}
} }
fn testToFromWithLimit(input: []const u8, limit: [11]u32) !void { fn testToFromWithLimit(input: []const u8, limit: [11]u32) !void {
@ -180,6 +179,7 @@ test "deflate/inflate" {
} }
test "very long sparse chunk" { test "very long sparse chunk" {
if (@import("builtin").zig_backend != .stage1) return error.SkipZigTest;
// A SparseReader returns a stream consisting of 0s ending with 65,536 (1<<16) 1s. // A SparseReader returns a stream consisting of 0s ending with 65,536 (1<<16) 1s.
// This tests missing hash references in a very large input. // This tests missing hash references in a very large input.
const SparseReader = struct { const SparseReader = struct {
@ -377,6 +377,7 @@ test "compressor dictionary" {
// Update the hash for best_speed only if d.index < d.maxInsertIndex // Update the hash for best_speed only if d.index < d.maxInsertIndex
// See https://golang.org/issue/2508 // See https://golang.org/issue/2508
test "Go non-regression test for 2508" { test "Go non-regression test for 2508" {
if (@import("builtin").zig_backend != .stage1) return error.SkipZigTest;
var comp = try compressor( var comp = try compressor(
testing.allocator, testing.allocator,
io.null_writer, io.null_writer,
@ -475,21 +476,16 @@ test "inflate reset" {
try comp.close(); try comp.close();
} }
var decomp = try decompressor( var fib = io.fixedBufferStream(compressed_strings[0].items);
testing.allocator, var decomp = try decompressor(testing.allocator, fib.reader(), null);
io.fixedBufferStream(compressed_strings[0].items).reader(),
null,
);
defer decomp.deinit(); defer decomp.deinit();
var decompressed_0: []u8 = try decomp.reader() var decompressed_0: []u8 = try decomp.reader()
.readAllAlloc(testing.allocator, math.maxInt(usize)); .readAllAlloc(testing.allocator, math.maxInt(usize));
defer testing.allocator.free(decompressed_0); defer testing.allocator.free(decompressed_0);
try decomp.reset( fib = io.fixedBufferStream(compressed_strings[1].items);
io.fixedBufferStream(compressed_strings[1].items).reader(), try decomp.reset(fib.reader(), null);
null,
);
var decompressed_1: []u8 = try decomp.reader() var decompressed_1: []u8 = try decomp.reader()
.readAllAlloc(testing.allocator, math.maxInt(usize)); .readAllAlloc(testing.allocator, math.maxInt(usize));
@ -530,21 +526,16 @@ test "inflate reset dictionary" {
try comp.close(); try comp.close();
} }
var decomp = try decompressor( var fib = io.fixedBufferStream(compressed_strings[0].items);
testing.allocator, var decomp = try decompressor(testing.allocator, fib.reader(), dict);
io.fixedBufferStream(compressed_strings[0].items).reader(),
dict,
);
defer decomp.deinit(); defer decomp.deinit();
var decompressed_0: []u8 = try decomp.reader() var decompressed_0: []u8 = try decomp.reader()
.readAllAlloc(testing.allocator, math.maxInt(usize)); .readAllAlloc(testing.allocator, math.maxInt(usize));
defer testing.allocator.free(decompressed_0); defer testing.allocator.free(decompressed_0);
try decomp.reset( fib = io.fixedBufferStream(compressed_strings[1].items);
io.fixedBufferStream(compressed_strings[1].items).reader(), try decomp.reset(fib.reader(), dict);
dict,
);
var decompressed_1: []u8 = try decomp.reader() var decompressed_1: []u8 = try decomp.reader()
.readAllAlloc(testing.allocator, math.maxInt(usize)); .readAllAlloc(testing.allocator, math.maxInt(usize));

View file

@ -334,7 +334,10 @@ pub fn Decompressor(comptime ReaderType: type) type {
// Next step in the decompression, // Next step in the decompression,
// and decompression state. // and decompression state.
step: fn (*Self) Error!void, step: if (@import("builtin").zig_backend == .stage1)
fn (*Self) Error!void
else
*const fn (*Self) Error!void,
step_state: DecompressorState, step_state: DecompressorState,
final: bool, final: bool,
err: ?Error, err: ?Error,
@ -479,11 +482,17 @@ pub fn Decompressor(comptime ReaderType: type) type {
} }
pub fn close(self: *Self) ?Error { pub fn close(self: *Self) ?Error {
if (@import("builtin").zig_backend == .stage1) {
if (self.err == Error.EndOfStreamWithNoError) { if (self.err == Error.EndOfStreamWithNoError) {
return null; return null;
} }
return self.err; return self.err;
} }
if (self.err == @as(?Error, error.EndOfStreamWithNoError)) {
return null;
}
return self.err;
}
// RFC 1951 section 3.2.7. // RFC 1951 section 3.2.7.
// Compression with dynamic Huffman codes // Compression with dynamic Huffman codes
@ -920,7 +929,8 @@ test "truncated input" {
}; };
for (tests) |t| { for (tests) |t| {
var r = io.fixedBufferStream(t.input).reader(); var fib = io.fixedBufferStream(t.input);
const r = fib.reader();
var z = try decompressor(testing.allocator, r, null); var z = try decompressor(testing.allocator, r, null);
defer z.deinit(); defer z.deinit();
var zr = z.reader(); var zr = z.reader();
@ -959,7 +969,8 @@ test "Go non-regression test for 9842" {
}; };
for (tests) |t| { for (tests) |t| {
const reader = std.io.fixedBufferStream(t.input).reader(); var fib = std.io.fixedBufferStream(t.input);
const reader = fib.reader();
var decomp = try decompressor(testing.allocator, reader, null); var decomp = try decompressor(testing.allocator, reader, null);
defer decomp.deinit(); defer decomp.deinit();
@ -1017,7 +1028,8 @@ test "inflate A Tale of Two Cities (1859) intro" {
\\ \\
; ;
const reader = std.io.fixedBufferStream(&compressed).reader(); var fib = std.io.fixedBufferStream(&compressed);
const reader = fib.reader();
var decomp = try decompressor(testing.allocator, reader, null); var decomp = try decompressor(testing.allocator, reader, null);
defer decomp.deinit(); defer decomp.deinit();
@ -1082,7 +1094,8 @@ test "fuzzing" {
fn decompress(input: []const u8) !void { fn decompress(input: []const u8) !void {
const allocator = testing.allocator; const allocator = testing.allocator;
const reader = std.io.fixedBufferStream(input).reader(); var fib = std.io.fixedBufferStream(input);
const reader = fib.reader();
var decomp = try decompressor(allocator, reader, null); var decomp = try decompressor(allocator, reader, null);
defer decomp.deinit(); defer decomp.deinit();
var output = try decomp.reader().readAllAlloc(allocator, math.maxInt(usize)); var output = try decomp.reader().readAllAlloc(allocator, math.maxInt(usize));

View file

@ -78,11 +78,8 @@ test "best speed" {
var decompressed = try testing.allocator.alloc(u8, want.items.len); var decompressed = try testing.allocator.alloc(u8, want.items.len);
defer testing.allocator.free(decompressed); defer testing.allocator.free(decompressed);
var decomp = try inflate.decompressor( var fib = io.fixedBufferStream(compressed.items);
testing.allocator, var decomp = try inflate.decompressor(testing.allocator, fib.reader(), null);
io.fixedBufferStream(compressed.items).reader(),
null,
);
defer decomp.deinit(); defer decomp.deinit();
var read = try decomp.reader().readAll(decompressed); var read = try decomp.reader().readAll(decompressed);
@ -122,13 +119,13 @@ test "best speed max match offset" {
// zeros1 is between 0 and 30 zeros. // zeros1 is between 0 and 30 zeros.
// The difference between the two abc's will be offset, which // The difference between the two abc's will be offset, which
// is max_match_offset plus or minus a small adjustment. // is max_match_offset plus or minus a small adjustment.
var src_len: usize = @intCast(usize, offset + abc.len + @intCast(i32, extra)); var src_len: usize = @intCast(usize, offset + @as(i32, abc.len) + @intCast(i32, extra));
var src = try testing.allocator.alloc(u8, src_len); var src = try testing.allocator.alloc(u8, src_len);
defer testing.allocator.free(src); defer testing.allocator.free(src);
mem.copy(u8, src, abc); mem.copy(u8, src, abc);
if (!do_match_before) { if (!do_match_before) {
var src_offset: usize = @intCast(usize, offset - xyz.len); var src_offset: usize = @intCast(usize, offset - @as(i32, xyz.len));
mem.copy(u8, src[src_offset..], xyz); mem.copy(u8, src[src_offset..], xyz);
} }
var src_offset: usize = @intCast(usize, offset); var src_offset: usize = @intCast(usize, offset);
@ -149,11 +146,8 @@ test "best speed max match offset" {
var decompressed = try testing.allocator.alloc(u8, src.len); var decompressed = try testing.allocator.alloc(u8, src.len);
defer testing.allocator.free(decompressed); defer testing.allocator.free(decompressed);
var decomp = try inflate.decompressor( var fib = io.fixedBufferStream(compressed.items);
testing.allocator, var decomp = try inflate.decompressor(testing.allocator, fib.reader(), null);
io.fixedBufferStream(compressed.items).reader(),
null,
);
defer decomp.deinit(); defer decomp.deinit();
var read = try decomp.reader().readAll(decompressed); var read = try decomp.reader().readAll(decompressed);
_ = decomp.close(); _ = decomp.close();

View file

@ -13,7 +13,6 @@ pub const net = struct {
}; };
test { test {
if (@import("builtin").zig_backend != .stage1) return error.SkipZigTest;
inline for (.{ os, net }) |module| { inline for (.{ os, net }) |module| {
std.testing.refAllDecls(module); std.testing.refAllDecls(module);
} }

View file

@ -117,6 +117,7 @@ pub const Reactor = struct {
}; };
test "reactor/linux: drive async tcp client/listener pair" { test "reactor/linux: drive async tcp client/listener pair" {
if (@import("builtin").zig_backend != .stage1) return error.SkipZigTest;
if (native_os.tag != .linux) return error.SkipZigTest; if (native_os.tag != .linux) return error.SkipZigTest;
const ip = std.x.net.ip; const ip = std.x.net.ip;

View file

@ -381,7 +381,7 @@ pub const IPv6 = extern struct {
}); });
} }
const zero_span = span: { const zero_span: struct { from: usize, to: usize } = span: {
var i: usize = 0; var i: usize = 0;
while (i < self.octets.len) : (i += 2) { while (i < self.octets.len) : (i += 2) {
if (self.octets[i] == 0 and self.octets[i + 1] == 0) break; if (self.octets[i] == 0 and self.octets[i + 1] == 0) break;

View file

@ -19702,7 +19702,8 @@ fn coerce(
// pointer to tuple to slice // pointer to tuple to slice
if (inst_ty.isSinglePointer() and if (inst_ty.isSinglePointer() and
inst_ty.childType().isTuple() and inst_ty.childType().isTuple() and
!dest_info.mutable and dest_info.size == .Slice) (!dest_info.mutable or inst_ty.ptrIsMutable() or inst_ty.childType().tupleFields().types.len == 0) and
dest_info.size == .Slice)
{ {
return sema.coerceTupleToSlicePtrs(block, dest_ty, dest_ty_src, inst, inst_src); return sema.coerceTupleToSlicePtrs(block, dest_ty, dest_ty_src, inst, inst_src);
} }

View file

@ -1062,6 +1062,7 @@ pub const Value = extern union {
sema_kit: ?Module.WipAnalysis, sema_kit: ?Module.WipAnalysis,
) Module.CompileError!BigIntConst { ) Module.CompileError!BigIntConst {
switch (val.tag()) { switch (val.tag()) {
.null_value,
.zero, .zero,
.bool_false, .bool_false,
.the_only_possible_value, // i0, u0 .the_only_possible_value, // i0, u0

View file

@ -1426,6 +1426,7 @@ test "coerce undefined single-item pointer of array to error union of slice" {
} }
test "pointer to empty struct literal to mutable slice" { test "pointer to empty struct literal to mutable slice" {
if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
var x: []i32 = &.{}; var x: []i32 = &.{};
try expect(x.len == 0); try expect(x.len == 0);
} }