Commit 52ebba6bdf

Andrew Kelley <andrew@ziglang.org>
2024-01-04 08:44:44
`@shlExact` fixups
* Add clarification in langref * move test case to behavior tests
1 parent 10016e0
Changed files (3)
doc/langref.html.in
@@ -9163,6 +9163,11 @@ test "@setRuntimeSafety" {
       The type of {#syntax#}shift_amt{#endsyntax#} is an unsigned integer with {#syntax#}log2(@typeInfo(T).Int.bits){#endsyntax#} bits.
               This is because {#syntax#}shift_amt >= @typeInfo(T).Int.bits{#endsyntax#} is undefined behavior.
       </p>
+      <p>
+      {#syntax#}comptime_int{#endsyntax#} is modeled as an integer with an infinite number of bits,
+      meaning that in such case, {#syntax#}@shlExact{#endsyntax#} always produces a result and
+      cannot produce a compile error.
+      </p>
       {#see_also|@shrExact|@shlWithOverflow#}
       {#header_close#}
 
test/behavior/math.zig
@@ -1314,6 +1314,8 @@ test "exact shift left" {
 
     try testShlExact(0b00110101);
     try comptime testShlExact(0b00110101);
+
+    if (@shlExact(1, 1) != 2) @compileError("should be 2");
 }
 fn testShlExact(x: u8) !void {
     const shifted = @shlExact(x, 2);
test/cases/shl_exact_comptime_int_lhs.zig
@@ -1,6 +0,0 @@
-export fn entry() void {
-    if (@shlExact(1, 1) != 2) @compileError("should be 2");
-}
-
-// compile
-// output_mode=Obj