On Monday, 31 January 2022 at 18:12:32 UTC, Ola Fosheim Grøstad wrote:
>On Monday, 31 January 2022 at 17:52:17 UTC, Ola Fosheim Grøstad wrote:
>int x;
for(int i=1; i<99998; i++){
x = next_monotonically_increasing_int_with_no_sideffect();
}
assert(x <= maximum_integer_value - 99998);
Typo, should have been a "…" in the loop, assuming no sideffects.
Another typo: the loop termination should remain "i<99999", so to avoid further confusion… It is equivalent to:
int x;
for(int i=1; i<99999; i++){
x = next_monotonically_increasing_int_with_no_sideffect();
…
}
assert(x <= maximum_integer_value - 99998);
I hope I got it right now… Hm.
Of course a more drastic example would be code that test the negated conditional (always false), if you then can deduce the last value of x by computation then you can remove the loop entirely and only keep the assert statement.
I don't see how that would break the Go spec.