summaryrefslogtreecommitdiffstats
path: root/src/test/ui/borrowck/two-phase-reservation-sharing-interference-2.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/borrowck/two-phase-reservation-sharing-interference-2.rs')
-rw-r--r--src/test/ui/borrowck/two-phase-reservation-sharing-interference-2.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/test/ui/borrowck/two-phase-reservation-sharing-interference-2.rs b/src/test/ui/borrowck/two-phase-reservation-sharing-interference-2.rs
new file mode 100644
index 000000000..27e599c6c
--- /dev/null
+++ b/src/test/ui/borrowck/two-phase-reservation-sharing-interference-2.rs
@@ -0,0 +1,29 @@
+// Test for #56254. The last example originally failed with the ast checker, was
+// accidentally allowed under migrate/nll, then linted against in migrate mode
+// but disallowed under NLL. Now, we accept it everywhere.
+
+//ignore-compare-mode-polonius
+
+fn double_conflicts() {
+ let mut v = vec![0, 1, 2];
+ let shared = &v;
+
+ v.extend(shared);
+ //~^ ERROR cannot borrow `v` as mutable
+}
+
+fn activation_conflict() {
+ let mut v = vec![0, 1, 2];
+
+ v.extend(&v);
+ //~^ ERROR cannot borrow `v` as mutable
+}
+
+fn reservation_allowed() {
+ let mut v = vec![0, 1, 2];
+ let shared = &v;
+
+ v.push(shared.len());
+}
+
+fn main() {}