The raylib half of the sweep, and the let the note named

This commit is contained in:
Joseph Ferano 2026-09-20 18:44:37 +07:00
parent 3b91afd47b
commit b34a7bbf11
2 changed files with 12 additions and 0 deletions

View File

@ -2629,6 +2629,12 @@ what was true when they were written.
pure addition: widening.flan's own rows. Not one existing program's
diagnostics, output or exit status moved.
The thirteen test programs that import ~vendor:raylib~ were not run either,
for the same reason, and got the same treatment as examples/ below:
~check~'s diagnostics are identical on both sides, LLVM ~emit~ is
byte-identical, and the x86 difference is the prelude-line strings and
nothing else.
examples/ were *not run*. They link raylib and every one of them opens a
real window on the author's desktop, so the comparison there is ~check~'s
exit status and diagnostics plus a byte-diff of ~emit~ and ~emit --x86~.

View File

@ -1003,6 +1003,12 @@ let () =
arithmetic at u64 rather than defaulting the 1 to an i32. *)
accepts "a literal still takes the other operand's type"
"(defconst fnv u64 14695981039346656037) (defn f [] u64 (+ fnv 1))";
(* The form DISCUSS.org's note named: an unannotated let of a u64 constant.
It binds a u64 and nothing about widening reaches it a let with no type
has no expectation to widen against, and the constant is what it says. *)
accepts "an unannotated let of a u64 constant still binds a u64"
"(defconst fnv u64 14695981039346656037) \
(defn f [] u64 (let [h fnv] (* h 2)))";
(* Shifts are the carve-out: the value's type decides and the count widens
to it, never the reverse, because the result's width and the poison check
both belong to the value. *)