Skip to content

Commit 2143e48

Browse files
committed
Rustdoc-Json: Add tests for dyn and HRTBs
1 parent 95729dc commit 2143e48

File tree

2 files changed

+40
-2
lines changed

2 files changed

+40
-2
lines changed

src/test/rustdoc-json/type/dyn.rs

+17-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
// ignore-tidy-linelength
22

3-
// @count dyn.json "$.index[*][?(@.name=='dyn')].inner.items" 1
3+
// @count dyn.json "$.index[*][?(@.name=='dyn')].inner.items[*]" 2
44
// @set sync_int_gen = - "$.index[*][?(@.name=='SyncIntGen')].id"
5-
// @is - "$.index[*][?(@.name=='dyn')].inner.items[0]" $sync_int_gen
5+
// @set ref_fn = - "$.index[*][?(@.name=='RefFn')].id"
6+
// @has - "$.index[*][?(@.name=='dyn')].inner.items[*]" $sync_int_gen
7+
// @has - "$.index[*][?(@.name=='dyn')].inner.items[*]" $ref_fn
68

79
// @is - "$.index[*][?(@.name=='SyncIntGen')].kind" \"typedef\"
810
// @is - "$.index[*][?(@.name=='SyncIntGen')].inner.generics" '{"params": [], "where_predicates": []}'
@@ -19,3 +21,16 @@
1921
// @is - "$.index[*][?(@.name=='SyncIntGen')].inner.type.inner.args.angle_bracketed.args[0].type.inner.param_names[2]" "{\"outlives\": \"'static\"}"
2022
// @is - "$.index[*][?(@.name=='SyncIntGen')].inner.type.inner.args.angle_bracketed.args[0].type.inner.args" '{"parenthesized": {"inputs": [],"output": {"inner": "i32","kind": "primitive"}}}'
2123
pub type SyncIntGen = Box<dyn Fn() -> i32 + Send + Sync + 'static>;
24+
25+
// @is - "$.index[*][?(@.name=='RefFn')].kind" \"typedef\"
26+
// @is - "$.index[*][?(@.name=='RefFn')].inner.generics" '{"params": [{"kind": {"lifetime": {"outlives": []}},"name": "'\''a"}],"where_predicates": []}'
27+
// @is - "$.index[*][?(@.name=='RefFn')].inner.type.kind" '"borrowed_ref"'
28+
// @is - "$.index[*][?(@.name=='RefFn')].inner.type.inner.mutable" 'false'
29+
// @is - "$.index[*][?(@.name=='RefFn')].inner.type.inner.lifetime" "\"'a\""
30+
// @is - "$.index[*][?(@.name=='RefFn')].inner.type.inner.type.kind" '"resolved_path"'
31+
// @is - "$.index[*][?(@.name=='RefFn')].inner.type.inner.type.inner.name" '"Fn"'
32+
// @is - "$.index[*][?(@.name=='RefFn')].inner.type.inner.type.inner.args.parenthesized.inputs[0].kind" '"borrowed_ref"'
33+
// @is - "$.index[*][?(@.name=='RefFn')].inner.type.inner.type.inner.args.parenthesized.inputs[0].inner.lifetime" "\"'b\""
34+
// @is - "$.index[*][?(@.name=='RefFn')].inner.type.inner.type.inner.args.parenthesized.output.kind" '"borrowed_ref"'
35+
// @is - "$.index[*][?(@.name=='RefFn')].inner.type.inner.type.inner.args.parenthesized.output.inner.lifetime" "\"'b\""
36+
pub type RefFn<'a> = &'a dyn for<'b> Fn(&'b i32) -> &'b i32;

src/test/rustdoc-json/type/hrtb.rs

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
2+
// @has hrtb.json
3+
4+
// @is - "$.index[*][?(@.name=='genfn')].inner.generics.where_predicates[0].bound_predicate.type" '{"inner": "F","kind": "generic"}'
5+
// @is - "$.index[*][?(@.name=='genfn')].inner.generics.where_predicates[0].bound_predicate.generic_params" '[{"kind": {"lifetime": {"outlives": []}},"name": "'\''a"},{"kind": {"lifetime": {"outlives": []}},"name": "'\''b"}]'
6+
pub fn genfn<F>(f: F)
7+
where
8+
for<'a, 'b> F: Fn(&'a i32, &'b i32),
9+
{
10+
let zero = 0;
11+
f(&zero, &zero);
12+
}
13+
14+
// @is - "$.index[*][?(@.name=='dynfn')].inner.generics" '{"params": [], "where_predicates": []}'
15+
// @is - "$.index[*][?(@.name=='dynfn')].inner.generics" '{"params": [], "where_predicates": []}'
16+
// @is - "$.index[*][?(@.name=='dynfn')].inner.decl.inputs[0][1].kind" '"borrowed_ref"'
17+
// @is - "$.index[*][?(@.name=='dynfn')].inner.decl.inputs[0][1].kind" '"borrowed_ref"'
18+
// @is - "$.index[*][?(@.name=='dynfn')].inner.decl.inputs[0][1].inner.type.kind" '"resolved_path"'
19+
// @is - "$.index[*][?(@.name=='dynfn')].inner.decl.inputs[0][1].inner.type.inner.name" '"Fn"'
20+
pub fn dynfn(f: &dyn for<'a, 'b> Fn(&'a i32, &'b i32)) {
21+
let zero = 0;
22+
f(&zero, &zero);
23+
}

0 commit comments

Comments
 (0)