0682ad0eb9
Changes: - Refactor move mode computation - Removes move mode arguments, unary move, capture clauses (though they still parse for backwards compatibility) - Simplify how moves are handled in trans - Fix a number of illegal copies that cropped up - Workaround for bug involving def-ids in params (see details below) Future work (I'll open bugs for these...): - Improve error messages for moves that are due to bindings - Add support for moving owned content like a.b.c to borrow check, test in trans (but I think it'll "just work") - Proper fix for def-ids in params Def ids in params: Move captures into a map instead of recomputing. This is a workaround for a larger bug having to do with the def-ids associated with ty_params, which are not always properly preserved when inlining. I am not sure of my preferred fix for the larger bug yet. This current fix removes the only code in trans that I know of which relies on ty_param def-ids, but feels fragile.
9 lines
237 B
Rust
9 lines
237 B
Rust
fn main() {
|
|
let a = [mut 1, 2, 3, 4];
|
|
let _ = match a {
|
|
[1, 2, ..tail] => tail,
|
|
_ => core::util::unreachable()
|
|
};
|
|
a[0] = 0; //~ ERROR: assigning to mutable vec content prohibited due to outstanding loan
|
|
}
|