summaryrefslogtreecommitdiffstats
path: root/src/test/ui/nll/closure-requirements/escape-argument-callee.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/nll/closure-requirements/escape-argument-callee.rs')
-rw-r--r--src/test/ui/nll/closure-requirements/escape-argument-callee.rs42
1 files changed, 0 insertions, 42 deletions
diff --git a/src/test/ui/nll/closure-requirements/escape-argument-callee.rs b/src/test/ui/nll/closure-requirements/escape-argument-callee.rs
deleted file mode 100644
index 3aea511b0..000000000
--- a/src/test/ui/nll/closure-requirements/escape-argument-callee.rs
+++ /dev/null
@@ -1,42 +0,0 @@
-// Test closure that:
-//
-// - takes an argument `y` with lifetime `'a` (in the code, it's anonymous)
-// - stores `y` into another, longer-lived spot with lifetime `'b`
-//
-// Because `'a` and `'b` are two different, unrelated higher-ranked
-// regions with no relationship to one another, this is an error. This
-// error is reported by the closure itself and is not propagated to
-// its creator: this is because `'a` and `'b` are higher-ranked
-// (late-bound) regions and the closure is not allowed to propagate
-// additional where clauses between higher-ranked regions, only those
-// that appear free in its type (hence, we see it before the closure's
-// "external requirements" report).
-
-// compile-flags:-Zverbose
-
-#![feature(rustc_attrs)]
-
-#[rustc_regions]
-fn test() {
- let x = 44;
- let mut p = &x;
-
- {
- let y = 22;
- let mut closure = expect_sig(|p, y| *p = y);
- //~^ ERROR
- closure(&mut p, &y);
- }
-
- deref(p);
-}
-
-fn expect_sig<F>(f: F) -> F
- where F: FnMut(&mut &i32, &i32)
-{
- f
-}
-
-fn deref(_p: &i32) { }
-
-fn main() { }