diff --git a/crates/nargo_cli/tests/execution_success/closures_mut_ref/src/main.nr b/crates/nargo_cli/tests/execution_success/closures_mut_ref/src/main.nr index 1f439a3b43d..2888745a96e 100644 --- a/crates/nargo_cli/tests/execution_success/closures_mut_ref/src/main.nr +++ b/crates/nargo_cli/tests/execution_success/closures_mut_ref/src/main.nr @@ -15,4 +15,17 @@ fn main(mut x: Field) { add2(&mut x); assert(x == 3); + issue_2120(); } + +// https://github.com/noir-lang/noir/issues/2120 +fn issue_2120() { + let x1 = &mut 42; + let set_x1 = |y| { *x1 = y; }; + + assert(*x1 == 42); + set_x1(44); + assert(*x1 == 44); + set_x1(*x1); + assert(*x1 == 44); +} \ No newline at end of file diff --git a/crates/noirc_frontend/src/monomorphization/mod.rs b/crates/noirc_frontend/src/monomorphization/mod.rs index 4a04cb7b58e..466a3f95e81 100644 --- a/crates/noirc_frontend/src/monomorphization/mod.rs +++ b/crates/noirc_frontend/src/monomorphization/mod.rs @@ -1126,7 +1126,7 @@ impl<'interner> Monomorphizer<'interner> { }); let location = None; // TODO: This should match the location of the lambda expression - let mutable = false; + let mutable = true; let definition = Definition::Local(env_local_id); let env_ident = ast::Ident {