diff options
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.rs | 100 | ||||
-rw-r--r-- | tests/ui/single-use-lifetime/issue-104440.stderr | 28 | ||||
-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 |