mirror of
https://github.com/roc-lang/roc.git
synced 2025-10-02 16:21:11 +00:00
less nullable
This commit is contained in:
parent
b0a07558f1
commit
074aba0012
1 changed files with 19 additions and 18 deletions
|
@ -98,29 +98,30 @@ pub const RocDec = extern struct {
|
||||||
before_val_i128 = result;
|
before_val_i128 = result;
|
||||||
}
|
}
|
||||||
|
|
||||||
var dec: ?RocDec = null;
|
const dec: RocDec = blk: {
|
||||||
if (before_val_i128) |before| {
|
if (before_val_i128) |before| {
|
||||||
if (after_val_i128) |after| {
|
if (after_val_i128) |after| {
|
||||||
var result: i128 = undefined;
|
var result: i128 = undefined;
|
||||||
var overflowed = @addWithOverflow(i128, before, after, &result);
|
var overflowed = @addWithOverflow(i128, before, after, &result);
|
||||||
if (overflowed) {
|
if (overflowed) {
|
||||||
@panic("TODO runtime exception for overflow!");
|
@panic("TODO runtime exception for overflow!");
|
||||||
|
}
|
||||||
|
break :blk .{ .num = result };
|
||||||
|
} else {
|
||||||
|
break :blk .{ .num = before };
|
||||||
}
|
}
|
||||||
dec = .{ .num = result };
|
} else if (after_val_i128) |after| {
|
||||||
|
break :blk .{ .num = after };
|
||||||
} else {
|
} else {
|
||||||
dec = .{ .num = before };
|
return null;
|
||||||
}
|
}
|
||||||
} else if (after_val_i128) |after| {
|
};
|
||||||
dec = .{ .num = after };
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dec) |d| {
|
if (is_negative) {
|
||||||
if (is_negative) {
|
return dec.negate();
|
||||||
dec = d.negate();
|
} else {
|
||||||
}
|
return dec;
|
||||||
}
|
}
|
||||||
|
|
||||||
return dec;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn toStr(self: RocDec) ?RocStr {
|
pub fn toStr(self: RocDec) ?RocStr {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue