Skip to content

Commit 16444c3

Browse files
committed
Reduce indentation in resolve_associated_item
1 parent 48f95c1 commit 16444c3

File tree

1 file changed

+35
-45
lines changed

1 file changed

+35
-45
lines changed

src/librustdoc/passes/collect_intra_doc_links.rs

+35-45
Original file line numberDiff line numberDiff line change
@@ -611,7 +611,7 @@ impl<'a, 'tcx> LinkCollector<'a, 'tcx> {
611611
ty::AssocKind::Const => "associatedconstant",
612612
ty::AssocKind::Type => "associatedtype",
613613
};
614-
Some(if extra_fragment.is_some() {
614+
return Some(if extra_fragment.is_some() {
615615
Err(ErrorKind::AnchorFailure(AnchorFailure::RustdocAnchorConflict(
616616
root_res,
617617
)))
@@ -621,51 +621,41 @@ impl<'a, 'tcx> LinkCollector<'a, 'tcx> {
621621
// Store the kind in a side channel so that only the disambiguator logic looks at it.
622622
self.kind_side_channel.set(Some((kind.as_def_kind(), id)));
623623
Ok((root_res, Some(format!("{}.{}", out, item_name))))
624-
})
625-
} else if ns == Namespace::ValueNS {
626-
debug!("looking for variants or fields named {} for {:?}", item_name, did);
627-
// FIXME(jynelson): why is this different from
628-
// `variant_field`?
629-
match tcx.type_of(did).kind() {
630-
ty::Adt(def, _) => {
631-
let field = if def.is_enum() {
632-
def.all_fields().find(|item| item.ident.name == item_name)
633-
} else {
634-
def.non_enum_variant()
635-
.fields
636-
.iter()
637-
.find(|item| item.ident.name == item_name)
638-
};
639-
field.map(|item| {
640-
if extra_fragment.is_some() {
641-
let res = Res::Def(
642-
if def.is_enum() {
643-
DefKind::Variant
644-
} else {
645-
DefKind::Field
646-
},
647-
item.did,
648-
);
649-
Err(ErrorKind::AnchorFailure(
650-
AnchorFailure::RustdocAnchorConflict(res),
651-
))
652-
} else {
653-
Ok((
654-
root_res,
655-
Some(format!(
656-
"{}.{}",
657-
if def.is_enum() { "variant" } else { "structfield" },
658-
item.ident
659-
)),
660-
))
661-
}
662-
})
663-
}
664-
_ => None,
665-
}
666-
} else {
667-
None
624+
});
625+
}
626+
627+
if ns != Namespace::ValueNS {
628+
return None;
668629
}
630+
debug!("looking for variants or fields named {} for {:?}", item_name, did);
631+
// FIXME: this doesn't really belong in `associated_item` (maybe `variant_field` is better?)
632+
// NOTE: it's different from variant_field because it resolves fields and variants,
633+
// not variant fields (2 path segments, not 3).
634+
let def = match tcx.type_of(did).kind() {
635+
ty::Adt(def, _) => def,
636+
_ => return None,
637+
};
638+
let field = if def.is_enum() {
639+
def.all_fields().find(|item| item.ident.name == item_name)
640+
} else {
641+
def.non_enum_variant().fields.iter().find(|item| item.ident.name == item_name)
642+
}?;
643+
Some(if extra_fragment.is_some() {
644+
let res = Res::Def(
645+
if def.is_enum() { DefKind::Variant } else { DefKind::Field },
646+
field.did,
647+
);
648+
Err(ErrorKind::AnchorFailure(AnchorFailure::RustdocAnchorConflict(res)))
649+
} else {
650+
Ok((
651+
root_res,
652+
Some(format!(
653+
"{}.{}",
654+
if def.is_enum() { "variant" } else { "structfield" },
655+
field.ident
656+
)),
657+
))
658+
})
669659
}
670660
Res::Def(DefKind::Trait, did) => tcx
671661
.associated_items(did)

0 commit comments

Comments
 (0)