diff options
Diffstat (limited to 'src/test/ui/nll/issue-24535-allow-mutable-borrow-in-match-guard.rs')
| -rw-r--r-- | src/test/ui/nll/issue-24535-allow-mutable-borrow-in-match-guard.rs | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/src/test/ui/nll/issue-24535-allow-mutable-borrow-in-match-guard.rs b/src/test/ui/nll/issue-24535-allow-mutable-borrow-in-match-guard.rs deleted file mode 100644 index ccfc8937fd7..00000000000 --- a/src/test/ui/nll/issue-24535-allow-mutable-borrow-in-match-guard.rs +++ /dev/null @@ -1,63 +0,0 @@ -// run-pass -// This test illustrates that under NLL, we can remove our overly -// conservative approach for disallowing mutations of match inputs. - -// See further discussion on rust-lang/rust#24535, -// rust-lang/rfcs#1006, and rust-lang/rfcs#107 - -#![feature(if_let_guard)] - -fn main() { - rust_issue_24535(); - rfcs_issue_1006_1(); - rfcs_issue_1006_2(); -} - -fn rust_issue_24535() { - fn compare(a: &u8, b: &mut u8) -> bool { - a == b - } - - let a = 3u8; - - match a { - 0 => panic!("nope"), - 3 if compare(&a, &mut 3) => (), - _ => panic!("nope"), - } - - match a { - 0 => panic!("nope"), - 3 if let true = compare(&a, &mut 3) => (), - _ => panic!("nope"), - } -} - -fn rfcs_issue_1006_1() { - let v = vec!["1".to_string(), "2".to_string(), "3".to_string()]; - match Some(&v) { - Some(iv) if iv.iter().any(|x| &x[..]=="2") => true, - _ => panic!("nope"), - }; -} - -fn rfcs_issue_1006_2() { - #[inline(always)] - fn check<'a, I: Iterator<Item=&'a i32>>(mut i: I) -> bool { - i.any(|&x| x == 2) - } - - let slice = [1, 2, 3]; - - match 42 { - _ if slice.iter().any(|&x| x == 2) => { true }, - _ => { panic!("nope"); } - }; - - // (This match is just illustrating how easy it was to circumvent - // the checking performed for the previous `match`.) - match 42 { - _ if check(slice.iter()) => { true }, - _ => { panic!("nope"); } - }; -} |
