diff options
author | Aleksey Kladov <[email protected]> | 2020-01-14 10:27:00 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2020-01-14 10:29:43 +0000 |
commit | 52e7f67128fdaf604e4563eb6445fdd69d42c91e (patch) | |
tree | ef22688ef7d1486ac4f084ead6bcb7e69d520b65 /crates/ra_hir/src/source_analyzer.rs | |
parent | 0358f5fdebb7f462e72aaf77eea8c842709127fc (diff) |
Move impls_future to Type, where it belongs
Diffstat (limited to 'crates/ra_hir/src/source_analyzer.rs')
-rw-r--r-- | crates/ra_hir/src/source_analyzer.rs | 24 |
1 files changed, 1 insertions, 23 deletions
diff --git a/crates/ra_hir/src/source_analyzer.rs b/crates/ra_hir/src/source_analyzer.rs index bd5ef1466..3df48842d 100644 --- a/crates/ra_hir/src/source_analyzer.rs +++ b/crates/ra_hir/src/source_analyzer.rs | |||
@@ -21,10 +21,7 @@ use hir_def::{ | |||
21 | use hir_expand::{ | 21 | use hir_expand::{ |
22 | hygiene::Hygiene, name::AsName, AstId, HirFileId, InFile, MacroCallId, MacroCallKind, | 22 | hygiene::Hygiene, name::AsName, AstId, HirFileId, InFile, MacroCallId, MacroCallKind, |
23 | }; | 23 | }; |
24 | use hir_ty::{ | 24 | use hir_ty::{method_resolution, Canonical, InEnvironment, InferenceResult, TraitEnvironment, Ty}; |
25 | method_resolution::{self, implements_trait}, | ||
26 | Canonical, InEnvironment, InferenceResult, TraitEnvironment, Ty, | ||
27 | }; | ||
28 | use ra_prof::profile; | 25 | use ra_prof::profile; |
29 | use ra_syntax::{ | 26 | use ra_syntax::{ |
30 | ast::{self, AstNode}, | 27 | ast::{self, AstNode}, |
@@ -395,25 +392,6 @@ impl SourceAnalyzer { | |||
395 | ) | 392 | ) |
396 | } | 393 | } |
397 | 394 | ||
398 | /// Checks that particular type `ty` implements `std::future::Future`. | ||
399 | /// This function is used in `.await` syntax completion. | ||
400 | pub fn impls_future(&self, db: &impl HirDatabase, ty: Type) -> bool { | ||
401 | let krate = match self.resolver.krate() { | ||
402 | Some(krate) => krate, | ||
403 | None => return false, | ||
404 | }; | ||
405 | |||
406 | let std_future_trait = | ||
407 | db.lang_item(krate, "future_trait".into()).and_then(|it| it.as_trait()); | ||
408 | let std_future_trait = match std_future_trait { | ||
409 | Some(it) => it, | ||
410 | None => return false, | ||
411 | }; | ||
412 | |||
413 | let canonical_ty = Canonical { value: ty.ty.value, num_vars: 0 }; | ||
414 | implements_trait(&canonical_ty, db, &self.resolver, krate, std_future_trait) | ||
415 | } | ||
416 | |||
417 | pub fn expand( | 395 | pub fn expand( |
418 | &self, | 396 | &self, |
419 | db: &impl HirDatabase, | 397 | db: &impl HirDatabase, |