mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-11-02 04:48:13 +00:00
Merge pull request #20007 from Veykril/push-opqzsnwzwyvn
Idiomatic salsa use for enum variants query
This commit is contained in:
commit
08f795335b
33 changed files with 81 additions and 77 deletions
|
|
@ -688,7 +688,7 @@ impl Module {
|
|||
Adt::Enum(e) => {
|
||||
let source_map = db.enum_signature_with_source_map(e.id).1;
|
||||
expr_store_diagnostics(db, acc, &source_map);
|
||||
let (variants, diagnostics) = db.enum_variants_with_diagnostics(e.id);
|
||||
let (variants, diagnostics) = e.id.enum_variants_with_diagnostics(db);
|
||||
let file = e.id.lookup(db).id.file_id;
|
||||
let ast_id_map = db.ast_id_map(file);
|
||||
if let Some(diagnostics) = &diagnostics {
|
||||
|
|
@ -1504,11 +1504,11 @@ impl Enum {
|
|||
}
|
||||
|
||||
pub fn variants(self, db: &dyn HirDatabase) -> Vec<Variant> {
|
||||
db.enum_variants(self.id).variants.iter().map(|&(id, _, _)| Variant { id }).collect()
|
||||
self.id.enum_variants(db).variants.iter().map(|&(id, _, _)| Variant { id }).collect()
|
||||
}
|
||||
|
||||
pub fn num_variants(self, db: &dyn HirDatabase) -> usize {
|
||||
db.enum_variants(self.id).variants.len()
|
||||
self.id.enum_variants(db).variants.len()
|
||||
}
|
||||
|
||||
pub fn repr(self, db: &dyn HirDatabase) -> Option<ReprOptions> {
|
||||
|
|
@ -1606,7 +1606,7 @@ impl Variant {
|
|||
pub fn name(self, db: &dyn HirDatabase) -> Name {
|
||||
let lookup = self.id.lookup(db);
|
||||
let enum_ = lookup.parent;
|
||||
db.enum_variants(enum_).variants[lookup.index as usize].1.clone()
|
||||
enum_.enum_variants(db).variants[lookup.index as usize].1.clone()
|
||||
}
|
||||
|
||||
pub fn fields(self, db: &dyn HirDatabase) -> Vec<Field> {
|
||||
|
|
|
|||
|
|
@ -205,7 +205,7 @@ impl ChildBySource for EnumId {
|
|||
|
||||
let ast_id_map = db.ast_id_map(loc.id.file_id);
|
||||
|
||||
db.enum_variants(*self).variants.iter().for_each(|&(variant, _, _)| {
|
||||
self.enum_variants(db).variants.iter().for_each(|&(variant, _, _)| {
|
||||
res[keys::ENUM_VARIANT].insert(ast_id_map.get(variant.lookup(db).id.value), variant);
|
||||
});
|
||||
let (_, source_map) = db.enum_signature_with_source_map(*self);
|
||||
|
|
|
|||
|
|
@ -829,7 +829,7 @@ impl<'db> SourceAnalyzer<'db> {
|
|||
handle_variants(id.into(), subst, &mut container)?
|
||||
}
|
||||
AdtId::EnumId(id) => {
|
||||
let variants = db.enum_variants(id);
|
||||
let variants = id.enum_variants(db);
|
||||
let variant = variants.variant(&field_name.as_name())?;
|
||||
container = Either::Left((variant, subst.clone()));
|
||||
(Either::Left(Variant { id: variant }), id.into(), subst.clone())
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue