aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/db.rs
diff options
context:
space:
mode:
authorbors[bot] <bors[bot]@users.noreply.github.com>2019-04-20 17:13:50 +0100
committerbors[bot] <bors[bot]@users.noreply.github.com>2019-04-20 17:13:50 +0100
commit4ad2e4ce4e88c809abc7a8006d306fb038eb2d18 (patch)
tree21cc19a5b4fd27b42e09fa12642254227275e88f /crates/ra_hir/src/db.rs
parent526a6aba104a32eb9f0f5a65232783d5570c35d5 (diff)
parent8ac3d1f9aa892fc891b69c7d8d00d39b9371d246 (diff)
Merge #1154
1154: Initial support for lang items (and str completion) r=flodiebold a=marcogroppo This PR adds partial support for lang items. For now, the only supported lang items are the ones that target an impl block. Lang items are now resolved during type inference - this means that `str` completion now works. Fixes #1139. (thanks Florian Diebold for the help!) Co-authored-by: Marco Groppo <[email protected]>
Diffstat (limited to 'crates/ra_hir/src/db.rs')
-rw-r--r--crates/ra_hir/src/db.rs9
1 files changed, 8 insertions, 1 deletions
diff --git a/crates/ra_hir/src/db.rs b/crates/ra_hir/src/db.rs
index 18627bbc2..8af0a3176 100644
--- a/crates/ra_hir/src/db.rs
+++ b/crates/ra_hir/src/db.rs
@@ -1,6 +1,6 @@
1use std::sync::Arc; 1use std::sync::Arc;
2 2
3use ra_syntax::{SyntaxNode, TreeArc, SourceFile, ast}; 3use ra_syntax::{SyntaxNode, TreeArc, SourceFile, SmolStr, ast};
4use ra_db::{SourceDatabase, salsa}; 4use ra_db::{SourceDatabase, salsa};
5 5
6use crate::{ 6use crate::{
@@ -16,6 +16,7 @@ use crate::{
16 generics::{GenericParams, GenericDef}, 16 generics::{GenericParams, GenericDef},
17 type_ref::TypeRef, 17 type_ref::TypeRef,
18 traits::TraitData, Trait, ty::TraitRef, 18 traits::TraitData, Trait, ty::TraitRef,
19 lang_item::{LangItems, LangItemTarget},
19 ids 20 ids
20}; 21};
21 22
@@ -100,6 +101,12 @@ pub trait DefDatabase: SourceDatabase {
100 101
101 #[salsa::invoke(crate::ConstSignature::static_signature_query)] 102 #[salsa::invoke(crate::ConstSignature::static_signature_query)]
102 fn static_signature(&self, konst: Static) -> Arc<ConstSignature>; 103 fn static_signature(&self, konst: Static) -> Arc<ConstSignature>;
104
105 #[salsa::invoke(crate::lang_item::LangItems::lang_items_query)]
106 fn lang_items(&self, krate: Crate) -> Arc<LangItems>;
107
108 #[salsa::invoke(crate::lang_item::LangItems::lang_item_query)]
109 fn lang_item(&self, start_crate: Crate, item: SmolStr) -> Option<LangItemTarget>;
103} 110}
104 111
105#[salsa::query_group(HirDatabaseStorage)] 112#[salsa::query_group(HirDatabaseStorage)]