-
Notifications
You must be signed in to change notification settings - Fork 12.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Meta: Borrow checker rules rewrite #5074
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: