Skip to content

Commit 6b386bc

Browse files
committed
rustdoc: rebase after changes to bindings
1 parent c3edd33 commit 6b386bc

File tree

2 files changed

+27
-20
lines changed

2 files changed

+27
-20
lines changed

src/librustdoc/clean/types.rs

+8-4
Original file line numberDiff line numberDiff line change
@@ -1647,16 +1647,16 @@ impl Type {
16471647
}
16481648
}
16491649

1650-
pub(crate) fn generics(&self) -> Option<Vec<&Type>> {
1650+
pub(crate) fn generic_args(&self) -> Option<&GenericArgs> {
16511651
match self {
1652-
Type::Path { path, .. } => path.generics(),
1652+
Type::Path { path, .. } => path.generic_args(),
16531653
_ => None,
16541654
}
16551655
}
16561656

1657-
pub(crate) fn bindings(&self) -> Option<&[TypeBinding]> {
1657+
pub(crate) fn generics(&self) -> Option<Vec<&Type>> {
16581658
match self {
1659-
Type::Path { path, .. } => path.bindings(),
1659+
Type::Path { path, .. } => path.generics(),
16601660
_ => None,
16611661
}
16621662
}
@@ -2194,6 +2194,10 @@ impl Path {
21942194
}
21952195
}
21962196

2197+
pub(crate) fn generic_args(&self) -> Option<&GenericArgs> {
2198+
self.segments.last().map(|seg| &seg.args)
2199+
}
2200+
21972201
pub(crate) fn generics(&self) -> Option<Vec<&Type>> {
21982202
self.segments.last().and_then(|seg| {
21992203
if let GenericArgs::AngleBracketed { ref args, .. } = seg.args {

src/librustdoc/html/render/search_index.rs

+19-16
Original file line numberDiff line numberDiff line change
@@ -805,25 +805,15 @@ fn simplify_fn_type<'tcx, 'a>(
805805
// we will look for them but not for `T`).
806806
let mut ty_generics = Vec::new();
807807
let mut ty_bindings = Vec::new();
808-
for binding in arg.bindings().unwrap_or_default() {
809-
simplify_fn_binding(
810-
self_,
811-
generics,
812-
binding,
813-
tcx,
814-
recurse + 1,
815-
&mut ty_bindings,
816-
rgen,
817-
is_return,
818-
cache,
819-
);
820-
}
821-
if let Some(arg_generics) = arg.generics() {
822-
for gen in arg_generics.iter() {
808+
if let Some(arg_generics) = arg.generic_args() {
809+
for ty in arg_generics.into_iter().filter_map(|gen| match gen {
810+
clean::GenericArg::Type(ty) => Some(ty),
811+
_ => None,
812+
}) {
823813
simplify_fn_type(
824814
self_,
825815
generics,
826-
gen,
816+
&ty,
827817
tcx,
828818
recurse + 1,
829819
&mut ty_generics,
@@ -832,6 +822,19 @@ fn simplify_fn_type<'tcx, 'a>(
832822
cache,
833823
);
834824
}
825+
for binding in arg_generics.bindings() {
826+
simplify_fn_binding(
827+
self_,
828+
generics,
829+
&binding,
830+
tcx,
831+
recurse + 1,
832+
&mut ty_bindings,
833+
rgen,
834+
is_return,
835+
cache,
836+
);
837+
}
835838
}
836839
// Every trait associated type on self gets assigned to a type parameter index
837840
// this same one is used later for any appearances of these types

0 commit comments

Comments
 (0)