diff --git a/compiler/noirc_frontend/src/hir/comptime/interpreter/infix.rs b/compiler/noirc_frontend/src/hir/comptime/interpreter/infix.rs index aa3892a358b..19183f35d88 100644 --- a/compiler/noirc_frontend/src/hir/comptime/interpreter/infix.rs +++ b/compiler/noirc_frontend/src/hir/comptime/interpreter/infix.rs @@ -191,7 +191,8 @@ pub(super) fn evaluate_infix( (lhs_value as lhs "^" rhs_value as rhs) => lhs ^ rhs }, BinaryOpKind::ShiftRight => match_bitshift! { - (lhs_value as lhs ">>" rhs_value as rhs) => lhs.checked_shr(rhs.into()) + // Overflow on shift-right returns 0 in Noir + (lhs_value as lhs ">>" rhs_value as rhs) => lhs.checked_shr(rhs.into()).or(Some(0)) }, BinaryOpKind::ShiftLeft => match_bitshift! { (lhs_value as lhs "<<" rhs_value as rhs) => lhs.checked_shl(rhs.into()) diff --git a/test_programs/compile_success_no_bug/comptime_right_shift_no_overflow/Nargo.toml b/test_programs/compile_success_no_bug/comptime_right_shift_no_overflow/Nargo.toml new file mode 100644 index 00000000000..9ca0fd26f05 --- /dev/null +++ b/test_programs/compile_success_no_bug/comptime_right_shift_no_overflow/Nargo.toml @@ -0,0 +1,6 @@ +[package] +name = "comptime_right_shift_no_overflow" +type = "bin" +authors = [""] + +[dependencies] diff --git a/test_programs/compile_success_no_bug/comptime_right_shift_no_overflow/src/main.nr b/test_programs/compile_success_no_bug/comptime_right_shift_no_overflow/src/main.nr new file mode 100644 index 00000000000..ad65d64321b --- /dev/null +++ b/test_programs/compile_success_no_bug/comptime_right_shift_no_overflow/src/main.nr @@ -0,0 +1,4 @@ +fn main(x: Field) -> pub Field { + let y = comptime { 1 >> 32 }; + x + y +} diff --git a/tooling/nargo_cli/tests/snapshots/expand/compile_success_no_bug/comptime_right_shift_no_overflow/execute__tests__expanded.snap b/tooling/nargo_cli/tests/snapshots/expand/compile_success_no_bug/comptime_right_shift_no_overflow/execute__tests__expanded.snap new file mode 100644 index 00000000000..de48dace64c --- /dev/null +++ b/tooling/nargo_cli/tests/snapshots/expand/compile_success_no_bug/comptime_right_shift_no_overflow/execute__tests__expanded.snap @@ -0,0 +1,8 @@ +--- +source: tooling/nargo_cli/tests/execute.rs +expression: expanded_code +--- +fn main(x: Field) -> pub Field { + let y: Field = 0; + x + y +}