From 9f2574c97e55e2af1d1b93f60307aa9d41f55f42 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Fri, 25 Jan 2019 20:32:34 +0300 Subject: add ability to get strcut field source --- crates/ra_hir/src/code_model_api.rs | 16 +++++++++++++--- 1 file changed, 13 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 118562984..fdea5be57 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::{ nameres::{ModuleScope, lower::ImportId}, db::HirDatabase, expr::BodySyntaxMapping, - ty::{InferenceResult, VariantDef}, - adt::{EnumVariantId, StructFieldId}, + ty::InferenceResult, + adt::{EnumVariantId, StructFieldId, VariantDef}, generics::GenericParams, docs::{Documentation, Docs, docs_from_ast}, module_tree::ModuleId, @@ -179,10 +179,16 @@ impl Module { #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub struct StructField { - parent: VariantDef, + pub(crate) parent: VariantDef, pub(crate) id: StructFieldId, } +#[derive(Debug)] +pub enum FieldSource { + Named(TreeArc), + Pos(TreeArc), +} + impl StructField { pub fn name(&self, db: &impl HirDatabase) -> Name { self.parent.variant_data(db).fields().unwrap()[self.id] @@ -190,6 +196,10 @@ impl StructField { .clone() } + pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, FieldSource) { + self.source_impl(db) + } + pub fn ty(&self, db: &impl HirDatabase) -> Ty { db.type_for_field(*self) } -- cgit v1.2.3