about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/in-band-lifetimes/single_use_lifetimes-2.rs16
-rw-r--r--src/test/ui/in-band-lifetimes/single_use_lifetimes-2.stderr14
-rw-r--r--src/test/ui/in-band-lifetimes/single_use_lifetimes-3.rs20
-rw-r--r--src/test/ui/in-band-lifetimes/single_use_lifetimes-3.stderr20
-rw-r--r--src/test/ui/in-band-lifetimes/single_use_lifetimes-4.rs20
-rw-r--r--src/test/ui/in-band-lifetimes/single_use_lifetimes-4.stderr20
-rw-r--r--src/test/ui/in-band-lifetimes/single_use_lifetimes-5.rs16
-rw-r--r--src/test/ui/in-band-lifetimes/single_use_lifetimes-5.stderr14
-rw-r--r--src/test/ui/in-band-lifetimes/single_use_lifetimes.rs16
-rw-r--r--src/test/ui/in-band-lifetimes/single_use_lifetimes.stderr14
10 files changed, 170 insertions, 0 deletions
diff --git a/src/test/ui/in-band-lifetimes/single_use_lifetimes-2.rs b/src/test/ui/in-band-lifetimes/single_use_lifetimes-2.rs
new file mode 100644
index 00000000000..005f1f033b6
--- /dev/null
+++ b/src/test/ui/in-band-lifetimes/single_use_lifetimes-2.rs
@@ -0,0 +1,16 @@
+// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+#![deny(single_use_lifetime)]
+// FIXME(#44752) -- this scenario should not be warned
+fn deref<'x>() -> &'x u32 { //~ ERROR lifetime name `'x` only used once
+    22
+}
+
+fn main() { }
diff --git a/src/test/ui/in-band-lifetimes/single_use_lifetimes-2.stderr b/src/test/ui/in-band-lifetimes/single_use_lifetimes-2.stderr
new file mode 100644
index 00000000000..a90add79b76
--- /dev/null
+++ b/src/test/ui/in-band-lifetimes/single_use_lifetimes-2.stderr
@@ -0,0 +1,14 @@
+error: lifetime name `'x` only used once
+  --> $DIR/single_use_lifetimes-2.rs:12:10
+   |
+12 | fn deref<'x>() -> &'x u32 { //~ ERROR lifetime name `'x` only used once
+   |          ^^
+   |
+note: lint level defined here
+  --> $DIR/single_use_lifetimes-2.rs:10:9
+   |
+10 | #![deny(single_use_lifetime)]
+   |         ^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/in-band-lifetimes/single_use_lifetimes-3.rs b/src/test/ui/in-band-lifetimes/single_use_lifetimes-3.rs
new file mode 100644
index 00000000000..263548ca7f4
--- /dev/null
+++ b/src/test/ui/in-band-lifetimes/single_use_lifetimes-3.rs
@@ -0,0 +1,20 @@
+// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+#![deny(single_use_lifetime)]
+struct Foo<'x> { //~ ERROR lifetime name `'x` only used once
+    x: &'x u32 // no warning!
+}
+
+// Once #44524 is fixed, this should issue a warning.
+impl<'y> Foo<'y> { //~ ERROR lifetime name `'y` only used once
+    fn method() { }
+}
+
+fn main() { }
diff --git a/src/test/ui/in-band-lifetimes/single_use_lifetimes-3.stderr b/src/test/ui/in-band-lifetimes/single_use_lifetimes-3.stderr
new file mode 100644
index 00000000000..8595ce5effb
--- /dev/null
+++ b/src/test/ui/in-band-lifetimes/single_use_lifetimes-3.stderr
@@ -0,0 +1,20 @@
+error: lifetime name `'x` only used once
+  --> $DIR/single_use_lifetimes-3.rs:11:12
+   |
+11 | struct Foo<'x> { //~ ERROR lifetime name `'x` only used once
+   |            ^^
+   |
+note: lint level defined here
+  --> $DIR/single_use_lifetimes-3.rs:10:9
+   |
+10 | #![deny(single_use_lifetime)]
+   |         ^^^^^^^^^^^^^^^^^^^
+
+error: lifetime name `'y` only used once
+  --> $DIR/single_use_lifetimes-3.rs:16:6
+   |
+16 | impl<'y> Foo<'y> { //~ ERROR lifetime name `'y` only used once
+   |      ^^
+
+error: aborting due to 2 previous errors
+
diff --git a/src/test/ui/in-band-lifetimes/single_use_lifetimes-4.rs b/src/test/ui/in-band-lifetimes/single_use_lifetimes-4.rs
new file mode 100644
index 00000000000..ead987a09ab
--- /dev/null
+++ b/src/test/ui/in-band-lifetimes/single_use_lifetimes-4.rs
@@ -0,0 +1,20 @@
+// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+#![deny(single_use_lifetime)]
+ // Neither should issue a warning, as explicit lifetimes are mandatory in this case
+struct Foo<'x> { //~ ERROR lifetime name `'x` only used once
+    x: &'x u32
+}
+
+enum Bar<'x> { //~ ERROR lifetime name `'x` only used once
+    Variant(&'x u32)
+}
+
+fn main() { }
\ No newline at end of file
diff --git a/src/test/ui/in-band-lifetimes/single_use_lifetimes-4.stderr b/src/test/ui/in-band-lifetimes/single_use_lifetimes-4.stderr
new file mode 100644
index 00000000000..1b952c8db09
--- /dev/null
+++ b/src/test/ui/in-band-lifetimes/single_use_lifetimes-4.stderr
@@ -0,0 +1,20 @@
+error: lifetime name `'x` only used once
+  --> $DIR/single_use_lifetimes-4.rs:12:12
+   |
+12 | struct Foo<'x> { //~ ERROR lifetime name `'x` only used once
+   |            ^^
+   |
+note: lint level defined here
+  --> $DIR/single_use_lifetimes-4.rs:10:9
+   |
+10 | #![deny(single_use_lifetime)]
+   |         ^^^^^^^^^^^^^^^^^^^
+
+error: lifetime name `'x` only used once
+  --> $DIR/single_use_lifetimes-4.rs:16:10
+   |
+16 | enum Bar<'x> { //~ ERROR lifetime name `'x` only used once
+   |          ^^
+
+error: aborting due to 2 previous errors
+
diff --git a/src/test/ui/in-band-lifetimes/single_use_lifetimes-5.rs b/src/test/ui/in-band-lifetimes/single_use_lifetimes-5.rs
new file mode 100644
index 00000000000..cef904c4896
--- /dev/null
+++ b/src/test/ui/in-band-lifetimes/single_use_lifetimes-5.rs
@@ -0,0 +1,16 @@
+// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+#![deny(single_use_lifetime)]
+// Should not issue a warning, as explicit lifetimes are mandatory in this case:
+trait Foo<'x> { //~ ERROR lifetime name `'x` only used once
+    fn foo(&self, arg: &'x u32);
+}
+
+fn main() { }
diff --git a/src/test/ui/in-band-lifetimes/single_use_lifetimes-5.stderr b/src/test/ui/in-band-lifetimes/single_use_lifetimes-5.stderr
new file mode 100644
index 00000000000..59e1254836b
--- /dev/null
+++ b/src/test/ui/in-band-lifetimes/single_use_lifetimes-5.stderr
@@ -0,0 +1,14 @@
+error: lifetime name `'x` only used once
+  --> $DIR/single_use_lifetimes-5.rs:12:11
+   |
+12 | trait Foo<'x> { //~ ERROR lifetime name `'x` only used once
+   |           ^^
+   |
+note: lint level defined here
+  --> $DIR/single_use_lifetimes-5.rs:10:9
+   |
+10 | #![deny(single_use_lifetime)]
+   |         ^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/in-band-lifetimes/single_use_lifetimes.rs b/src/test/ui/in-band-lifetimes/single_use_lifetimes.rs
new file mode 100644
index 00000000000..96aaf8923f1
--- /dev/null
+++ b/src/test/ui/in-band-lifetimes/single_use_lifetimes.rs
@@ -0,0 +1,16 @@
+// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+#![deny(single_use_lifetime)]
+
+fn deref<'x>(v: &'x u32) -> u32 { //~ ERROR lifetime name `'x` only used once
+    *v
+}
+
+fn main() {}
\ No newline at end of file
diff --git a/src/test/ui/in-band-lifetimes/single_use_lifetimes.stderr b/src/test/ui/in-band-lifetimes/single_use_lifetimes.stderr
new file mode 100644
index 00000000000..bdcce1f22ec
--- /dev/null
+++ b/src/test/ui/in-band-lifetimes/single_use_lifetimes.stderr
@@ -0,0 +1,14 @@
+error: lifetime name `'x` only used once
+  --> $DIR/single_use_lifetimes.rs:12:10
+   |
+12 | fn deref<'x>(v: &'x u32) -> u32 { //~ ERROR lifetime name `'x` only used once
+   |          ^^
+   |
+note: lint level defined here
+  --> $DIR/single_use_lifetimes.rs:10:9
+   |
+10 | #![deny(single_use_lifetime)]
+   |         ^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to previous error
+