Save variant names in EnumData to reduce needless queries

We already have their names when anyway, and when in all (current)
situations where we're interested in an Enum's variants, we want
their names.
This commit is contained in:
Marcus Klaas de Vries 2019-01-10 02:07:42 +01:00
parent 978de5cf8b
commit e78286c8e8
4 changed files with 24 additions and 38 deletions

View file

@ -142,20 +142,10 @@ impl Module {
Def::Enum(e) => {
if segments.len() == idx + 1 {
// enum variant
let matching_variant = e.variants(db)?.map(|variants| {
variants
.into_iter()
// FIXME: replace by match lol
.find(|variant| {
variant
.name(db)
.map(|o| o.map(|ref n| n == name))
.unwrap_or(Some(false))
.unwrap_or(false)
})
});
let matching_variant =
e.variants(db)?.into_iter().find(|(n, _variant)| n == name);
if let Some(Some(variant)) = matching_variant {
if let Some((_n, variant)) = matching_variant {
return Ok(PerNs::both(variant.def_id(), e.def_id()));
} else {
return Ok(PerNs::none());