diff options
author | Aleksey Kladov <[email protected]> | 2019-06-08 16:38:14 +0100 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2019-06-08 16:38:14 +0100 |
commit | 780e1a365b10027c4bd4adcc939ab32da1d91492 (patch) | |
tree | 549695a76379384898d49fc8eeb41d08ea55ef93 /crates/ra_hir/src/ty/infer.rs | |
parent | bb55111c209a9d3a6249cab35308a506b7f22d53 (diff) |
somewhat better name
Diffstat (limited to 'crates/ra_hir/src/ty/infer.rs')
-rw-r--r-- | crates/ra_hir/src/ty/infer.rs | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/crates/ra_hir/src/ty/infer.rs b/crates/ra_hir/src/ty/infer.rs index 6cc5dbc6f..6aa727ea1 100644 --- a/crates/ra_hir/src/ty/infer.rs +++ b/crates/ra_hir/src/ty/infer.rs | |||
@@ -610,23 +610,26 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> { | |||
610 | None => return (Ty::Unknown, None), | 610 | None => return (Ty::Unknown, None), |
611 | }; | 611 | }; |
612 | let resolver = &self.resolver; | 612 | let resolver = &self.resolver; |
613 | let typable: Option<TypableDef> = match resolver.resolve_path(self.db, &path).take_types() { | 613 | let typable: Option<TypableDef> = |
614 | Some(Resolution::Def(def)) => def.into(), | 614 | // FIXME: this should resolve assoc items as well, see this example: |
615 | Some(Resolution::LocalBinding(..)) => { | 615 | // https://play.rust-lang.org/?gist=087992e9e22495446c01c0d4e2d69521 |
616 | // this cannot happen | 616 | match resolver.resolve_path_without_assoc_items(self.db, &path).take_types() { |
617 | log::error!("path resolved to local binding in type ns"); | 617 | Some(Resolution::Def(def)) => def.into(), |
618 | return (Ty::Unknown, None); | 618 | Some(Resolution::LocalBinding(..)) => { |
619 | } | 619 | // this cannot happen |
620 | Some(Resolution::GenericParam(..)) => { | 620 | log::error!("path resolved to local binding in type ns"); |
621 | // generic params can't be used in struct literals | 621 | return (Ty::Unknown, None); |
622 | return (Ty::Unknown, None); | 622 | } |
623 | } | 623 | Some(Resolution::GenericParam(..)) => { |
624 | Some(Resolution::SelfType(..)) => { | 624 | // generic params can't be used in struct literals |
625 | // FIXME this is allowed in an impl for a struct, handle this | 625 | return (Ty::Unknown, None); |
626 | return (Ty::Unknown, None); | 626 | } |
627 | } | 627 | Some(Resolution::SelfType(..)) => { |
628 | None => return (Ty::Unknown, None), | 628 | // FIXME this is allowed in an impl for a struct, handle this |
629 | }; | 629 | return (Ty::Unknown, None); |
630 | } | ||
631 | None => return (Ty::Unknown, None), | ||
632 | }; | ||
630 | let def = match typable { | 633 | let def = match typable { |
631 | None => return (Ty::Unknown, None), | 634 | None => return (Ty::Unknown, None), |
632 | Some(it) => it, | 635 | Some(it) => it, |