e78f2e2ac5
For bootstrapping purposes, this commit does not remove all uses of the keyword "pure" -- doing so would cause the compiler to no longer bootstrap due to some syntax extensions ("deriving" in particular). Instead, it makes the compiler ignore "pure". Post-snapshot, we can remove "pure" from the language. There are quite a few (~100) borrow check errors that were essentially all the result of mutable fields or partial borrows of `@mut`. Per discussions with Niko I think we want to allow partial borrows of `@mut` but detect obvious footguns. We should also improve the error message when `@mut` is erroneously reborrowed.
22 lines
285 B
Rust
22 lines
285 B
Rust
// xfail-test
|
|
|
|
pure fn sum(x: &[int]) -> int {
|
|
let mut sum = 0;
|
|
for x.each |y| { sum += *y; }
|
|
return sum;
|
|
}
|
|
|
|
fn sum_mut(y: &mut [int]) -> int {
|
|
sum(y)
|
|
}
|
|
|
|
fn sum_imm(y: &[int]) -> int {
|
|
sum(y)
|
|
}
|
|
|
|
fn sum_const(y: &[const int]) -> int {
|
|
sum(y)
|
|
}
|
|
|
|
pub fn main() {}
|