Skip to content

Commit 2e07338

Browse files
committed
improve specificity of MemoryAlreadySet error message
1 parent 1249265 commit 2e07338

File tree

5 files changed

+23
-7
lines changed

5 files changed

+23
-7
lines changed

crates/lean_compiler/src/lib.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,9 @@ pub fn compile_program(program: String) -> Bytecode {
2424
// for (loc, name) in function_locations.iter() {
2525
// println!("{name}: {loc}");
2626
// }
27-
// println!("\n\nCompiled Program:\n\n{compiled}");
28-
compile_to_low_level_bytecode(intermediate_bytecode, program, function_locations).unwrap()
27+
let compiled = compile_to_low_level_bytecode(intermediate_bytecode, program, function_locations).unwrap();
28+
println!("\n\nCompiled Program:\n\n{compiled}");
29+
compiled
2930
}
3031

3132
pub fn compile_and_run(

crates/lean_prover/tests/test_zkvm.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,6 @@ fn test_zk_vm_helper(program_str: &str, (public_input, private_input): (&[F], &[
125125
);
126126
let proof_time = time.elapsed();
127127
verify_execution(&bytecode, public_input, proof_data, whir_config_builder()).unwrap();
128-
println!("{}", summary);
128+
println!("{summary}");
129129
println!("Proof time: {:.3} s", proof_time.as_secs_f32());
130130
}

crates/lean_vm/src/diagnostics/error.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,12 @@ pub enum RunnerError {
99
#[error("Out of memory")]
1010
OutOfMemory,
1111

12-
#[error("Memory already set")]
13-
MemoryAlreadySet,
12+
#[error("Memory already set: m[{address}] = {prev_value} != {new_value}")]
13+
MemoryAlreadySet {
14+
address: usize,
15+
prev_value: F,
16+
new_value: F,
17+
},
1418

1519
#[error("Not a pointer")]
1620
NotAPointer,

crates/lean_vm/src/execution/memory.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,11 @@ impl Memory {
4141
}
4242
if let Some(existing) = &mut self.0[index] {
4343
if *existing != value {
44-
return Err(RunnerError::MemoryAlreadySet);
44+
return Err(RunnerError::MemoryAlreadySet {
45+
address: index,
46+
prev_value: *existing,
47+
new_value: value,
48+
});
4549
}
4650
} else {
4751
self.0[index] = Some(value);

crates/lean_vm/src/execution/tests.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,14 @@ fn test_memory_already_set_error() {
2525
memory.set(0, F::ONE).unwrap();
2626

2727
// Setting different value should fail
28-
assert!(matches!(memory.set(0, F::ZERO), Err(RunnerError::MemoryAlreadySet)));
28+
assert!(matches!(
29+
memory.set(0, F::ZERO),
30+
Err(RunnerError::MemoryAlreadySet {
31+
address: 0,
32+
prev_value: F::ONE,
33+
new_value: F::ZERO,
34+
})
35+
));
2936
}
3037

3138
#[test]

0 commit comments

Comments
 (0)