//! > Test const folding simple scenario.
//! > test_runner_name
test_match_optimizer
//! > function
fn foo(a: felt252) -> felt252 {
let b = a - 0;
b - 0
}
//! > function_name
foo
//! > module_code
//! > semantic_diagnostics
//! > lowering_diagnostics
//! > before
Parameters: v0: core::felt252
blk0 (root):
Statements:
(v1: core::felt252) <- 0
(v5: core::felt252) <- core::felt252_sub(v0, v1)
(v3: core::felt252) <- 0
(v6: core::felt252) <- core::felt252_sub(v5, v3)
End:
Return(v6)
//! > after
Parameters: v0: core::felt252
blk0 (root):
Statements:
(v1: core::felt252) <- 0
(v5: core::felt252) <- core::felt252_sub(v0, v1)
(v3: core::felt252) <- 0
(v6: core::felt252) <- core::felt252_sub(v0, v3)
End:
Return(v0)
//! > ==========================================================================
//! > Basic box const folding.
//! > test_runner_name
test_match_optimizer
//! > function
fn foo() -> Box<felt252> {
BoxTrait::new(0)
}
//! > function_name
foo
//! > module_code
//! > semantic_diagnostics
//! > before
Parameters:
blk0 (root):
Statements:
(v0: core::felt252) <- 0
(v2: core::box::Box::<core::felt252>) <- core::box::into_box::<core::felt252>(v0)
End:
Return(v2)
//! > after
Parameters:
blk0 (root):
Statements:
(v0: core::felt252) <- 0
(v2: core::box::Box::<core::felt252>) <- 0.into_box()
End:
Return(v2)
//! > lowering_diagnostics
//! > ==========================================================================
//! > Box struct const folding.
//! > test_runner_name
test_match_optimizer
//! > function
struct A {
a: felt252
}
fn foo() -> Box<A> {
BoxTrait::new(A { a: 1 })
}
//! > function_name
foo
//! > module_code
//! > semantic_diagnostics
//! > before
Parameters:
blk0 (root):
Statements:
(v0: core::felt252) <- 1
(v1: test::A) <- struct_construct(v0)
(v3: core::box::Box::<test::A>) <- core::box::into_box::<test::A>(v1)
End:
Return(v3)
//! > after
Parameters:
blk0 (root):
Statements:
(v0: core::felt252) <- 1
(v1: test::A) <- struct_construct(v0)
(v3: core::box::Box::<test::A>) <- { 1: core::felt252 }.into_box()
End:
Return(v3)
//! > lowering_diagnostics
//! > ==========================================================================
//! > Box enum const folding.
//! > test_runner_name
test_match_optimizer
//! > function
fn foo() -> Box<Option<felt252>> {
BoxTrait::new(Option::Some(2))
}
//! > function_name
foo
//! > module_code
//! > semantic_diagnostics
//! > before
Parameters:
blk0 (root):
Statements:
(v0: core::felt252) <- 2
(v1: core::option::Option::<core::felt252>) <- Option::Some(v0)
(v3: core::box::Box::<core::option::Option::<core::felt252>>) <- core::box::into_box::<core::option::Option::<core::felt252>>(v1)
End:
Return(v3)
//! > after
Parameters:
blk0 (root):
Statements:
(v0: core::felt252) <- 2
(v1: core::option::Option::<core::felt252>) <- Option::Some(v0)
(v3: core::box::Box::<core::option::Option::<core::felt252>>) <- Option::Some(2).into_box()
End:
Return(v3)
//! > lowering_diagnostics