summaryrefslogtreecommitdiffstats
path: root/tests/ui/single-use-lifetime
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--tests/ui/single-use-lifetime/derive-eq.rs (renamed from src/test/ui/single-use-lifetime/derive-eq.rs)0
-rw-r--r--tests/ui/single-use-lifetime/fn-types.rs (renamed from src/test/ui/single-use-lifetime/fn-types.rs)0
-rw-r--r--tests/ui/single-use-lifetime/fn-types.stderr (renamed from src/test/ui/single-use-lifetime/fn-types.stderr)0
-rw-r--r--tests/ui/single-use-lifetime/issue-104440.rs100
-rw-r--r--tests/ui/single-use-lifetime/issue-104440.stderr28
-rw-r--r--tests/ui/single-use-lifetime/one-use-in-fn-argument.rs (renamed from src/test/ui/single-use-lifetime/one-use-in-fn-argument.rs)0
-rw-r--r--tests/ui/single-use-lifetime/one-use-in-fn-argument.stderr (renamed from src/test/ui/single-use-lifetime/one-use-in-fn-argument.stderr)0
-rw-r--r--tests/ui/single-use-lifetime/one-use-in-fn-return.rs (renamed from src/test/ui/single-use-lifetime/one-use-in-fn-return.rs)0
-rw-r--r--tests/ui/single-use-lifetime/one-use-in-inherent-impl-header.rs (renamed from src/test/ui/single-use-lifetime/one-use-in-inherent-impl-header.rs)0
-rw-r--r--tests/ui/single-use-lifetime/one-use-in-inherent-impl-header.stderr (renamed from src/test/ui/single-use-lifetime/one-use-in-inherent-impl-header.stderr)0
-rw-r--r--tests/ui/single-use-lifetime/one-use-in-inherent-method-argument.rs (renamed from src/test/ui/single-use-lifetime/one-use-in-inherent-method-argument.rs)0
-rw-r--r--tests/ui/single-use-lifetime/one-use-in-inherent-method-argument.stderr (renamed from src/test/ui/single-use-lifetime/one-use-in-inherent-method-argument.stderr)0
-rw-r--r--tests/ui/single-use-lifetime/one-use-in-inherent-method-return.rs (renamed from src/test/ui/single-use-lifetime/one-use-in-inherent-method-return.rs)0
-rw-r--r--tests/ui/single-use-lifetime/one-use-in-inherent-method-return.stderr (renamed from src/test/ui/single-use-lifetime/one-use-in-inherent-method-return.stderr)0
-rw-r--r--tests/ui/single-use-lifetime/one-use-in-struct.rs (renamed from src/test/ui/single-use-lifetime/one-use-in-struct.rs)0
-rw-r--r--tests/ui/single-use-lifetime/one-use-in-trait-method-argument.rs (renamed from src/test/ui/single-use-lifetime/one-use-in-trait-method-argument.rs)0
-rw-r--r--tests/ui/single-use-lifetime/one-use-in-trait-method-argument.stderr (renamed from src/test/ui/single-use-lifetime/one-use-in-trait-method-argument.stderr)0
-rw-r--r--tests/ui/single-use-lifetime/two-uses-in-fn-argument-and-return.rs (renamed from src/test/ui/single-use-lifetime/two-uses-in-fn-argument-and-return.rs)0
-rw-r--r--tests/ui/single-use-lifetime/two-uses-in-fn-arguments.rs (renamed from src/test/ui/single-use-lifetime/two-uses-in-fn-arguments.rs)0
-rw-r--r--tests/ui/single-use-lifetime/two-uses-in-inherent-impl-header.rs (renamed from src/test/ui/single-use-lifetime/two-uses-in-inherent-impl-header.rs)0
-rw-r--r--tests/ui/single-use-lifetime/two-uses-in-inherent-method-argument-and-return.rs (renamed from src/test/ui/single-use-lifetime/two-uses-in-inherent-method-argument-and-return.rs)0
-rw-r--r--tests/ui/single-use-lifetime/two-uses-in-inherent-method-argument-and-return.stderr (renamed from src/test/ui/single-use-lifetime/two-uses-in-inherent-method-argument-and-return.stderr)0
-rw-r--r--tests/ui/single-use-lifetime/two-uses-in-trait-impl.rs (renamed from src/test/ui/single-use-lifetime/two-uses-in-trait-impl.rs)0
-rw-r--r--tests/ui/single-use-lifetime/zero-uses-in-fn.fixed (renamed from src/test/ui/single-use-lifetime/zero-uses-in-fn.fixed)0
-rw-r--r--tests/ui/single-use-lifetime/zero-uses-in-fn.rs (renamed from src/test/ui/single-use-lifetime/zero-uses-in-fn.rs)0
-rw-r--r--tests/ui/single-use-lifetime/zero-uses-in-fn.stderr (renamed from src/test/ui/single-use-lifetime/zero-uses-in-fn.stderr)0
-rw-r--r--tests/ui/single-use-lifetime/zero-uses-in-impl.rs (renamed from src/test/ui/single-use-lifetime/zero-uses-in-impl.rs)0
-rw-r--r--tests/ui/single-use-lifetime/zero-uses-in-impl.stderr (renamed from src/test/ui/single-use-lifetime/zero-uses-in-impl.stderr)0
28 files changed, 128 insertions, 0 deletions
diff --git a/src/test/ui/single-use-lifetime/derive-eq.rs b/tests/ui/single-use-lifetime/derive-eq.rs
index e5bdfc55d..e5bdfc55d 100644
--- a/src/test/ui/single-use-lifetime/derive-eq.rs
+++ b/tests/ui/single-use-lifetime/derive-eq.rs
diff --git a/src/test/ui/single-use-lifetime/fn-types.rs b/tests/ui/single-use-lifetime/fn-types.rs
index 018535f64..018535f64 100644
--- a/src/test/ui/single-use-lifetime/fn-types.rs
+++ b/tests/ui/single-use-lifetime/fn-types.rs
diff --git a/src/test/ui/single-use-lifetime/fn-types.stderr b/tests/ui/single-use-lifetime/fn-types.stderr
index 55959def4..55959def4 100644
--- a/src/test/ui/single-use-lifetime/fn-types.stderr
+++ b/tests/ui/single-use-lifetime/fn-types.stderr
diff --git a/tests/ui/single-use-lifetime/issue-104440.rs b/tests/ui/single-use-lifetime/issue-104440.rs
new file mode 100644
index 000000000..0795e9530
--- /dev/null
+++ b/tests/ui/single-use-lifetime/issue-104440.rs
@@ -0,0 +1,100 @@
+#![feature(decl_macro, rustc_attrs)]
+#![deny(single_use_lifetimes)]
+
+mod type_params {
+ macro m($T:ident) {
+ fn f<$T: Clone, T: PartialEq>(t1: $T, t2: T) -> ($T, bool) {
+ (t1.clone(), t2 == t2)
+ }
+ }
+
+ #[rustc_macro_transparency = "semitransparent"]
+ macro n($T:ident) {
+ fn g<$T: Clone>(t1: $T, t2: T) -> (T, $T) {
+ (t1.clone(), t2.clone())
+ }
+ fn h<T: Clone>(t1: $T, t2: T) -> (T, $T) {
+ (t1.clone(), t2.clone())
+ }
+ }
+
+ #[rustc_macro_transparency = "transparent"]
+ macro p($T:ident) {
+ fn j<$T: Clone>(t1: $T, t2: T) -> (T, $T) {
+ (t1.clone(), t2.clone())
+ }
+ fn k<T: Clone>(t1: $T, t2: T) -> (T, $T) {
+ (t1.clone(), t2.clone())
+ }
+ }
+
+ m!(T);
+ n!(T);
+ p!(T);
+}
+
+mod lifetime_params {
+ macro m($a:lifetime) {
+ fn f<'b, 'c, $a: 'b, 'a: 'c>(t1: &$a(), t2: &'a ()) -> (&'b (), &'c ()) { //~ ERROR lifetime parameter `'a` only used once
+ (t1, t2)
+ }
+ }
+
+ #[rustc_macro_transparency = "semitransparent"]
+ macro n($a:lifetime) {
+ fn g<$a>(t1: &$a(), t2: &'a ()) -> (&'a (), &$a ()) {
+ (t1, t2)
+ }
+ fn h<'a>(t1: &$a(), t2: &'a ()) -> (&'a (), &$a ()) {
+ (t1, t2)
+ }
+ }
+
+ #[rustc_macro_transparency = "transparent"]
+ macro p($a:lifetime) {
+ fn j<$a>(t1: &$a(), t2: &'a ()) -> (&'a (), &$a ()) {
+ (t1, t2)
+ }
+ fn k<'a>(t1: &$a(), t2: &'a ()) -> (&'a (), &$a ()) {
+ (t1, t2)
+ }
+ }
+
+ m!('a); //~ ERROR lifetime parameter `'a` only used once
+ n!('a);
+ p!('a);
+}
+
+mod const_params {
+ macro m($C:ident) {
+ fn f<const $C: usize, const C: usize>(t1: [(); $C], t2: [(); C]) -> ([(); $C], [(); C]) {
+ (t1, t2)
+ }
+ }
+
+ #[rustc_macro_transparency = "semitransparent"]
+ macro n($C:ident) {
+ fn g<const $C: usize>(t1: [(); $C], t2: [(); C]) -> ([(); C], [(); $C]) {
+ (t1, t2)
+ }
+ fn h<const C: usize>(t1: [(); $C], t2: [(); C]) -> ([(); C], [(); $C]) {
+ (t1, t2)
+ }
+ }
+
+ #[rustc_macro_transparency = "transparent"]
+ macro p($C:ident) {
+ fn j<const $C: usize>(t1: [(); $C], t2: [(); C]) -> ([(); C], [(); $C]) {
+ (t1, t2)
+ }
+ fn k<const C: usize>(t1: [(); $C], t2: [(); C]) -> ([(); C], [(); $C]) {
+ (t1, t2)
+ }
+ }
+
+ m!(C);
+ n!(C);
+ p!(C);
+}
+
+fn main() {}
diff --git a/tests/ui/single-use-lifetime/issue-104440.stderr b/tests/ui/single-use-lifetime/issue-104440.stderr
new file mode 100644
index 000000000..54ded31dc
--- /dev/null
+++ b/tests/ui/single-use-lifetime/issue-104440.stderr
@@ -0,0 +1,28 @@
+error: lifetime parameter `'a` only used once
+ --> $DIR/issue-104440.rs:63:8
+ |
+LL | m!('a);
+ | ^^
+ | |
+ | this lifetime...
+ | ...is used only here
+ |
+note: the lint level is defined here
+ --> $DIR/issue-104440.rs:2:9
+ |
+LL | #![deny(single_use_lifetimes)]
+ | ^^^^^^^^^^^^^^^^^^^^
+
+error: lifetime parameter `'a` only used once
+ --> $DIR/issue-104440.rs:38:30
+ |
+LL | fn f<'b, 'c, $a: 'b, 'a: 'c>(t1: &$a(), t2: &'a ()) -> (&'b (), &'c ()) {
+ | ^^ this lifetime... -- ...is used only here
+...
+LL | m!('a);
+ | ------ in this macro invocation
+ |
+ = note: this error originates in the macro `m` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: aborting due to 2 previous errors
+
diff --git a/src/test/ui/single-use-lifetime/one-use-in-fn-argument.rs b/tests/ui/single-use-lifetime/one-use-in-fn-argument.rs
index 7919ef820..7919ef820 100644
--- a/src/test/ui/single-use-lifetime/one-use-in-fn-argument.rs
+++ b/tests/ui/single-use-lifetime/one-use-in-fn-argument.rs
diff --git a/src/test/ui/single-use-lifetime/one-use-in-fn-argument.stderr b/tests/ui/single-use-lifetime/one-use-in-fn-argument.stderr
index 93f16f5ba..93f16f5ba 100644
--- a/src/test/ui/single-use-lifetime/one-use-in-fn-argument.stderr
+++ b/tests/ui/single-use-lifetime/one-use-in-fn-argument.stderr
diff --git a/src/test/ui/single-use-lifetime/one-use-in-fn-return.rs b/tests/ui/single-use-lifetime/one-use-in-fn-return.rs
index 1ade01eed..1ade01eed 100644
--- a/src/test/ui/single-use-lifetime/one-use-in-fn-return.rs
+++ b/tests/ui/single-use-lifetime/one-use-in-fn-return.rs
diff --git a/src/test/ui/single-use-lifetime/one-use-in-inherent-impl-header.rs b/tests/ui/single-use-lifetime/one-use-in-inherent-impl-header.rs
index 64f1c9118..64f1c9118 100644
--- a/src/test/ui/single-use-lifetime/one-use-in-inherent-impl-header.rs
+++ b/tests/ui/single-use-lifetime/one-use-in-inherent-impl-header.rs
diff --git a/src/test/ui/single-use-lifetime/one-use-in-inherent-impl-header.stderr b/tests/ui/single-use-lifetime/one-use-in-inherent-impl-header.stderr
index 94129560f..94129560f 100644
--- a/src/test/ui/single-use-lifetime/one-use-in-inherent-impl-header.stderr
+++ b/tests/ui/single-use-lifetime/one-use-in-inherent-impl-header.stderr
diff --git a/src/test/ui/single-use-lifetime/one-use-in-inherent-method-argument.rs b/tests/ui/single-use-lifetime/one-use-in-inherent-method-argument.rs
index eecd715ef..eecd715ef 100644
--- a/src/test/ui/single-use-lifetime/one-use-in-inherent-method-argument.rs
+++ b/tests/ui/single-use-lifetime/one-use-in-inherent-method-argument.rs
diff --git a/src/test/ui/single-use-lifetime/one-use-in-inherent-method-argument.stderr b/tests/ui/single-use-lifetime/one-use-in-inherent-method-argument.stderr
index 39507785b..39507785b 100644
--- a/src/test/ui/single-use-lifetime/one-use-in-inherent-method-argument.stderr
+++ b/tests/ui/single-use-lifetime/one-use-in-inherent-method-argument.stderr
diff --git a/src/test/ui/single-use-lifetime/one-use-in-inherent-method-return.rs b/tests/ui/single-use-lifetime/one-use-in-inherent-method-return.rs
index c5938f4a1..c5938f4a1 100644
--- a/src/test/ui/single-use-lifetime/one-use-in-inherent-method-return.rs
+++ b/tests/ui/single-use-lifetime/one-use-in-inherent-method-return.rs
diff --git a/src/test/ui/single-use-lifetime/one-use-in-inherent-method-return.stderr b/tests/ui/single-use-lifetime/one-use-in-inherent-method-return.stderr
index 69578fe2f..69578fe2f 100644
--- a/src/test/ui/single-use-lifetime/one-use-in-inherent-method-return.stderr
+++ b/tests/ui/single-use-lifetime/one-use-in-inherent-method-return.stderr
diff --git a/src/test/ui/single-use-lifetime/one-use-in-struct.rs b/tests/ui/single-use-lifetime/one-use-in-struct.rs
index 9cad942e7..9cad942e7 100644
--- a/src/test/ui/single-use-lifetime/one-use-in-struct.rs
+++ b/tests/ui/single-use-lifetime/one-use-in-struct.rs
diff --git a/src/test/ui/single-use-lifetime/one-use-in-trait-method-argument.rs b/tests/ui/single-use-lifetime/one-use-in-trait-method-argument.rs
index 1848fc91c..1848fc91c 100644
--- a/src/test/ui/single-use-lifetime/one-use-in-trait-method-argument.rs
+++ b/tests/ui/single-use-lifetime/one-use-in-trait-method-argument.rs
diff --git a/src/test/ui/single-use-lifetime/one-use-in-trait-method-argument.stderr b/tests/ui/single-use-lifetime/one-use-in-trait-method-argument.stderr
index 1a6e8310d..1a6e8310d 100644
--- a/src/test/ui/single-use-lifetime/one-use-in-trait-method-argument.stderr
+++ b/tests/ui/single-use-lifetime/one-use-in-trait-method-argument.stderr
diff --git a/src/test/ui/single-use-lifetime/two-uses-in-fn-argument-and-return.rs b/tests/ui/single-use-lifetime/two-uses-in-fn-argument-and-return.rs
index f80f3f63c..f80f3f63c 100644
--- a/src/test/ui/single-use-lifetime/two-uses-in-fn-argument-and-return.rs
+++ b/tests/ui/single-use-lifetime/two-uses-in-fn-argument-and-return.rs
diff --git a/src/test/ui/single-use-lifetime/two-uses-in-fn-arguments.rs b/tests/ui/single-use-lifetime/two-uses-in-fn-arguments.rs
index 51724ebf8..51724ebf8 100644
--- a/src/test/ui/single-use-lifetime/two-uses-in-fn-arguments.rs
+++ b/tests/ui/single-use-lifetime/two-uses-in-fn-arguments.rs
diff --git a/src/test/ui/single-use-lifetime/two-uses-in-inherent-impl-header.rs b/tests/ui/single-use-lifetime/two-uses-in-inherent-impl-header.rs
index 125a395db..125a395db 100644
--- a/src/test/ui/single-use-lifetime/two-uses-in-inherent-impl-header.rs
+++ b/tests/ui/single-use-lifetime/two-uses-in-inherent-impl-header.rs
diff --git a/src/test/ui/single-use-lifetime/two-uses-in-inherent-method-argument-and-return.rs b/tests/ui/single-use-lifetime/two-uses-in-inherent-method-argument-and-return.rs
index 06ab6cdbf..06ab6cdbf 100644
--- a/src/test/ui/single-use-lifetime/two-uses-in-inherent-method-argument-and-return.rs
+++ b/tests/ui/single-use-lifetime/two-uses-in-inherent-method-argument-and-return.rs
diff --git a/src/test/ui/single-use-lifetime/two-uses-in-inherent-method-argument-and-return.stderr b/tests/ui/single-use-lifetime/two-uses-in-inherent-method-argument-and-return.stderr
index 4794566ea..4794566ea 100644
--- a/src/test/ui/single-use-lifetime/two-uses-in-inherent-method-argument-and-return.stderr
+++ b/tests/ui/single-use-lifetime/two-uses-in-inherent-method-argument-and-return.stderr
diff --git a/src/test/ui/single-use-lifetime/two-uses-in-trait-impl.rs b/tests/ui/single-use-lifetime/two-uses-in-trait-impl.rs
index 16431a39f..16431a39f 100644
--- a/src/test/ui/single-use-lifetime/two-uses-in-trait-impl.rs
+++ b/tests/ui/single-use-lifetime/two-uses-in-trait-impl.rs
diff --git a/src/test/ui/single-use-lifetime/zero-uses-in-fn.fixed b/tests/ui/single-use-lifetime/zero-uses-in-fn.fixed
index 0f26a975a..0f26a975a 100644
--- a/src/test/ui/single-use-lifetime/zero-uses-in-fn.fixed
+++ b/tests/ui/single-use-lifetime/zero-uses-in-fn.fixed
diff --git a/src/test/ui/single-use-lifetime/zero-uses-in-fn.rs b/tests/ui/single-use-lifetime/zero-uses-in-fn.rs
index 7f9504fe5..7f9504fe5 100644
--- a/src/test/ui/single-use-lifetime/zero-uses-in-fn.rs
+++ b/tests/ui/single-use-lifetime/zero-uses-in-fn.rs
diff --git a/src/test/ui/single-use-lifetime/zero-uses-in-fn.stderr b/tests/ui/single-use-lifetime/zero-uses-in-fn.stderr
index 59c0164e3..59c0164e3 100644
--- a/src/test/ui/single-use-lifetime/zero-uses-in-fn.stderr
+++ b/tests/ui/single-use-lifetime/zero-uses-in-fn.stderr
diff --git a/src/test/ui/single-use-lifetime/zero-uses-in-impl.rs b/tests/ui/single-use-lifetime/zero-uses-in-impl.rs
index 54803e1d2..54803e1d2 100644
--- a/src/test/ui/single-use-lifetime/zero-uses-in-impl.rs
+++ b/tests/ui/single-use-lifetime/zero-uses-in-impl.rs
diff --git a/src/test/ui/single-use-lifetime/zero-uses-in-impl.stderr b/tests/ui/single-use-lifetime/zero-uses-in-impl.stderr
index b6e42d3e7..b6e42d3e7 100644
--- a/src/test/ui/single-use-lifetime/zero-uses-in-impl.stderr
+++ b/tests/ui/single-use-lifetime/zero-uses-in-impl.stderr