diff options
Diffstat (limited to 'src/test')
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 + |
