diff options
| author | Ali Chraghi <chraghiali1@gmail.com> | 2022-05-22 19:36:59 +0430 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-05-27 16:43:33 -0400 |
| commit | 0e6285c8fc31ff866df96847fe34e660da38b4a9 (patch) | |
| tree | 5d5830d5b3ce6c13041aacb7e073763551cb4852 /src/codegen.zig | |
| parent | ddd5b57045d38b7d1f7d5a4120302797433233cd (diff) | |
| download | zig-0e6285c8fc31ff866df96847fe34e660da38b4a9.tar.gz zig-0e6285c8fc31ff866df96847fe34e660da38b4a9.zip | |
math: make `cast` return optional instead of an error
Diffstat (limited to 'src/codegen.zig')
| -rw-r--r-- | src/codegen.zig | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/codegen.zig b/src/codegen.zig index fbe462959e..84615d86d8 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -166,7 +166,7 @@ pub fn generateSymbol( }); if (typed_value.val.isUndefDeep()) { - const abi_size = try math.cast(usize, typed_value.ty.abiSize(target)); + const abi_size = math.cast(usize, typed_value.ty.abiSize(target)) orelse return error.Overflow; try code.appendNTimes(0xaa, abi_size); return Result{ .appended = {} }; } @@ -452,7 +452,7 @@ pub fn generateSymbol( if (info.bits > 64) { var bigint_buffer: Value.BigIntSpace = undefined; const bigint = typed_value.val.toBigInt(&bigint_buffer, target); - const abi_size = try math.cast(usize, typed_value.ty.abiSize(target)); + const abi_size = math.cast(usize, typed_value.ty.abiSize(target)) orelse return error.Overflow; const start = code.items.len; try code.resize(start + abi_size); bigint.writeTwosComplement(code.items[start..][0..abi_size], info.bits, abi_size, endian); @@ -571,7 +571,7 @@ pub fn generateSymbol( // Pad struct members if required const padded_field_end = typed_value.ty.structFieldOffset(index + 1, target); - const padding = try math.cast(usize, padded_field_end - unpadded_field_end); + const padding = math.cast(usize, padded_field_end - unpadded_field_end) orelse return error.Overflow; if (padding > 0) { try code.writer().writeByteNTimes(0, padding); @@ -611,7 +611,7 @@ pub fn generateSymbol( assert(union_ty.haveFieldTypes()); const field_ty = union_ty.fields.values()[field_index].ty; if (!field_ty.hasRuntimeBits()) { - try code.writer().writeByteNTimes(0xaa, try math.cast(usize, layout.payload_size)); + try code.writer().writeByteNTimes(0xaa, math.cast(usize, layout.payload_size) orelse return error.Overflow); } else { switch (try generateSymbol(bin_file, src_loc, .{ .ty = field_ty, @@ -624,7 +624,7 @@ pub fn generateSymbol( .fail => |em| return Result{ .fail = em }, } - const padding = try math.cast(usize, layout.payload_size - field_ty.abiSize(target)); + const padding = math.cast(usize, layout.payload_size - field_ty.abiSize(target)) orelse return error.Overflow; if (padding > 0) { try code.writer().writeByteNTimes(0, padding); } @@ -649,8 +649,8 @@ pub fn generateSymbol( var opt_buf: Type.Payload.ElemType = undefined; const payload_type = typed_value.ty.optionalChild(&opt_buf); const is_pl = !typed_value.val.isNull(); - const abi_size = try math.cast(usize, typed_value.ty.abiSize(target)); - const offset = abi_size - try math.cast(usize, payload_type.abiSize(target)); + const abi_size = math.cast(usize, typed_value.ty.abiSize(target)) orelse return error.Overflow; + const offset = abi_size - (math.cast(usize, payload_type.abiSize(target)) orelse return error.Overflow); if (!payload_type.hasRuntimeBits()) { try code.writer().writeByteNTimes(@boolToInt(is_pl), abi_size); @@ -758,7 +758,7 @@ pub fn generateSymbol( } const unpadded_end = code.items.len - begin; const padded_end = mem.alignForwardGeneric(u64, unpadded_end, abi_align); - const padding = try math.cast(usize, padded_end - unpadded_end); + const padding = math.cast(usize, padded_end - unpadded_end) orelse return error.Overflow; if (padding > 0) { try code.writer().writeByteNTimes(0, padding); @@ -780,7 +780,7 @@ pub fn generateSymbol( } const unpadded_end = code.items.len - begin; const padded_end = mem.alignForwardGeneric(u64, unpadded_end, abi_align); - const padding = try math.cast(usize, padded_end - unpadded_end); + const padding = math.cast(usize, padded_end - unpadded_end) orelse return error.Overflow; if (padding > 0) { try code.writer().writeByteNTimes(0, padding); |
