add known-bug test for unsound issue 40582

This commit is contained in:
whtahy 2023-04-26 20:37:42 -04:00
parent cb9aa8c9c1
commit bfdd1c4e35
1 changed files with 35 additions and 0 deletions

View File

@ -0,0 +1,35 @@
// check-pass
// known-bug: #40582
// Should fail. Should not be possible to implement `make_static`.
#![feature(specialization)]
#![allow(incomplete_features)]
trait FromRef<'a, T: ?Sized> {
fn from_ref(r: &'a T) -> Self;
}
impl<'a, T: ?Sized> FromRef<'a, T> for &'a T {
fn from_ref(r: &'a T) -> Self {
r
}
}
impl<'a, T: ?Sized, R> FromRef<'a, T> for R {
default fn from_ref(_: &'a T) -> Self {
unimplemented!()
}
}
fn make_static<T: ?Sized>(data: &T) -> &'static T {
fn helper<T: ?Sized, R>(data: &T) -> R {
R::from_ref(data)
}
helper(data)
}
fn main() {
let s = "specialization".to_owned();
println!("{:?}", make_static(s.as_str()));
}