Closed
Description
https://en.cppreference.com/w/c/language/operator_arithmetic
The behavior is undefined if rhs is negative or is greater or equal the number of bits in the promoted lhs.
///|
pub fn Int::op_shl(self : Int, other : Int) -> Int = "%i32_shl"
///|
pub fn Int::op_shr(self : Int, other : Int) -> Int = "%i32_shr"
I recommend the following API
///|
pub fn Int::op_shl(self : Int, other : UInt) -> Int
///|
pub fn Int::op_shr(self : Int, other : UInt) -> Int
and if greater or equal the number of bits in the promoted lhs, I think we need to panic in all backend.
Metadata
Metadata
Assignees
Labels
No labels