From bcbfa2cc1146dfa23acb3e61f7ec053733a8fac1 Mon Sep 17 00:00:00 2001 From: Marcus Klaas de Vries Date: Fri, 18 Jan 2019 15:38:11 +0100 Subject: Finish move of StructField for pattern type inference --- crates/ra_hir/src/code_model_api.rs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'crates/ra_hir/src/code_model_api.rs') diff --git a/crates/ra_hir/src/code_model_api.rs b/crates/ra_hir/src/code_model_api.rs index 860fd7539..11e919c1a 100644 --- a/crates/ra_hir/src/code_model_api.rs +++ b/crates/ra_hir/src/code_model_api.rs @@ -158,7 +158,7 @@ impl Module { #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct StructField { - struct_: Struct, + parent: DefId, name: Name, } @@ -166,8 +166,9 @@ impl StructField { pub fn name(&self) -> &Name { &self.name } + pub fn ty(&self, db: &impl HirDatabase) -> Option { - db.type_for_field(self.struct_.def_id, self.name.clone()) + db.type_for_field(self.parent, self.name.clone()) } } @@ -191,7 +192,7 @@ impl Struct { .fields() .iter() .map(|it| StructField { - struct_: self.clone(), + parent: self.def_id, name: it.name.clone(), }) .collect() @@ -255,6 +256,17 @@ impl EnumVariant { db.enum_variant_data(self.def_id).variant_data.clone() } + pub fn fields(&self, db: &impl HirDatabase) -> Vec { + self.variant_data(db) + .fields() + .iter() + .map(|it| StructField { + parent: self.def_id, + name: it.name.clone(), + }) + .collect() + } + pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc) { def_id_to_ast(db, self.def_id) } -- cgit v1.2.3