mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-28 01:34:21 +00:00
Add another regression test for unnormalized fn args with Self
This commit is contained in:
parent
83b32f27fc
commit
f0c0732a36
25
src/test/ui/fn/implied-bounds-unnorm-associated-type-3.rs
Normal file
25
src/test/ui/fn/implied-bounds-unnorm-associated-type-3.rs
Normal file
@ -0,0 +1,25 @@
|
||||
// check-fail
|
||||
// See issue #91899. If we treat unnormalized args as WF, `Self` can also be a
|
||||
// source of unsoundness.
|
||||
|
||||
pub trait Yokeable<'a>: 'static {
|
||||
type Output: 'a;
|
||||
}
|
||||
|
||||
impl<'a, T: 'static + ?Sized> Yokeable<'a> for &'static T {
|
||||
type Output = &'a T;
|
||||
}
|
||||
|
||||
pub trait ZeroCopyFrom<C: ?Sized>: for<'a> Yokeable<'a> {
|
||||
/// Clone the cart `C` into a [`Yokeable`] struct, which may retain references into `C`.
|
||||
fn zero_copy_from<'b>(cart: &'b C) -> <Self as Yokeable<'b>>::Output;
|
||||
}
|
||||
|
||||
impl<T> ZeroCopyFrom<[T]> for &'static [T] {
|
||||
fn zero_copy_from<'b>(cart: &'b [T]) -> &'b [T] {
|
||||
//~^ the parameter
|
||||
cart
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {}
|
@ -0,0 +1,12 @@
|
||||
error[E0310]: the parameter type `T` may not live long enough
|
||||
--> $DIR/implied-bounds-unnorm-associated-type-3.rs:19:5
|
||||
|
|
||||
LL | fn zero_copy_from<'b>(cart: &'b [T]) -> &'b [T] {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: consider adding an explicit lifetime bound `T: 'static`...
|
||||
= note: ...so that the type `[T]` will meet its required lifetime bounds
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0310`.
|
Loading…
Reference in New Issue
Block a user