zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 59418d1bf6f82866a1c8f3b35fd815bb7add5129 (tree)
parent 470c8ca48c32d34da06e4741b8f81b6eb0d72fd7
Author: Andrew Kelley <andrew@ziglang.org>
Date:   Tue,  8 Feb 2022 22:09:41 -0700

Sema: fix Value.intFitsInType for comptime int

Diffstat:
Msrc/value.zig | 34+++++++++++++++++++++-------------
Mtest/behavior/slice.zig | 2--
2 files changed, 21 insertions(+), 15 deletions(-)

diff --git a/src/value.zig b/src/value.zig @@ -1331,12 +1331,16 @@ pub const Value = extern union { .one, .bool_true, - => { - const info = ty.intInfo(target); - return switch (info.signedness) { - .signed => info.bits >= 2, - .unsigned => info.bits >= 1, - }; + => switch (ty.zigTypeTag()) { + .Int => { + const info = ty.intInfo(target); + return switch (info.signedness) { + .signed => info.bits >= 2, + .unsigned => info.bits >= 1, + }; + }, + .ComptimeInt => return true, + else => unreachable, }, .int_u64 => switch (ty.zigTypeTag()) { @@ -1390,13 +1394,17 @@ pub const Value = extern union { .decl_ref, .function, .variable, - => { - const info = ty.intInfo(target); - const ptr_bits = target.cpu.arch.ptrBitWidth(); - return switch (info.signedness) { - .signed => info.bits > ptr_bits, - .unsigned => info.bits >= ptr_bits, - }; + => switch (ty.zigTypeTag()) { + .Int => { + const info = ty.intInfo(target); + const ptr_bits = target.cpu.arch.ptrBitWidth(); + return switch (info.signedness) { + .signed => info.bits > ptr_bits, + .unsigned => info.bits >= ptr_bits, + }; + }, + .ComptimeInt => return true, + else => unreachable, }, else => unreachable, diff --git a/test/behavior/slice.zig b/test/behavior/slice.zig @@ -245,8 +245,6 @@ test "C pointer slice access" { } test "comptime slices are disambiguated" { - if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO - try expect(sliceSum(&[_]u8{ 1, 2 }) == 3); try expect(sliceSum(&[_]u8{ 3, 4 }) == 7); }