-
Notifications
You must be signed in to change notification settings - Fork 13.3k
Meta: Borrow checker rules rewrite #5074
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Comments
Here's a test case for the issue with multiple enum Foo {
A(int), B(int), C
}
fn main() {
let mut x = A(5);
let res = match x {
A(ref mut a) => Some(a),
B(ref mut b) => Some(b),
C => None
};
} |
I am going to treat this as a meta-issue, since it is evident that not everything will be landed in one go. One sub-issue is #4903 (Flow sensitivity) |
A related issue is #3387, which concerns moves in overloaded operators (this should be fixed on my branch). |
A related issue is #3850, also addressed in my branch. |
Nominating for milestone: feature complete. |
accepted for production-ready milestone |
niko says we can close this; the remaining linked issues can stand on their own. |
closing |
There is a FIXME related to this issue, |
update FIXME(rust-lang#6298) to point to open issue 15020 update FIXME(rust-lang#6268) to point to RFC 811 update FIXME(rust-lang#10520) to point to RFC 1751 remove FIXME for emscripten issue 4563 and include target in `test_estimate_scaling_factor` remove FIXME(rust-lang#18207) since node_id isn't used for `ref` pattern analysis remove FIXME(rust-lang#6308) since DST was implemented in rust-lang#12938 remove FIXME(rust-lang#2658) since it was decided to not reorganize module remove FIXME(rust-lang#20590) since it was decided to stay conservative with projection types remove FIXME(rust-lang#20297) since it was decided that solving the issue is unnecessary remove FIXME(rust-lang#27086) since closures do correspond to structs now remove FIXME(rust-lang#13846) and enable `function_sections` for windows remove mention of rust-lang#22079 in FIXME(rust-lang#22079) since this is a general FIXME remove FIXME(rust-lang#5074) since the restriction on borrow were lifted
The current borrow checker rules are not quite sound and also insufficient expressive. They don't support nested calls nor are they flow-sensitive. I have a rewrite in progress to address these 3 issues.
The text was updated successfully, but these errors were encountered: