]> git.lizzy.rs Git - rust.git/blob - tests/rustdoc-json/traits/trait_alias.rs
Rollup merge of #106692 - eggyal:mv-binary_heap.rs-binary_heap/mod.rs, r=Mark-Simulacrum
[rust.git] / tests / rustdoc-json / traits / trait_alias.rs
1 // Regression test for <https://github.com/rust-lang/rust/issues/104923>
2 // ignore-tidy-linelength
3
4 #![feature(trait_alias)]
5
6 // @set Orig = "$.index[*][?(@.name == 'Orig')].id"
7 // @is "$.index[*][?(@.name == 'Orig')].kind" '"trait"'
8 pub trait Orig<T> {}
9
10 // @set Alias = "$.index[*][?(@.name == 'Alias')].id"
11 // @is "$.index[*][?(@.name == 'Alias')].kind" '"trait_alias"'
12 // @is "$.index[*][?(@.name == 'Alias')].inner.generics" '{"params": [], "where_predicates": []}'
13 // @count "$.index[*][?(@.name == 'Alias')].inner.params[*]" 1
14 // @is "$.index[*][?(@.name == 'Alias')].inner.params[0].trait_bound.trait.id" $Orig
15 // @is "$.index[*][?(@.name == 'Alias')].inner.params[0].trait_bound.trait.args.angle_bracketed.args[0].type.inner" '"i32"'
16 pub trait Alias = Orig<i32>;
17
18 pub struct Struct;
19
20 impl Orig<i32> for Struct {}
21
22 // @is "$.index[*][?(@.name=='takes_alias')].inner.decl.inputs[0][1].kind" '"impl_trait"'
23 // @is "$.index[*][?(@.name=='takes_alias')].inner.decl.inputs[0][1].inner[0].trait_bound.trait.id" $Alias
24 // @is "$.index[*][?(@.name=='takes_alias')].inner.generics.params[0].kind.type.bounds[0].trait_bound.trait.id" $Alias
25 pub fn takes_alias(_: impl Alias) {}
26 // FIXME: Should the trait be mentioned in both the decl and generics?
27
28 fn main() {
29     takes_alias(Struct);
30 }