// An `inline for` / `for` range bound is a range ENDPOINT, not a count, so the // count negative-rejection rule does NOT apply to it: negative endpoints are // valid and an empty/inverted range simply runs zero iterations. // // Regression (F0.4 attempt 11, Agra ruling): the spec wrongly lumped inline-for // bounds with counts (array dim / Vector lane / value-param), which reject // negatives. Bounds are exempt — `inline for -2..1` iterates -2,-1,0 and an // integral-float empty range `0..(-2.0)` runs zero iterations. Comptime and // runtime loops must agree. #import "modules/std.sx"; main :: () { s := 0; inline for -2..1 (i) { s += i; } print("inline for -2..1 sum = {}\n", s); // -2 + -1 + 0 = -3 r := 0; for -2..1 (i) { r += i; } print("for -2..1 sum = {}\n", r); // -2 + -1 + 0 = -3 (runtime parity) e := 0; inline for 0..(-2.0) (i) { e += i; } print("inline for 0..(-2.0) sum = {}\n", e); // empty range -> 0 iterations }