// Regression test for issues #77763, #84579 and #102142. #![crate_name = "main"] //@ aux-build:assoc_item_trait_bounds.rs //@ build-aux-docs //@ ignore-cross-compile extern crate assoc_item_trait_bounds as aux; //@ has main/trait.Main.html //@ has - '//*[@id="associatedtype.Out0"]' 'type Out0: Support' //@ has - '//*[@id="associatedtype.Out1"]' 'type Out1: Support' //@ has - '//*[@id="associatedtype.Out2"]' 'type Out2: Support' //@ has - '//*[@id="associatedtype.Out3"]' 'type Out3: Support = bool>' //@ has - '//*[@id="associatedtype.Out4"]' 'type Out4: Support = T>' //@ has - '//*[@id="associatedtype.Out5"]' "type Out5: Support = &'static ()>" //@ has - '//*[@id="associatedtype.Out6"]' "type Out6: for<'a> Support = &'a ()>" //@ has - '//*[@id="associatedtype.Out7"]' "type Out7: Support = u32> + Unrelated" //@ has - '//*[@id="associatedtype.Out8"]' "type Out8: Unrelated + Protocol" //@ has - '//*[@id="associatedtype.Out9"]' "type Out9: FnMut(i32) -> bool + Clone" //@ has - '//*[@id="associatedtype.Out10"]' "type Out10<'q>: Support = ()>" //@ has - '//*[@id="associatedtype.Out11"]' "type Out11: for<'r, 's> Helper = &'s (), B<'r> = ()>" //@ has - '//*[@id="associatedtype.Out12"]' "type Out12: for<'w> Helper = Cow<'w, str>, A<'w> = bool>" //@ has - '//*[@id="associatedtype.Out13"]' "type Out13: for<'fst, 'snd> Aid<'snd, Result<'fst> = &'fst mut str>" //@ has - '//*[@id="associatedtype.Out14"]' "type Out14" //@ has - '//*[@id="associatedtype.Out15"]' "type Out15: AsyncFnMut(i32) -> bool" // // Snapshots: // Check that we don't render any where-clauses for the following associated types since // all corresponding projection equality predicates should have already been re-sugared // to associated type bindings: // //@ snapshot out0 - '//*[@id="associatedtype.Out0"]/*[@class="code-header"]' //@ snapshot out2 - '//*[@id="associatedtype.Out2"]/*[@class="code-header"]' //@ snapshot out9 - '//*[@id="associatedtype.Out9"]/*[@class="code-header"]' // //@ has - '//*[@id="tymethod.make"]' \ // "fn make(_: F, _: impl FnMut(&str) -> bool)\ // where \ // F: FnOnce(u32) -> String, \ // Self::Out2<()>: Protocol" pub use aux::Main; //@ has main/trait.Aid.html //@ has - '//*[@id="associatedtype.Result"]' "type Result<'inter: 'src>" pub use aux::Aid; // Below, ensure that we correctly display generic parameters and where-clauses on // associated types inside trait *impls*. More particularly, check that we don't render // any bounds (here `Self::Alias: ...`) as item bounds unlike all the trait test cases above. //@ has main/struct.Implementor.html //@ has - '//*[@id="associatedtype.Alias"]' \ // "type Alias = T \ // where \ // String: From, \ // ::Alias: From<::Alias>" pub use aux::Implementor;