provekit_nargo_cli 1.0.0-beta.20-alpha.1

Noir's package manager
Documentation
---
source: tooling/nargo_cli/tests/execute.rs
expression: expanded_code
---
fn main(six_as_u32: u32) {
    assert(loop_excl(4_u32) == six_as_u32);
    assert(loop_incl(3_u32) == six_as_u32);
    assert(plain_loop() == six_as_u32);
    assert(never_loop() == 0_u32);
    // Safety: comment added by `nargo expand`
    unsafe {
        assert(basic_break() == true)
    }
}

fn loop_excl(x: u32) -> u32 {
    let mut sum: u32 = 0_u32;
    for i in 0_u32..x {
        sum = sum + i;
    }
    sum
}

fn loop_incl(x: u32) -> u32 {
    let mut sum: u32 = 0_u32;
    for i in 0_u32..=x {
        sum = sum + i;
    }
    sum
}

fn plain_loop() -> u32 {
    let mut sum: u32 = 0_u32;
    for i in 0_u32..4_u32 {
        sum = sum + i;
    }
    sum
}

fn never_loop() -> u32 {
    let mut sum: u32 = 0_u32;
    for i in 4_u32..0_u32 {
        sum = sum + i;
    }
    sum
}

unconstrained fn basic_break() -> bool {
    for idx_e in 0_u32..5_u32 {
        if idx_e < 5_u32 { break; };
    }
    true
}