about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorvarkor <github@varkor.com>2019-02-25 23:55:00 +0000
committervarkor <github@varkor.com>2019-03-12 18:34:43 +0000
commitd49f4f86d91c41b6908140347045dbfa9d35d213 (patch)
tree96181534d040cba74ffd6ae86bc35c51898a62c9 /src/test
parent651c1abfb74b0e190fa5a010e59578fa967e2e94 (diff)
downloadrust-d49f4f86d91c41b6908140347045dbfa9d35d213.tar.gz
rust-d49f4f86d91c41b6908140347045dbfa9d35d213.zip
Add a test for #26619
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/issues/issue-26619.rs24
-rw-r--r--src/test/ui/issues/issue-26619.stderr12
2 files changed, 36 insertions, 0 deletions
diff --git a/src/test/ui/issues/issue-26619.rs b/src/test/ui/issues/issue-26619.rs
new file mode 100644
index 00000000000..cd89c674e49
--- /dev/null
+++ b/src/test/ui/issues/issue-26619.rs
@@ -0,0 +1,24 @@
+#![feature(slice_patterns)]
+
+pub struct History<'a> { pub _s: &'a str }
+
+impl<'a> History<'a> {
+    pub fn get_page(&self) {
+        for s in vec!["1|2".to_string()].into_iter().filter_map(|ref line| self.make_entry(line)) {
+            //~^ ERROR borrowed value does not live long enough
+            println!("{:?}", s);
+        }
+    }
+
+    fn make_entry(&self, s: &'a String) -> Option<&str> {
+        let parts: Vec<_> = s.split('|').collect();
+        println!("{:?} -> {:?}", s, parts);
+
+        if let [commit, ..] = &parts[..] { Some(commit) } else { None }
+    }
+}
+
+fn main() {
+    let h = History{ _s: "" };
+    h.get_page();
+}
diff --git a/src/test/ui/issues/issue-26619.stderr b/src/test/ui/issues/issue-26619.stderr
new file mode 100644
index 00000000000..3ac6c4e308d
--- /dev/null
+++ b/src/test/ui/issues/issue-26619.stderr
@@ -0,0 +1,12 @@
+error[E0597]: borrowed value does not live long enough
+  --> $DIR/issue-26619.rs:7:66
+   |
+LL |         for s in vec!["1|2".to_string()].into_iter().filter_map(|ref line| self.make_entry(line)) {
+   |                                                                  ^^^^^^^^                      -- temporary value needs to live until here
+   |                                                                  |                             |
+   |                                                                  |                             temporary value dropped here while still borrowed
+   |                                                                  temporary value does not live long enough
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0597`.