// This test ensures that anchors are generated in the right places. #![feature(inherent_associated_types)] #![allow(incomplete_features)] #![crate_name = "foo"] pub struct Foo; // @has 'foo/trait.Bar.html' pub trait Bar { // There should be no anchors here. // @snapshot no_type_anchor - '//*[@id="associatedtype.T"]' type T; // There should be no anchors here. // @snapshot no_const_anchor - '//*[@id="associatedconstant.YOLO"]' const YOLO: u32; // There should be no anchors here. // @snapshot no_tymethod_anchor - '//*[@id="tymethod.foo"]' fn foo(); // There should be no anchors here. // @snapshot no_trait_method_anchor - '//*[@id="method.bar"]' fn bar() {} } // @has 'foo/struct.Foo.html' impl Bar for Foo { // @has - '//*[@id="associatedtype.T"]/a[@class="anchor"]' '' type T = u32; // @has - '//*[@id="associatedconstant.YOLO"]/a[@class="anchor"]' '' const YOLO: u32 = 0; // @has - '//*[@id="method.foo"]/a[@class="anchor"]' '' fn foo() {} // Same check for provided "bar" method. // @has - '//*[@id="method.bar"]/a[@class="anchor"]' '' } impl Foo { // @snapshot no_const_anchor2 - '//*[@id="associatedconstant.X"]' // There should be no anchors here. pub const X: i32 = 0; // @snapshot no_type_anchor2 - '//*[@id="associatedtype.Y"]' // There should be no anchors here. pub type Y = u32; // @snapshot no_method_anchor - '//*[@id="method.new"]' // There should be no anchors here. pub fn new() -> Self { Self } }