1 // Regression test for #54302.
3 // We were incorrectly using the "evaluation cache" (which ignored
4 // region results) to conclude that `&'static str: Deserialize`, even
5 // though it would require that `for<'de> 'de: 'static`, which is
8 trait Deserialize<'de> {}
10 trait DeserializeOwned: for<'de> Deserialize<'de> {}
11 impl<T> DeserializeOwned for T where T: for<'de> Deserialize<'de> {}
13 // Based on this impl, `&'static str` only implements Deserialize<'static>.
14 // It does not implement for<'de> Deserialize<'de>.
15 impl<'de: 'a, 'a> Deserialize<'de> for &'a str {}
18 fn assert_deserialize_owned<T: DeserializeOwned>() {}
19 assert_deserialize_owned::<&'static str>(); //~ ERROR
21 // It correctly does not implement for<'de> Deserialize<'de>.
22 // fn assert_hrtb<T: for<'de> Deserialize<'de>>() {}
23 // assert_hrtb::<&'static str>();