//! > simple closure.

//! > test_runner_name
test_function_lowering(expect_diagnostics: false)

//! > function
fn foo(a: felt252) -> felt252 {
    let c = |a| {
        a + 3
    };
    c(2)
}

//! > function_name
foo

//! > module_code

//! > semantic_diagnostics

//! > lowering_diagnostics

//! > lowering_flat
Parameters: v0: core::felt252
blk0 (root):
Statements:
  (v1: core::felt252) <- 2
  (v2: core::felt252) <- 3
  (v3: core::felt252) <- core::felt252_add(v1, v2)
End:
  Return(v3)

//! > ==========================================================================

//! > using captured copiable variable.

//! > test_runner_name
test_function_lowering(expect_diagnostics: false)

//! > function
fn foo() -> felt252 {
    let x = 8;
    let c = |a| {
        x * (a + 3)
    };
    let y = c(2);
    y + x
}

//! > function_name
foo

//! > module_code

//! > semantic_diagnostics

//! > lowering_diagnostics

//! > lowering_flat
Parameters:
blk0 (root):
Statements:
  (v0: core::felt252) <- 8
  (v1: core::felt252) <- 2
  (v2: core::felt252) <- 3
  (v3: core::felt252) <- core::felt252_add(v1, v2)
  (v4: core::felt252) <- core::felt252_mul(v0, v3)
  (v5: core::felt252) <- core::felt252_add(v4, v0)
End:
  Return(v5)
