fn w_semi(v: ~[int]) -> int {
    // the semicolon causes compiler not to
    // complain about the ignored return value:
    do vec::foldl(0, v) |x,y| { x+y };
    -10
}

fn w_paren1(v: ~[int]) -> int {
    (do vec::foldl(0, v) |x,y| { x+y }) - 10
}

fn w_paren2(v: ~[int]) -> int {
    (do vec::foldl(0, v) |x,y| { x+y} - 10)
}

fn w_ret(v: ~[int]) -> int {
    ret do vec::foldl(0, v) |x,y| { x+y } - 10;
}

fn main() {
    assert w_semi(~[0, 1, 2, 3]) == -10;
    assert w_paren1(~[0, 1, 2, 3]) == -4;
    assert w_paren2(~[0, 1, 2, 3]) == -4;
    assert w_ret(~[0, 1, 2, 3]) == -4;
}

