From 90215eb5a026d446ae7e5d4e62c43d6d8c82edf1 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Fri, 25 Jan 2019 00:02:18 +0300 Subject: generalize boilerplate --- crates/ra_hir/src/code_model_api.rs | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 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 e16013956..1fa591ea4 100644 --- a/crates/ra_hir/src/code_model_api.rs +++ b/crates/ra_hir/src/code_model_api.rs @@ -16,7 +16,7 @@ use crate::{ code_model_impl::def_id_to_ast, docs::{Documentation, Docs, docs_from_ast}, module_tree::ModuleId, - ids::{FunctionId, StructId, EnumId, EnumVariantId}, + ids::{FunctionId, StructId, EnumId, EnumVariantId, AstItemDef}, }; /// hir::Crate describes a single crate. It's the main interface with which @@ -197,8 +197,12 @@ pub struct Struct { } impl Struct { + pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc) { + self.id.source(db) + } + pub fn module(&self, db: &impl HirDatabase) -> Module { - self.id.loc(db).module + self.id.module(db) } pub fn name(&self, db: &impl HirDatabase) -> Option { @@ -217,10 +221,6 @@ impl Struct { .collect() } - pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc) { - self.id.loc(db).source(db) - } - pub fn generic_params(&self, db: &impl HirDatabase) -> Arc { db.generic_params((*self).into()) } @@ -238,8 +238,12 @@ pub struct Enum { } impl Enum { + pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc) { + self.id.source(db) + } + pub fn module(&self, db: &impl HirDatabase) -> Module { - self.id.loc(db).module + self.id.module(db) } pub fn name(&self, db: &impl HirDatabase) -> Option { @@ -250,10 +254,6 @@ impl Enum { db.enum_data(*self).variants.clone() } - pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc) { - self.id.loc(db).source(db) - } - pub fn generic_params(&self, db: &impl HirDatabase) -> Arc { db.generic_params((*self).into()) } @@ -271,8 +271,11 @@ pub struct EnumVariant { } impl EnumVariant { + pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc) { + self.id.source(db) + } pub fn module(&self, db: &impl HirDatabase) -> Module { - self.id.loc(db).module + self.id.module(db) } pub fn parent_enum(&self, db: &impl HirDatabase) -> Enum { db.enum_variant_data(*self).parent_enum.clone() @@ -296,10 +299,6 @@ impl EnumVariant { }) .collect() } - - pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc) { - self.id.loc(db).source(db) - } } impl Docs for EnumVariant { @@ -348,7 +347,11 @@ impl FnSignature { impl Function { pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc) { - self.id.loc(db).source(db) + self.id.source(db) + } + + pub fn module(&self, db: &impl HirDatabase) -> Module { + self.id.module(db) } pub fn body_syntax_mapping(&self, db: &impl HirDatabase) -> Arc { -- cgit v1.2.3