diff options
Diffstat (limited to 'crates/ra_hir/src/code_model_api.rs')
-rw-r--r-- | crates/ra_hir/src/code_model_api.rs | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/crates/ra_hir/src/code_model_api.rs b/crates/ra_hir/src/code_model_api.rs index 5a05b5822..1e88bff8b 100644 --- a/crates/ra_hir/src/code_model_api.rs +++ b/crates/ra_hir/src/code_model_api.rs | |||
@@ -10,8 +10,8 @@ use crate::{ | |||
10 | nameres::{ModuleScope, lower::ImportId}, | 10 | nameres::{ModuleScope, lower::ImportId}, |
11 | db::HirDatabase, | 11 | db::HirDatabase, |
12 | expr::BodySyntaxMapping, | 12 | expr::BodySyntaxMapping, |
13 | ty::{InferenceResult, VariantDef}, | 13 | ty::InferenceResult, |
14 | adt::{EnumVariantId, StructFieldId}, | 14 | adt::{EnumVariantId, StructFieldId, VariantDef}, |
15 | generics::GenericParams, | 15 | generics::GenericParams, |
16 | docs::{Documentation, Docs, docs_from_ast}, | 16 | docs::{Documentation, Docs, docs_from_ast}, |
17 | module_tree::ModuleId, | 17 | module_tree::ModuleId, |
@@ -186,10 +186,16 @@ impl Docs for Module { | |||
186 | 186 | ||
187 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] | 187 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] |
188 | pub struct StructField { | 188 | pub struct StructField { |
189 | parent: VariantDef, | 189 | pub(crate) parent: VariantDef, |
190 | pub(crate) id: StructFieldId, | 190 | pub(crate) id: StructFieldId, |
191 | } | 191 | } |
192 | 192 | ||
193 | #[derive(Debug)] | ||
194 | pub enum FieldSource { | ||
195 | Named(TreeArc<ast::NamedFieldDef>), | ||
196 | Pos(TreeArc<ast::PosField>), | ||
197 | } | ||
198 | |||
193 | impl StructField { | 199 | impl StructField { |
194 | pub fn name(&self, db: &impl HirDatabase) -> Name { | 200 | pub fn name(&self, db: &impl HirDatabase) -> Name { |
195 | self.parent.variant_data(db).fields().unwrap()[self.id] | 201 | self.parent.variant_data(db).fields().unwrap()[self.id] |
@@ -197,6 +203,10 @@ impl StructField { | |||
197 | .clone() | 203 | .clone() |
198 | } | 204 | } |
199 | 205 | ||
206 | pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, FieldSource) { | ||
207 | self.source_impl(db) | ||
208 | } | ||
209 | |||
200 | pub fn ty(&self, db: &impl HirDatabase) -> Ty { | 210 | pub fn ty(&self, db: &impl HirDatabase) -> Ty { |
201 | db.type_for_field(*self) | 211 | db.type_for_field(*self) |
202 | } | 212 | } |