mirror of
https://github.com/ziglang/zig.git
synced 2026-01-06 21:43:25 +00:00
Peer type resolution with unsigned ints and larger signed ints
This commit is contained in:
parent
03113d9246
commit
ea18f894f5
@ -12706,11 +12706,13 @@ static ZigType *ir_resolve_peer_types(IrAnalyze *ira, AstNode *source_node, ZigT
|
||||
}
|
||||
|
||||
if (prev_type->id == ZigTypeIdInt &&
|
||||
cur_type->id == ZigTypeIdInt &&
|
||||
prev_type->data.integral.is_signed == cur_type->data.integral.is_signed)
|
||||
cur_type->id == ZigTypeIdInt)
|
||||
{
|
||||
if (cur_type->data.integral.bit_count > prev_type->data.integral.bit_count) {
|
||||
prev_inst = cur_inst;
|
||||
if ((prev_type->data.integral.is_signed == cur_type->data.integral.is_signed) ||
|
||||
(cur_type->data.integral.is_signed && !prev_type->data.integral.is_signed)) {
|
||||
if (cur_type->data.integral.bit_count > prev_type->data.integral.bit_count) {
|
||||
prev_inst = cur_inst;
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -869,6 +869,15 @@ test "peer type resolve string lit with sentinel-terminated mutable slice" {
|
||||
comptime expect(@TypeOf("hi", slice) == [:0]const u8);
|
||||
}
|
||||
|
||||
test "peer type unsigned int to signed" {
|
||||
var w: u31 = 5;
|
||||
var x: u8 = 7;
|
||||
var y: i32 = -5;
|
||||
var a = w + y + x;
|
||||
comptime expect(@TypeOf(a) == i32);
|
||||
expect(a == 7);
|
||||
}
|
||||
|
||||
test "peer type resolve array pointers, one of them const" {
|
||||
var array1: [4]u8 = undefined;
|
||||
const array2: [5]u8 = undefined;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user