aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/code_model_api.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2019-01-24 21:02:18 +0000
committerAleksey Kladov <[email protected]>2019-01-24 21:02:18 +0000
commit90215eb5a026d446ae7e5d4e62c43d6d8c82edf1 (patch)
tree75b35f218e07a8c6feba4e6204a9da762c2a9089 /crates/ra_hir/src/code_model_api.rs
parent1a5f32fcb516c1647c7581f21be9b11c8f1f94ba (diff)
generalize boilerplate
Diffstat (limited to 'crates/ra_hir/src/code_model_api.rs')
-rw-r--r--crates/ra_hir/src/code_model_api.rs37
1 files changed, 20 insertions, 17 deletions
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::{
16 code_model_impl::def_id_to_ast, 16 code_model_impl::def_id_to_ast,
17 docs::{Documentation, Docs, docs_from_ast}, 17 docs::{Documentation, Docs, docs_from_ast},
18 module_tree::ModuleId, 18 module_tree::ModuleId,
19 ids::{FunctionId, StructId, EnumId, EnumVariantId}, 19 ids::{FunctionId, StructId, EnumId, EnumVariantId, AstItemDef},
20}; 20};
21 21
22/// hir::Crate describes a single crate. It's the main interface with which 22/// hir::Crate describes a single crate. It's the main interface with which
@@ -197,8 +197,12 @@ pub struct Struct {
197} 197}
198 198
199impl Struct { 199impl Struct {
200 pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc<ast::StructDef>) {
201 self.id.source(db)
202 }
203
200 pub fn module(&self, db: &impl HirDatabase) -> Module { 204 pub fn module(&self, db: &impl HirDatabase) -> Module {
201 self.id.loc(db).module 205 self.id.module(db)
202 } 206 }
203 207
204 pub fn name(&self, db: &impl HirDatabase) -> Option<Name> { 208 pub fn name(&self, db: &impl HirDatabase) -> Option<Name> {
@@ -217,10 +221,6 @@ impl Struct {
217 .collect() 221 .collect()
218 } 222 }
219 223
220 pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc<ast::StructDef>) {
221 self.id.loc(db).source(db)
222 }
223
224 pub fn generic_params(&self, db: &impl HirDatabase) -> Arc<GenericParams> { 224 pub fn generic_params(&self, db: &impl HirDatabase) -> Arc<GenericParams> {
225 db.generic_params((*self).into()) 225 db.generic_params((*self).into())
226 } 226 }
@@ -238,8 +238,12 @@ pub struct Enum {
238} 238}
239 239
240impl Enum { 240impl Enum {
241 pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc<ast::EnumDef>) {
242 self.id.source(db)
243 }
244
241 pub fn module(&self, db: &impl HirDatabase) -> Module { 245 pub fn module(&self, db: &impl HirDatabase) -> Module {
242 self.id.loc(db).module 246 self.id.module(db)
243 } 247 }
244 248
245 pub fn name(&self, db: &impl HirDatabase) -> Option<Name> { 249 pub fn name(&self, db: &impl HirDatabase) -> Option<Name> {
@@ -250,10 +254,6 @@ impl Enum {
250 db.enum_data(*self).variants.clone() 254 db.enum_data(*self).variants.clone()
251 } 255 }
252 256
253 pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc<ast::EnumDef>) {
254 self.id.loc(db).source(db)
255 }
256
257 pub fn generic_params(&self, db: &impl HirDatabase) -> Arc<GenericParams> { 257 pub fn generic_params(&self, db: &impl HirDatabase) -> Arc<GenericParams> {
258 db.generic_params((*self).into()) 258 db.generic_params((*self).into())
259 } 259 }
@@ -271,8 +271,11 @@ pub struct EnumVariant {
271} 271}
272 272
273impl EnumVariant { 273impl EnumVariant {
274 pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc<ast::EnumVariant>) {
275 self.id.source(db)
276 }
274 pub fn module(&self, db: &impl HirDatabase) -> Module { 277 pub fn module(&self, db: &impl HirDatabase) -> Module {
275 self.id.loc(db).module 278 self.id.module(db)
276 } 279 }
277 pub fn parent_enum(&self, db: &impl HirDatabase) -> Enum { 280 pub fn parent_enum(&self, db: &impl HirDatabase) -> Enum {
278 db.enum_variant_data(*self).parent_enum.clone() 281 db.enum_variant_data(*self).parent_enum.clone()
@@ -296,10 +299,6 @@ impl EnumVariant {
296 }) 299 })
297 .collect() 300 .collect()
298 } 301 }
299
300 pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc<ast::EnumVariant>) {
301 self.id.loc(db).source(db)
302 }
303} 302}
304 303
305impl Docs for EnumVariant { 304impl Docs for EnumVariant {
@@ -348,7 +347,11 @@ impl FnSignature {
348 347
349impl Function { 348impl Function {
350 pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc<ast::FnDef>) { 349 pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc<ast::FnDef>) {
351 self.id.loc(db).source(db) 350 self.id.source(db)
351 }
352
353 pub fn module(&self, db: &impl HirDatabase) -> Module {
354 self.id.module(db)
352 } 355 }
353 356
354 pub fn body_syntax_mapping(&self, db: &impl HirDatabase) -> Arc<BodySyntaxMapping> { 357 pub fn body_syntax_mapping(&self, db: &impl HirDatabase) -> Arc<BodySyntaxMapping> {