Skip to content

Commit f236e8a

Browse files
committed
wip: issue/88
1 parent 4f17aad commit f236e8a

File tree

5 files changed

+19
-21
lines changed

5 files changed

+19
-21
lines changed

crates/lean_compiler/src/a_simplify_lang.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ fn check_expr_scoping(expr: &Expression, ctx: &Context) {
326326
fn check_simple_expr_scoping(expr: &SimpleExpr, ctx: &Context) {
327327
match expr {
328328
SimpleExpr::Var(v) => {
329-
assert!(ctx.defines(&v), "Variable defined but not used: {:?}", v)
329+
assert!(ctx.defines(&v), "Variable used but not defined: {:?}", v)
330330
},
331331
SimpleExpr::Constant(_) => {},
332332
SimpleExpr::ConstMallocAccess { .. } => {},

crates/lean_compiler/src/b_compile_intermediate.rs

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ fn compile_lines(
169169
for (i, line) in lines.iter().enumerate() {
170170
match line {
171171
SimpleLine::ForwardDeclaration { var } => {
172-
let mut current_scope_layout = compiler.stack_frame_layout.scopes.last_mut().unwrap();
172+
let current_scope_layout = compiler.stack_frame_layout.scopes.last_mut().unwrap();
173173
current_scope_layout.var_positions.insert(var.clone(), compiler.stack_pos);
174174
compiler.stack_pos += 1;
175175
}
@@ -185,7 +185,7 @@ fn compile_lines(
185185

186186
if let VarOrConstMallocAccess::Var(var) = var {
187187
declared_vars.insert(var.clone());
188-
let mut current_scope_layout = compiler.stack_frame_layout.scopes.last_mut().unwrap();
188+
let current_scope_layout = compiler.stack_frame_layout.scopes.last_mut().unwrap();
189189
current_scope_layout.var_positions.insert(var.clone(), compiler.stack_pos);
190190
compiler.stack_pos += 1;
191191
}
@@ -402,7 +402,7 @@ fn compile_lines(
402402
validate_vars_declared(&[index], declared_vars)?;
403403
if let SimpleExpr::Var(var) = res && !compiler.is_in_scope(var) {
404404
declared_vars.insert(var.clone());
405-
let mut current_scope_layout = compiler.stack_frame_layout.scopes.last_mut().unwrap();
405+
let current_scope_layout = compiler.stack_frame_layout.scopes.last_mut().unwrap();
406406
current_scope_layout.var_positions.insert(var.clone(), compiler.stack_pos);
407407
compiler.stack_pos += 1;
408408
}
@@ -442,7 +442,7 @@ fn compile_lines(
442442
validate_vars_declared(args, declared_vars)?;
443443
declared_vars.extend(return_data.iter().cloned());
444444
for var in return_data.iter() {
445-
let mut current_scope_layout = compiler.stack_frame_layout.scopes.last_mut().unwrap();
445+
let current_scope_layout = compiler.stack_frame_layout.scopes.last_mut().unwrap();
446446
current_scope_layout.var_positions.insert(var.clone(), compiler.stack_pos);
447447
compiler.stack_pos += 1;
448448
}
@@ -522,7 +522,7 @@ fn compile_lines(
522522
vectorized,
523523
vectorized_len,
524524
} => {
525-
let mut current_scope_layout = compiler.stack_frame_layout.scopes.last_mut().unwrap();
525+
let current_scope_layout = compiler.stack_frame_layout.scopes.last_mut().unwrap();
526526
current_scope_layout.var_positions.insert(var.clone(), compiler.stack_pos);
527527
compiler.stack_pos += 1;
528528
declared_vars.insert(var.clone());
@@ -536,20 +536,18 @@ fn compile_lines(
536536
SimpleLine::ConstMalloc { var, size, label } => {
537537
let size = size.naive_eval().unwrap().to_usize(); // TODO not very good;
538538
declared_vars.insert(var.clone());
539-
let mut current_scope_layout = compiler.stack_frame_layout.scopes.last_mut().unwrap();
539+
let current_scope_layout = compiler.stack_frame_layout.scopes.last_mut().unwrap();
540540
current_scope_layout.var_positions.insert(var.clone(), compiler.stack_pos);
541541
compiler.stack_pos += 1;
542-
current_scope_layout.const_mallocs.insert(*label, compiler.stack_pos);
543-
handle_const_malloc(declared_vars, &mut instructions, compiler, var, size, label);
544-
compiler.stack_pos += size;
542+
handle_const_malloc(&mut instructions, compiler, var, size, label);
545543
}
546544
SimpleLine::DecomposeBits {
547545
var,
548546
to_decompose,
549547
label,
550548
} => {
551549
declared_vars.insert(var.clone());
552-
let mut current_scope_layout = compiler.stack_frame_layout.scopes.last_mut().unwrap();
550+
let current_scope_layout = compiler.stack_frame_layout.scopes.last_mut().unwrap();
553551
current_scope_layout.var_positions.insert(var.clone(), compiler.stack_pos);
554552
compiler.stack_pos += 1;
555553

@@ -562,22 +560,20 @@ fn compile_lines(
562560
});
563561

564562
handle_const_malloc(
565-
declared_vars,
566563
&mut instructions,
567564
compiler,
568565
var,
569566
F::bits() * to_decompose.len(),
570567
label,
571568
);
572-
compiler.stack_pos += F::bits() * to_decompose.len();
573569
}
574570
SimpleLine::DecomposeCustom {
575571
var,
576572
to_decompose,
577573
label,
578574
} => {
579575
declared_vars.insert(var.clone());
580-
let mut current_scope_layout = compiler.stack_frame_layout.scopes.last_mut().unwrap();
576+
let current_scope_layout = compiler.stack_frame_layout.scopes.last_mut().unwrap();
581577
current_scope_layout.var_positions.insert(var.clone(), compiler.stack_pos);
582578
compiler.stack_pos += 1;
583579

@@ -590,17 +586,15 @@ fn compile_lines(
590586
});
591587

592588
handle_const_malloc(
593-
declared_vars,
594589
&mut instructions,
595590
compiler,
596591
var,
597592
F::bits() * to_decompose.len(),
598593
label,
599594
);
600-
compiler.stack_pos += F::bits() * to_decompose.len();
601595
}
602596
SimpleLine::CounterHint { var } => {
603-
let mut current_scope_layout = compiler.stack_frame_layout.scopes.last_mut().unwrap();
597+
let current_scope_layout = compiler.stack_frame_layout.scopes.last_mut().unwrap();
604598
current_scope_layout.var_positions.insert(var.clone(), compiler.stack_pos);
605599
compiler.stack_pos += 1;
606600
declared_vars.insert(var.clone());
@@ -640,13 +634,14 @@ fn compile_lines(
640634
}
641635

642636
fn handle_const_malloc(
643-
declared_vars: &mut BTreeSet<Var>,
644637
instructions: &mut Vec<IntermediateInstruction>,
645638
compiler: &mut Compiler,
646639
var: &Var,
647640
size: usize,
648641
label: &ConstMallocLabel,
649642
) {
643+
let current_scope_layout = compiler.stack_frame_layout.scopes.last_mut().unwrap();
644+
current_scope_layout.const_mallocs.insert(*label, compiler.stack_pos);
650645
instructions.push(IntermediateInstruction::Computation {
651646
operation: Operation::Add,
652647
arg_a: IntermediateValue::Constant(compiler.stack_pos.into()),
@@ -655,6 +650,7 @@ fn handle_const_malloc(
655650
offset: compiler.get_offset(&var.clone().into()),
656651
},
657652
});
653+
compiler.stack_pos += size;
658654
}
659655

660656
// Helper functions

crates/lean_compiler/src/parser/parsers/statement.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ impl Parse<Line> for StatementParser {
4040
pub struct ForwardDeclarationParser;
4141

4242
impl Parse<Line> for ForwardDeclarationParser {
43-
fn parse(pair: ParsePair<'_>, ctx: &mut ParseContext) -> ParseResult<Line> {
43+
fn parse(pair: ParsePair<'_>, _ctx: &mut ParseContext) -> ParseResult<Line> {
4444
let mut inner = pair.into_inner();
4545
let var = next_inner_pair(&mut inner, "variable name")?.as_str().to_string();
4646
Ok(Line::ForwardDeclaration { var })

crates/lean_vm/src/execution/tests.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ fn test_basic_memory_operations() {
1313
assert_eq!(memory.get(5).unwrap(), F::from_usize(42));
1414

1515
// Test undefined memory access
16-
assert!(matches!(memory.get(1), Err(RunnerError::UndefinedMemory)));
16+
assert!(matches!(memory.get(1), Err(RunnerError::UndefinedMemory(1))));
1717
}
1818

1919
#[test]
@@ -25,7 +25,7 @@ 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!(memory.set(0, F::ZERO), Err(RunnerError::MemoryAlreadySet { address: 0, prev_value: F::ONE, new_value: F::ZERO })));
2929
}
3030

3131
#[test]

crates/rec_aggregation/recursion_program.lean_lang

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,8 @@ fn sample_stir_indexes_and_fold(fs_state, num_queries, merkle_leaves_in_basefiel
334334
states = malloc(1 + folded_domain_size);
335335
states[0] = leaf_hashes[i];
336336
for j in 0..folded_domain_size {
337+
var left;
338+
var right;
337339
if stir_index_bits[j] == 1 {
338340
left = merkle_path + j;
339341
right = states[j];

0 commit comments

Comments
 (0)