The u64 pin is spelled the way the program that motivated it is
This commit is contained in:
parent
b34a7bbf11
commit
13b391b7bf
@ -1002,12 +1002,12 @@ let () =
|
||||
(* The literal rule is untouched, which is what keeps a u64 constant's
|
||||
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))";
|
||||
"(defconst fnv u64 0xcbf29ce484222325) (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) \
|
||||
"(defconst fnv u64 0xcbf29ce484222325) \
|
||||
(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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user