| // The presence of built-in or user-written trait impls disqualifies potential built-in auto trait | |
| // impls for a type. Here we have a blanket impl of an auto trait which suppresses all hypothetical | |
| // auto trait impls. | |
| // | |
| // Check that we don't claim that there's an auto trait impl & ensure that we show the blanket impl. | |
| // Erroneously we once used to omit the blanket impl since auto trait impls & blanket impls used to | |
| // share the same cache and auto trait impls get generated first. Now, they have separate caches. | |
| // | |
| // issue: <https://github.com/rust-lang/rust/issues/148980> | |
| #![feature(auto_traits)] | |
| #![crate_name = "it"] | |
| pub auto trait Marker {} | |
| //@ has 'it/struct.Subject.html' | |
| #[derive(Clone, Copy)] | |
| pub struct Subject; | |
| // NOTE: `#synthetic-implementations-list` contains auto trait impls only despite its name. | |
| //@ !has - '//*[@id="synthetic-implementations-list"]//*[@class="impl"]' \ | |
| // 'Marker for Subject' | |
| //@ has - '//*[@id="blanket-implementations-list"]//*[@class="impl"]' \ | |
| // 'Marker for Twhere T: Copy' | |
| impl<T: Copy> Marker for T {} |