The u64 pin is spelled the way the program that motivated it is

This commit is contained in:
Joseph Ferano 2026-09-20 18:45:34 +07:00
parent b34a7bbf11
commit 13b391b7bf

View File

@ -1002,12 +1002,12 @@ let () =
(* The literal rule is untouched, which is what keeps a u64 constant's (* The literal rule is untouched, which is what keeps a u64 constant's
arithmetic at u64 rather than defaulting the 1 to an i32. *) arithmetic at u64 rather than defaulting the 1 to an i32. *)
accepts "a literal still takes the other operand's type" accepts "a literal still takes the other operand's type"
"(defconst fnv u64 14695981039346656037) (defn f [] u64 (+ fnv 1))"; "(defconst fnv u64 0xcbf29ce484222325) (defn f [] u64 (+ fnv 1))";
(* The form DISCUSS.org's note named: an unannotated let of a u64 constant. (* 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 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. *) 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" accepts "an unannotated let of a u64 constant still binds a u64"
"(defconst fnv u64 14695981039346656037) \ "(defconst fnv u64 0xcbf29ce484222325) \
(defn f [] u64 (let [h fnv] (* h 2)))"; (defn f [] u64 (let [h fnv] (* h 2)))";
(* Shifts are the carve-out: the value's type decides and the count widens (* 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 to it, never the reverse, because the result's width and the poison check