aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/code_model_api.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/code_model_api.rs')
-rw-r--r--crates/ra_hir/src/code_model_api.rs51
1 files changed, 27 insertions, 24 deletions
diff --git a/crates/ra_hir/src/code_model_api.rs b/crates/ra_hir/src/code_model_api.rs
index 9405aa8ad..71123a698 100644
--- a/crates/ra_hir/src/code_model_api.rs
+++ b/crates/ra_hir/src/code_model_api.rs
@@ -8,7 +8,7 @@ use crate::{
8 Name, Path, PerNs, ScopesWithSyntaxMapping, Ty, HirFileId, 8 Name, Path, PerNs, ScopesWithSyntaxMapping, Ty, HirFileId,
9 type_ref::TypeRef, 9 type_ref::TypeRef,
10 nameres::{ModuleScope, lower::ImportId}, 10 nameres::{ModuleScope, lower::ImportId},
11 db::HirDatabase, 11 HirDatabase, PersistentHirDatabase,
12 expr::BodySyntaxMapping, 12 expr::BodySyntaxMapping,
13 ty::{InferenceResult}, 13 ty::{InferenceResult},
14 adt::{EnumVariantId, StructFieldId, VariantDef}, 14 adt::{EnumVariantId, StructFieldId, VariantDef},
@@ -37,10 +37,10 @@ impl Crate {
37 pub fn crate_id(&self) -> CrateId { 37 pub fn crate_id(&self) -> CrateId {
38 self.crate_id 38 self.crate_id
39 } 39 }
40 pub fn dependencies(&self, db: &impl HirDatabase) -> Vec<CrateDependency> { 40 pub fn dependencies(&self, db: &impl PersistentHirDatabase) -> Vec<CrateDependency> {
41 self.dependencies_impl(db) 41 self.dependencies_impl(db)
42 } 42 }
43 pub fn root_module(&self, db: &impl HirDatabase) -> Option<Module> { 43 pub fn root_module(&self, db: &impl PersistentHirDatabase) -> Option<Module> {
44 self.root_module_impl(db) 44 self.root_module_impl(db)
45 } 45 }
46} 46}
@@ -105,7 +105,7 @@ impl Module {
105 } 105 }
106 106
107 /// Returns a node which defines this module. That is, a file or a `mod foo {}` with items. 107 /// Returns a node which defines this module. That is, a file or a `mod foo {}` with items.
108 pub fn definition_source(&self, db: &impl HirDatabase) -> (FileId, ModuleSource) { 108 pub fn definition_source(&self, db: &impl PersistentHirDatabase) -> (FileId, ModuleSource) {
109 self.definition_source_impl(db) 109 self.definition_source_impl(db)
110 } 110 }
111 111
@@ -140,7 +140,7 @@ impl Module {
140 /// Topmost parent of this module. Every module has a `crate_root`, but some 140 /// Topmost parent of this module. Every module has a `crate_root`, but some
141 /// might be missing `krate`. This can happen if a module's file is not included 141 /// might be missing `krate`. This can happen if a module's file is not included
142 /// in the module tree of any target in Cargo.toml. 142 /// in the module tree of any target in Cargo.toml.
143 pub fn crate_root(&self, db: &impl HirDatabase) -> Module { 143 pub fn crate_root(&self, db: &impl PersistentHirDatabase) -> Module {
144 self.crate_root_impl(db) 144 self.crate_root_impl(db)
145 } 145 }
146 146
@@ -150,12 +150,12 @@ impl Module {
150 } 150 }
151 151
152 /// Iterates over all child modules. 152 /// Iterates over all child modules.
153 pub fn children(&self, db: &impl HirDatabase) -> impl Iterator<Item = Module> { 153 pub fn children(&self, db: &impl PersistentHirDatabase) -> impl Iterator<Item = Module> {
154 self.children_impl(db) 154 self.children_impl(db)
155 } 155 }
156 156
157 /// Finds a parent module. 157 /// Finds a parent module.
158 pub fn parent(&self, db: &impl HirDatabase) -> Option<Module> { 158 pub fn parent(&self, db: &impl PersistentHirDatabase) -> Option<Module> {
159 self.parent_impl(db) 159 self.parent_impl(db)
160 } 160 }
161 161
@@ -174,7 +174,7 @@ impl Module {
174 db.item_map(self.krate)[self.module_id].clone() 174 db.item_map(self.krate)[self.module_id].clone()
175 } 175 }
176 176
177 pub fn resolve_path(&self, db: &impl HirDatabase, path: &Path) -> PerNs<ModuleDef> { 177 pub fn resolve_path(&self, db: &impl PersistentHirDatabase, path: &Path) -> PerNs<ModuleDef> {
178 db.item_map(self.krate).resolve_path(db, *self, path) 178 db.item_map(self.krate).resolve_path(db, *self, path)
179 } 179 }
180 180
@@ -209,7 +209,7 @@ impl StructField {
209 .clone() 209 .clone()
210 } 210 }
211 211
212 pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, FieldSource) { 212 pub fn source(&self, db: &impl PersistentHirDatabase) -> (HirFileId, FieldSource) {
213 self.source_impl(db) 213 self.source_impl(db)
214 } 214 }
215 215
@@ -237,7 +237,7 @@ pub struct Struct {
237} 237}
238 238
239impl Struct { 239impl Struct {
240 pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc<ast::StructDef>) { 240 pub fn source(&self, db: &impl PersistentHirDatabase) -> (HirFileId, TreeArc<ast::StructDef>) {
241 self.id.source(db) 241 self.id.source(db)
242 } 242 }
243 243
@@ -275,7 +275,7 @@ impl Struct {
275 }) 275 })
276 } 276 }
277 277
278 pub fn generic_params(&self, db: &impl HirDatabase) -> Arc<GenericParams> { 278 pub fn generic_params(&self, db: &impl PersistentHirDatabase) -> Arc<GenericParams> {
279 db.generic_params((*self).into()) 279 db.generic_params((*self).into())
280 } 280 }
281 281
@@ -296,7 +296,7 @@ pub struct Enum {
296} 296}
297 297
298impl Enum { 298impl Enum {
299 pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc<ast::EnumDef>) { 299 pub fn source(&self, db: &impl PersistentHirDatabase) -> (HirFileId, TreeArc<ast::EnumDef>) {
300 self.id.source(db) 300 self.id.source(db)
301 } 301 }
302 302
@@ -316,7 +316,7 @@ impl Enum {
316 .collect() 316 .collect()
317 } 317 }
318 318
319 pub fn variant(&self, db: &impl HirDatabase, name: &Name) -> Option<EnumVariant> { 319 pub fn variant(&self, db: &impl PersistentHirDatabase, name: &Name) -> Option<EnumVariant> {
320 db.enum_data(*self) 320 db.enum_data(*self)
321 .variants 321 .variants
322 .iter() 322 .iter()
@@ -324,7 +324,7 @@ impl Enum {
324 .map(|(id, _)| EnumVariant { parent: *self, id }) 324 .map(|(id, _)| EnumVariant { parent: *self, id })
325 } 325 }
326 326
327 pub fn generic_params(&self, db: &impl HirDatabase) -> Arc<GenericParams> { 327 pub fn generic_params(&self, db: &impl PersistentHirDatabase) -> Arc<GenericParams> {
328 db.generic_params((*self).into()) 328 db.generic_params((*self).into())
329 } 329 }
330 330
@@ -346,13 +346,16 @@ pub struct EnumVariant {
346} 346}
347 347
348impl EnumVariant { 348impl EnumVariant {
349 pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc<ast::EnumVariant>) { 349 pub fn source(
350 &self,
351 db: &impl PersistentHirDatabase,
352 ) -> (HirFileId, TreeArc<ast::EnumVariant>) {
350 self.source_impl(db) 353 self.source_impl(db)
351 } 354 }
352 pub fn module(&self, db: &impl HirDatabase) -> Module { 355 pub fn module(&self, db: &impl HirDatabase) -> Module {
353 self.parent.module(db) 356 self.parent.module(db)
354 } 357 }
355 pub fn parent_enum(&self, _db: &impl HirDatabase) -> Enum { 358 pub fn parent_enum(&self, _db: &impl PersistentHirDatabase) -> Enum {
356 self.parent 359 self.parent
357 } 360 }
358 361
@@ -430,7 +433,7 @@ impl FnSignature {
430} 433}
431 434
432impl Function { 435impl Function {
433 pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc<ast::FnDef>) { 436 pub fn source(&self, db: &impl PersistentHirDatabase) -> (HirFileId, TreeArc<ast::FnDef>) {
434 self.id.source(db) 437 self.id.source(db)
435 } 438 }
436 439
@@ -463,7 +466,7 @@ impl Function {
463 db.infer(*self) 466 db.infer(*self)
464 } 467 }
465 468
466 pub fn generic_params(&self, db: &impl HirDatabase) -> Arc<GenericParams> { 469 pub fn generic_params(&self, db: &impl PersistentHirDatabase) -> Arc<GenericParams> {
467 db.generic_params((*self).into()) 470 db.generic_params((*self).into())
468 } 471 }
469} 472}
@@ -480,7 +483,7 @@ pub struct Const {
480} 483}
481 484
482impl Const { 485impl Const {
483 pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc<ast::ConstDef>) { 486 pub fn source(&self, db: &impl PersistentHirDatabase) -> (HirFileId, TreeArc<ast::ConstDef>) {
484 self.id.source(db) 487 self.id.source(db)
485 } 488 }
486} 489}
@@ -497,7 +500,7 @@ pub struct Static {
497} 500}
498 501
499impl Static { 502impl Static {
500 pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc<ast::StaticDef>) { 503 pub fn source(&self, db: &impl PersistentHirDatabase) -> (HirFileId, TreeArc<ast::StaticDef>) {
501 self.id.source(db) 504 self.id.source(db)
502 } 505 }
503} 506}
@@ -514,11 +517,11 @@ pub struct Trait {
514} 517}
515 518
516impl Trait { 519impl Trait {
517 pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc<ast::TraitDef>) { 520 pub fn source(&self, db: &impl PersistentHirDatabase) -> (HirFileId, TreeArc<ast::TraitDef>) {
518 self.id.source(db) 521 self.id.source(db)
519 } 522 }
520 523
521 pub fn generic_params(&self, db: &impl HirDatabase) -> Arc<GenericParams> { 524 pub fn generic_params(&self, db: &impl PersistentHirDatabase) -> Arc<GenericParams> {
522 db.generic_params((*self).into()) 525 db.generic_params((*self).into())
523 } 526 }
524} 527}
@@ -535,11 +538,11 @@ pub struct Type {
535} 538}
536 539
537impl Type { 540impl Type {
538 pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc<ast::TypeDef>) { 541 pub fn source(&self, db: &impl PersistentHirDatabase) -> (HirFileId, TreeArc<ast::TypeDef>) {
539 self.id.source(db) 542 self.id.source(db)
540 } 543 }
541 544
542 pub fn generic_params(&self, db: &impl HirDatabase) -> Arc<GenericParams> { 545 pub fn generic_params(&self, db: &impl PersistentHirDatabase) -> Arc<GenericParams> {
543 db.generic_params((*self).into()) 546 db.generic_params((*self).into())
544 } 547 }
545} 548}