lib/math/checked,log: drop redundant type annotations (Wave-1)
61 over-annotations dropped where the rhs unambiguously infers the declared type: 22 overflow:bool comparison binds in checked.ww, and the mem/s/sl memio.stream/io.stream/log.stdlogger triplet across 13 @test sites in logtest.ww. Sub-word res:/fullres: binds with casts or truncation are kept. Byte-identical asm in both stages, both files non-embedded.
This commit is contained in:
@@ -44,9 +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.stream = memio.fixed(buf[0:4]);
|
||||
let s: io.stream = &mem.vt;
|
||||
let sl: log.stdlogger = log.new(s); // triggers ensureinit
|
||||
let mem = memio.fixed(buf[0:4]);
|
||||
let s = &mem.vt;
|
||||
let sl = log.new(s); // triggers ensureinit
|
||||
|
||||
if (log.silent == nil) { fail(); };
|
||||
if (log.default == nil) { fail(); };
|
||||
@@ -58,10 +58,10 @@ fn streq(a: str, b: str) bool = {
|
||||
|
||||
@test fn lprintlnbasic() void = {
|
||||
let buf: [32]u8;
|
||||
let mem: memio.stream = memio.fixed(buf[0:32]);
|
||||
let s: io.stream = &mem.vt;
|
||||
let mem = memio.fixed(buf[0:32]);
|
||||
let s = &mem.vt;
|
||||
|
||||
let sl: log.stdlogger = log.new(s);
|
||||
let sl = log.new(s);
|
||||
|
||||
log.lprintln(&sl.logger, "hello", 42i64);
|
||||
|
||||
@@ -72,10 +72,10 @@ fn streq(a: str, b: str) bool = {
|
||||
|
||||
@test fn lprintlnsingle() void = {
|
||||
let buf: [16]u8;
|
||||
let mem: memio.stream = memio.fixed(buf[0:16]);
|
||||
let s: io.stream = &mem.vt;
|
||||
let mem = memio.fixed(buf[0:16]);
|
||||
let s = &mem.vt;
|
||||
|
||||
let sl: log.stdlogger = log.new(s);
|
||||
let sl = log.new(s);
|
||||
|
||||
log.lprintln(&sl.logger, "only");
|
||||
|
||||
@@ -86,10 +86,10 @@ fn streq(a: str, b: str) bool = {
|
||||
|
||||
@test fn lprintlnempty() void = {
|
||||
let buf: [4]u8;
|
||||
let mem: memio.stream = memio.fixed(buf[0:4]);
|
||||
let s: io.stream = &mem.vt;
|
||||
let mem = memio.fixed(buf[0:4]);
|
||||
let s = &mem.vt;
|
||||
|
||||
let sl: log.stdlogger = log.new(s);
|
||||
let sl = log.new(s);
|
||||
|
||||
log.lprintln(&sl.logger);
|
||||
|
||||
@@ -106,10 +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.stream = memio.fixed(buf[0:16]);
|
||||
let s: io.stream = &mem.vt;
|
||||
let mem = memio.fixed(buf[0:16]);
|
||||
let s = &mem.vt;
|
||||
|
||||
let sl: log.stdlogger = log.new(s); // triggers log.ensureinit; populates log.silent
|
||||
let sl = log.new(s); // triggers log.ensureinit; populates log.silent
|
||||
|
||||
if (log.silent == nil) { fail(); };
|
||||
|
||||
@@ -126,14 +126,14 @@ fn streq(a: str, b: str) bool = {
|
||||
// the swap semantics.
|
||||
@test fn setloggerswap() void = {
|
||||
let buf1: [32]u8;
|
||||
let mem1: memio.stream = memio.fixed(buf1[0:32]);
|
||||
let s1: io.stream = &mem1.vt;
|
||||
let sl1: log.stdlogger = log.new(s1);
|
||||
let mem1 = memio.fixed(buf1[0:32]);
|
||||
let s1 = &mem1.vt;
|
||||
let sl1 = log.new(s1);
|
||||
|
||||
let buf2: [32]u8;
|
||||
let mem2: memio.stream = memio.fixed(buf2[0:32]);
|
||||
let s2: io.stream = &mem2.vt;
|
||||
let sl2: log.stdlogger = log.new(s2);
|
||||
let mem2 = memio.fixed(buf2[0:32]);
|
||||
let s2 = &mem2.vt;
|
||||
let sl2 = log.new(s2);
|
||||
|
||||
log.setlogger(&sl1.logger);
|
||||
log.println("first");
|
||||
@@ -157,10 +157,10 @@ fn streq(a: str, b: str) bool = {
|
||||
|
||||
@test fn lprintflnbasic() void = {
|
||||
let buf: [32]u8;
|
||||
let mem: memio.stream = memio.fixed(buf[0:32]);
|
||||
let s: io.stream = &mem.vt;
|
||||
let mem = memio.fixed(buf[0:32]);
|
||||
let s = &mem.vt;
|
||||
|
||||
let sl: log.stdlogger = log.new(s);
|
||||
let sl = log.new(s);
|
||||
|
||||
log.lprintfln(&sl.logger, "x={} y={}", 42i64, "hi");
|
||||
|
||||
@@ -173,14 +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.stream = memio.fixed(buf1[0:32]);
|
||||
let s1: io.stream = &mem1.vt;
|
||||
let sl1: log.stdlogger = log.new(s1);
|
||||
let mem1 = memio.fixed(buf1[0:32]);
|
||||
let s1 = &mem1.vt;
|
||||
let sl1 = log.new(s1);
|
||||
|
||||
let buf2: [32]u8;
|
||||
let mem2: memio.stream = memio.fixed(buf2[0:32]);
|
||||
let s2: io.stream = &mem2.vt;
|
||||
let sl2: log.stdlogger = log.new(s2);
|
||||
let mem2 = memio.fixed(buf2[0:32]);
|
||||
let s2 = &mem2.vt;
|
||||
let sl2 = log.new(s2);
|
||||
|
||||
log.setlogger(&sl1.logger);
|
||||
log.printfln("v={}", 7i64);
|
||||
@@ -195,10 +195,10 @@ fn streq(a: str, b: str) bool = {
|
||||
// bare-args path.
|
||||
@test fn silentignoresprintfln() void = {
|
||||
let buf: [16]u8;
|
||||
let mem: memio.stream = memio.fixed(buf[0:16]);
|
||||
let s: io.stream = &mem.vt;
|
||||
let mem = memio.fixed(buf[0:16]);
|
||||
let s = &mem.vt;
|
||||
|
||||
let sl: log.stdlogger = log.new(s); // triggers log.ensureinit; populates log.silent
|
||||
let sl = log.new(s); // triggers log.ensureinit; populates log.silent
|
||||
|
||||
if (log.silent == nil) { fail(); };
|
||||
|
||||
@@ -214,10 +214,10 @@ fn streq(a: str, b: str) bool = {
|
||||
// resolve correctly.
|
||||
@test fn lprintflnindexed() void = {
|
||||
let buf: [16]u8;
|
||||
let mem: memio.stream = memio.fixed(buf[0:16]);
|
||||
let s: io.stream = &mem.vt;
|
||||
let mem = memio.fixed(buf[0:16]);
|
||||
let s = &mem.vt;
|
||||
|
||||
let sl: log.stdlogger = log.new(s);
|
||||
let sl = log.new(s);
|
||||
|
||||
log.lprintfln(&sl.logger, "{1} {0}", "a", "b");
|
||||
|
||||
@@ -230,10 +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.stream = memio.fixed(buf[0:16]);
|
||||
let s: io.stream = &mem.vt;
|
||||
let mem = memio.fixed(buf[0:16]);
|
||||
let s = &mem.vt;
|
||||
|
||||
let sl: log.stdlogger = log.new(s);
|
||||
let sl = log.new(s);
|
||||
|
||||
log.lprintfln(&sl.logger, "{:5}", 42i64);
|
||||
|
||||
|
||||
@@ -17,97 +17,97 @@ package checked;
|
||||
|
||||
export fn addi8(a: i8, b: i8) (i8, bool) = {
|
||||
let res: i8 = a + b;
|
||||
let overflow: bool = a < 0 == b < 0 && a < 0 != res < 0;
|
||||
let overflow = a < 0 == b < 0 && a < 0 != res < 0;
|
||||
return (res, overflow);
|
||||
};
|
||||
|
||||
export fn addi16(a: i16, b: i16) (i16, bool) = {
|
||||
let res: i16 = a + b;
|
||||
let overflow: bool = a < 0 == b < 0 && a < 0 != res < 0;
|
||||
let overflow = a < 0 == b < 0 && a < 0 != res < 0;
|
||||
return (res, overflow);
|
||||
};
|
||||
|
||||
export fn addi32(a: i32, b: i32) (i32, bool) = {
|
||||
let res: i32 = a + b;
|
||||
let overflow: bool = a < 0 == b < 0 && a < 0 != res < 0;
|
||||
let overflow = a < 0 == b < 0 && a < 0 != res < 0;
|
||||
return (res, overflow);
|
||||
};
|
||||
|
||||
export fn addi64(a: i64, b: i64) (i64, bool) = {
|
||||
let res: i64 = a + b;
|
||||
let overflow: bool = a < 0 == b < 0 && a < 0 != res < 0;
|
||||
let overflow = a < 0 == b < 0 && a < 0 != res < 0;
|
||||
return (res, overflow);
|
||||
};
|
||||
|
||||
export fn addu8(a: u8, b: u8) (u8, bool) = {
|
||||
let res: u8 = a + b;
|
||||
let overflow: bool = res < a;
|
||||
let overflow = res < a;
|
||||
return (res, overflow);
|
||||
};
|
||||
|
||||
export fn addu16(a: u16, b: u16) (u16, bool) = {
|
||||
let res: u16 = a + b;
|
||||
let overflow: bool = res < a;
|
||||
let overflow = res < a;
|
||||
return (res, overflow);
|
||||
};
|
||||
|
||||
export fn addu32(a: u32, b: u32) (u32, bool) = {
|
||||
let res: u32 = a + b;
|
||||
let overflow: bool = res < a;
|
||||
let overflow = res < a;
|
||||
return (res, overflow);
|
||||
};
|
||||
|
||||
export fn addu64(a: u64, b: u64) (u64, bool) = {
|
||||
let res: u64 = a + b;
|
||||
let overflow: bool = res < a;
|
||||
let overflow = res < a;
|
||||
return (res, overflow);
|
||||
};
|
||||
|
||||
export fn subi8(a: i8, b: i8) (i8, bool) = {
|
||||
let res: i8 = a - b;
|
||||
let overflow: bool = a < 0 != b < 0 && a < 0 != res < 0;
|
||||
let overflow = a < 0 != b < 0 && a < 0 != res < 0;
|
||||
return (res, overflow);
|
||||
};
|
||||
|
||||
export fn subi16(a: i16, b: i16) (i16, bool) = {
|
||||
let res: i16 = a - b;
|
||||
let overflow: bool = a < 0 != b < 0 && a < 0 != res < 0;
|
||||
let overflow = a < 0 != b < 0 && a < 0 != res < 0;
|
||||
return (res, overflow);
|
||||
};
|
||||
|
||||
export fn subi32(a: i32, b: i32) (i32, bool) = {
|
||||
let res: i32 = a - b;
|
||||
let overflow: bool = a < 0 != b < 0 && a < 0 != res < 0;
|
||||
let overflow = a < 0 != b < 0 && a < 0 != res < 0;
|
||||
return (res, overflow);
|
||||
};
|
||||
|
||||
export fn subi64(a: i64, b: i64) (i64, bool) = {
|
||||
let res: i64 = a - b;
|
||||
let overflow: bool = a < 0 != b < 0 && a < 0 != res < 0;
|
||||
let overflow = a < 0 != b < 0 && a < 0 != res < 0;
|
||||
return (res, overflow);
|
||||
};
|
||||
|
||||
export fn subu8(a: u8, b: u8) (u8, bool) = {
|
||||
let res: u8 = a - b;
|
||||
let overflow: bool = res > a;
|
||||
let overflow = res > a;
|
||||
return (res, overflow);
|
||||
};
|
||||
|
||||
export fn subu16(a: u16, b: u16) (u16, bool) = {
|
||||
let res: u16 = a - b;
|
||||
let overflow: bool = res > a;
|
||||
let overflow = res > a;
|
||||
return (res, overflow);
|
||||
};
|
||||
|
||||
export fn subu32(a: u32, b: u32) (u32, bool) = {
|
||||
let res: u32 = a - b;
|
||||
let overflow: bool = res > a;
|
||||
let overflow = res > a;
|
||||
return (res, overflow);
|
||||
};
|
||||
|
||||
export fn subu64(a: u64, b: u64) (u64, bool) = {
|
||||
let res: u64 = a - b;
|
||||
let overflow: bool = res > a;
|
||||
let overflow = res > a;
|
||||
return (res, overflow);
|
||||
};
|
||||
|
||||
@@ -119,41 +119,41 @@ export fn subu64(a: u64, b: u64) (u64, bool) = {
|
||||
export fn muli8(a: i8, b: i8) (i8, bool) = {
|
||||
let fullres: int = a: int * b: int;
|
||||
let res: i8 = fullres: i8;
|
||||
let overflow: bool = res: int != fullres;
|
||||
let overflow = res: int != fullres;
|
||||
return (res, overflow);
|
||||
};
|
||||
|
||||
export fn muli16(a: i16, b: i16) (i16, bool) = {
|
||||
let fullres: int = a: int * b: int;
|
||||
let res: i16 = fullres: i16;
|
||||
let overflow: bool = res: int != fullres;
|
||||
let overflow = res: int != fullres;
|
||||
return (res, overflow);
|
||||
};
|
||||
|
||||
export fn muli32(a: i32, b: i32) (i32, bool) = {
|
||||
let fullres: i64 = a: i64 * b: i64;
|
||||
let res: i32 = fullres: i32;
|
||||
let overflow: bool = res: i64 != fullres;
|
||||
let overflow = res: i64 != fullres;
|
||||
return (res, overflow);
|
||||
};
|
||||
|
||||
export fn mulu8(a: u8, b: u8) (u8, bool) = {
|
||||
let fullres: uint = a: uint * b: uint;
|
||||
let res: u8 = fullres: u8;
|
||||
let overflow: bool = res: uint != fullres;
|
||||
let overflow = res: uint != fullres;
|
||||
return (res, overflow);
|
||||
};
|
||||
|
||||
export fn mulu16(a: u16, b: u16) (u16, bool) = {
|
||||
let fullres: uint = a: uint * b: uint;
|
||||
let res: u16 = fullres: u16;
|
||||
let overflow: bool = res: uint != fullres;
|
||||
let overflow = res: uint != fullres;
|
||||
return (res, overflow);
|
||||
};
|
||||
|
||||
export fn mulu32(a: u32, b: u32) (u32, bool) = {
|
||||
let fullres: u64 = a: u64 * b: u64;
|
||||
let res: u32 = fullres: u32;
|
||||
let overflow: bool = res: u64 != fullres;
|
||||
let overflow = res: u64 != fullres;
|
||||
return (res, overflow);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user