lib: collapse the parallel vstream scaffold onto the single Hare io surface (#94 fold-eFinal)
The Option-C parallel _v vstream API was scaffolding to bring the io stack up alongside the old surface; carrying both permanently is a rule-9 divergence from ref/hare, which has exactly one io surface. Collapse onto that surface (stream = *vtable, ref/hare/io/stream.ha) and rename the _v symbols to their Hare names (io vstream->stream, fmt vfprint->fprint, bufio/memio/log surfaces, log.new). Deletes the 4 lib/*/vstream.ww scaffold files; regenerates w6c/wwdump combined.ww. cstage and wwstage stay byte-identical and combined_ww_fresh holds; all 220 tests pass.
This commit is contained in:
@@ -44,11 +44,9 @@ fn streq(a: str, b: str) bool = {
|
||||
// scenario must run before [[setloggerswap]].
|
||||
@test fn defaultwiredtoglobal() void = {
|
||||
let buf: [4]u8;
|
||||
let mem: memio.state;
|
||||
let s: io.stream;
|
||||
memio.fixed(&mem, &s, buf[0:4]);
|
||||
let sl: log.stdlogger;
|
||||
log.new(&sl, &s); // triggers ensureinit
|
||||
let mem: memio.stream = memio.fixed(buf[0:4]);
|
||||
let s: io.stream = &mem.vt;
|
||||
let sl: log.stdlogger = log.new(s); // triggers ensureinit
|
||||
|
||||
if (log.silent == nil) { fail(); };
|
||||
if (log.default == nil) { fail(); };
|
||||
@@ -60,12 +58,10 @@ fn streq(a: str, b: str) bool = {
|
||||
|
||||
@test fn lprintlnbasic() void = {
|
||||
let buf: [32]u8;
|
||||
let mem: memio.state;
|
||||
let s: io.stream;
|
||||
memio.fixed(&mem, &s, buf[0:32]);
|
||||
let mem: memio.stream = memio.fixed(buf[0:32]);
|
||||
let s: io.stream = &mem.vt;
|
||||
|
||||
let sl: log.stdlogger;
|
||||
log.new(&sl, &s);
|
||||
let sl: log.stdlogger = log.new(s);
|
||||
|
||||
log.lprintln(&sl.logger, "hello", 42i64);
|
||||
|
||||
@@ -76,12 +72,10 @@ fn streq(a: str, b: str) bool = {
|
||||
|
||||
@test fn lprintlnsingle() void = {
|
||||
let buf: [16]u8;
|
||||
let mem: memio.state;
|
||||
let s: io.stream;
|
||||
memio.fixed(&mem, &s, buf[0:16]);
|
||||
let mem: memio.stream = memio.fixed(buf[0:16]);
|
||||
let s: io.stream = &mem.vt;
|
||||
|
||||
let sl: log.stdlogger;
|
||||
log.new(&sl, &s);
|
||||
let sl: log.stdlogger = log.new(s);
|
||||
|
||||
log.lprintln(&sl.logger, "only");
|
||||
|
||||
@@ -92,12 +86,10 @@ fn streq(a: str, b: str) bool = {
|
||||
|
||||
@test fn lprintlnempty() void = {
|
||||
let buf: [4]u8;
|
||||
let mem: memio.state;
|
||||
let s: io.stream;
|
||||
memio.fixed(&mem, &s, buf[0:4]);
|
||||
let mem: memio.stream = memio.fixed(buf[0:4]);
|
||||
let s: io.stream = &mem.vt;
|
||||
|
||||
let sl: log.stdlogger;
|
||||
log.new(&sl, &s);
|
||||
let sl: log.stdlogger = log.new(s);
|
||||
|
||||
log.lprintln(&sl.logger);
|
||||
|
||||
@@ -114,12 +106,10 @@ fn streq(a: str, b: str) bool = {
|
||||
// empty (silent has no path to it anyway).
|
||||
@test fn silentwritesnothing() void = {
|
||||
let buf: [16]u8;
|
||||
let mem: memio.state;
|
||||
let s: io.stream;
|
||||
memio.fixed(&mem, &s, buf[0:16]);
|
||||
let mem: memio.stream = memio.fixed(buf[0:16]);
|
||||
let s: io.stream = &mem.vt;
|
||||
|
||||
let sl: log.stdlogger;
|
||||
log.new(&sl, &s); // triggers log.ensureinit; populates log.silent
|
||||
let sl: log.stdlogger = log.new(s); // triggers log.ensureinit; populates log.silent
|
||||
|
||||
if (log.silent == nil) { fail(); };
|
||||
|
||||
@@ -136,18 +126,14 @@ fn streq(a: str, b: str) bool = {
|
||||
// the swap semantics.
|
||||
@test fn setloggerswap() void = {
|
||||
let buf1: [32]u8;
|
||||
let mem1: memio.state;
|
||||
let s1: io.stream;
|
||||
memio.fixed(&mem1, &s1, buf1[0:32]);
|
||||
let sl1: log.stdlogger;
|
||||
log.new(&sl1, &s1);
|
||||
let mem1: memio.stream = memio.fixed(buf1[0:32]);
|
||||
let s1: io.stream = &mem1.vt;
|
||||
let sl1: log.stdlogger = log.new(s1);
|
||||
|
||||
let buf2: [32]u8;
|
||||
let mem2: memio.state;
|
||||
let s2: io.stream;
|
||||
memio.fixed(&mem2, &s2, buf2[0:32]);
|
||||
let sl2: log.stdlogger;
|
||||
log.new(&sl2, &s2);
|
||||
let mem2: memio.stream = memio.fixed(buf2[0:32]);
|
||||
let s2: io.stream = &mem2.vt;
|
||||
let sl2: log.stdlogger = log.new(s2);
|
||||
|
||||
log.setlogger(&sl1.logger);
|
||||
log.println("first");
|
||||
@@ -171,12 +157,10 @@ fn streq(a: str, b: str) bool = {
|
||||
|
||||
@test fn lprintflnbasic() void = {
|
||||
let buf: [32]u8;
|
||||
let mem: memio.state;
|
||||
let s: io.stream;
|
||||
memio.fixed(&mem, &s, buf[0:32]);
|
||||
let mem: memio.stream = memio.fixed(buf[0:32]);
|
||||
let s: io.stream = &mem.vt;
|
||||
|
||||
let sl: log.stdlogger;
|
||||
log.new(&sl, &s);
|
||||
let sl: log.stdlogger = log.new(s);
|
||||
|
||||
log.lprintfln(&sl.logger, "x={} y={}", 42i64, "hi");
|
||||
|
||||
@@ -189,18 +173,14 @@ fn streq(a: str, b: str) bool = {
|
||||
// install sl1 as global, printfln writes there; mem2 stays empty.
|
||||
@test fn printflnglobal() void = {
|
||||
let buf1: [32]u8;
|
||||
let mem1: memio.state;
|
||||
let s1: io.stream;
|
||||
memio.fixed(&mem1, &s1, buf1[0:32]);
|
||||
let sl1: log.stdlogger;
|
||||
log.new(&sl1, &s1);
|
||||
let mem1: memio.stream = memio.fixed(buf1[0:32]);
|
||||
let s1: io.stream = &mem1.vt;
|
||||
let sl1: log.stdlogger = log.new(s1);
|
||||
|
||||
let buf2: [32]u8;
|
||||
let mem2: memio.state;
|
||||
let s2: io.stream;
|
||||
memio.fixed(&mem2, &s2, buf2[0:32]);
|
||||
let sl2: log.stdlogger;
|
||||
log.new(&sl2, &s2);
|
||||
let mem2: memio.stream = memio.fixed(buf2[0:32]);
|
||||
let s2: io.stream = &mem2.vt;
|
||||
let sl2: log.stdlogger = log.new(s2);
|
||||
|
||||
log.setlogger(&sl1.logger);
|
||||
log.printfln("v={}", 7i64);
|
||||
@@ -215,12 +195,10 @@ fn streq(a: str, b: str) bool = {
|
||||
// bare-args path.
|
||||
@test fn silentignoresprintfln() void = {
|
||||
let buf: [16]u8;
|
||||
let mem: memio.state;
|
||||
let s: io.stream;
|
||||
memio.fixed(&mem, &s, buf[0:16]);
|
||||
let mem: memio.stream = memio.fixed(buf[0:16]);
|
||||
let s: io.stream = &mem.vt;
|
||||
|
||||
let sl: log.stdlogger;
|
||||
log.new(&sl, &s); // triggers log.ensureinit; populates log.silent
|
||||
let sl: log.stdlogger = log.new(s); // triggers log.ensureinit; populates log.silent
|
||||
|
||||
if (log.silent == nil) { fail(); };
|
||||
|
||||
@@ -236,12 +214,10 @@ fn streq(a: str, b: str) bool = {
|
||||
// resolve correctly.
|
||||
@test fn lprintflnindexed() void = {
|
||||
let buf: [16]u8;
|
||||
let mem: memio.state;
|
||||
let s: io.stream;
|
||||
memio.fixed(&mem, &s, buf[0:16]);
|
||||
let mem: memio.stream = memio.fixed(buf[0:16]);
|
||||
let s: io.stream = &mem.vt;
|
||||
|
||||
let sl: log.stdlogger;
|
||||
log.new(&sl, &s);
|
||||
let sl: log.stdlogger = log.new(s);
|
||||
|
||||
log.lprintfln(&sl.logger, "{1} {0}", "a", "b");
|
||||
|
||||
@@ -254,12 +230,10 @@ fn streq(a: str, b: str) bool = {
|
||||
// intact (parser proper covered in fmttest).
|
||||
@test fn lprintflnmods() void = {
|
||||
let buf: [16]u8;
|
||||
let mem: memio.state;
|
||||
let s: io.stream;
|
||||
memio.fixed(&mem, &s, buf[0:16]);
|
||||
let mem: memio.stream = memio.fixed(buf[0:16]);
|
||||
let s: io.stream = &mem.vt;
|
||||
|
||||
let sl: log.stdlogger;
|
||||
log.new(&sl, &s);
|
||||
let sl: log.stdlogger = log.new(s);
|
||||
|
||||
log.lprintfln(&sl.logger, "{:5}", 42i64);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user