diff options
author | Emil Lauridsen <[email protected]> | 2019-12-13 11:44:42 +0000 |
---|---|---|
committer | Emil Lauridsen <[email protected]> | 2019-12-13 11:45:38 +0000 |
commit | 77052090515c1bb2a00236b3a57cdd778e581c8c (patch) | |
tree | 4ce2117829fda26c3bdbac26f73a4a196bfc4e3b /crates/ra_hir_ty/src/infer.rs | |
parent | 95dc2de8e979264e1c76ce5594e8a63547a7956e (diff) |
Correctly infer - and ! using std::ops::{Neg,Not}
Diffstat (limited to 'crates/ra_hir_ty/src/infer.rs')
-rw-r--r-- | crates/ra_hir_ty/src/infer.rs | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/crates/ra_hir_ty/src/infer.rs b/crates/ra_hir_ty/src/infer.rs index 62d5c8803..a1201b3e4 100644 --- a/crates/ra_hir_ty/src/infer.rs +++ b/crates/ra_hir_ty/src/infer.rs | |||
@@ -36,8 +36,8 @@ use ra_prof::profile; | |||
36 | use super::{ | 36 | use super::{ |
37 | primitive::{FloatTy, IntTy}, | 37 | primitive::{FloatTy, IntTy}, |
38 | traits::{Guidance, Obligation, ProjectionPredicate, Solution}, | 38 | traits::{Guidance, Obligation, ProjectionPredicate, Solution}, |
39 | ApplicationTy, InEnvironment, ProjectionTy, TraitEnvironment, TraitRef, Ty, TypeCtor, TypeWalk, | 39 | ApplicationTy, InEnvironment, ProjectionTy, Substs, TraitEnvironment, TraitRef, Ty, TypeCtor, |
40 | Uncertain, | 40 | TypeWalk, Uncertain, |
41 | }; | 41 | }; |
42 | use crate::{db::HirDatabase, infer::diagnostics::InferenceDiagnostic}; | 42 | use crate::{db::HirDatabase, infer::diagnostics::InferenceDiagnostic}; |
43 | 43 | ||
@@ -433,6 +433,18 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> { | |||
433 | self.db.trait_data(trait_).associated_type_by_name(&name::OK_TYPE) | 433 | self.db.trait_data(trait_).associated_type_by_name(&name::OK_TYPE) |
434 | } | 434 | } |
435 | 435 | ||
436 | fn resolve_ops_neg_output(&self) -> Option<TypeAliasId> { | ||
437 | let path = known::std_ops_neg(); | ||
438 | let trait_ = self.resolver.resolve_known_trait(self.db, &path)?; | ||
439 | self.db.trait_data(trait_).associated_type_by_name(&name::OUTPUT_TYPE) | ||
440 | } | ||
441 | |||
442 | fn resolve_ops_not_output(&self) -> Option<TypeAliasId> { | ||
443 | let path = known::std_ops_not(); | ||
444 | let trait_ = self.resolver.resolve_known_trait(self.db, &path)?; | ||
445 | self.db.trait_data(trait_).associated_type_by_name(&name::OUTPUT_TYPE) | ||
446 | } | ||
447 | |||
436 | fn resolve_future_future_output(&self) -> Option<TypeAliasId> { | 448 | fn resolve_future_future_output(&self) -> Option<TypeAliasId> { |
437 | let path = known::std_future_future(); | 449 | let path = known::std_future_future(); |
438 | let trait_ = self.resolver.resolve_known_trait(self.db, &path)?; | 450 | let trait_ = self.resolver.resolve_known_trait(self.db, &path)?; |