use namespaced consts for KnownName
This commit is contained in:
parent
944f71afc6
commit
741fc8fbfc
1 changed files with 10 additions and 12 deletions
|
@ -40,7 +40,7 @@ use crate::{
|
||||||
PatId, Statement, UnaryOp,
|
PatId, Statement, UnaryOp,
|
||||||
},
|
},
|
||||||
generics::{GenericParams, HasGenericParams},
|
generics::{GenericParams, HasGenericParams},
|
||||||
name::{INTO_ITERATOR, ITEM, ITER, SELF_TYPE, STD},
|
name,
|
||||||
nameres::{Namespace, PerNs},
|
nameres::{Namespace, PerNs},
|
||||||
path::{GenericArg, GenericArgs, PathKind, PathSegment},
|
path::{GenericArg, GenericArgs, PathKind, PathSegment},
|
||||||
resolve::{
|
resolve::{
|
||||||
|
@ -843,7 +843,7 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> {
|
||||||
// Parent arguments are unknown, except for the receiver type
|
// Parent arguments are unknown, except for the receiver type
|
||||||
if let Some(parent_generics) = def_generics.and_then(|p| p.parent_params.clone()) {
|
if let Some(parent_generics) = def_generics.and_then(|p| p.parent_params.clone()) {
|
||||||
for param in &parent_generics.params {
|
for param in &parent_generics.params {
|
||||||
if param.name == SELF_TYPE {
|
if param.name == name::SELF_TYPE {
|
||||||
substs.push(receiver_ty.clone());
|
substs.push(receiver_ty.clone());
|
||||||
} else {
|
} else {
|
||||||
substs.push(Ty::Unknown);
|
substs.push(Ty::Unknown);
|
||||||
|
@ -1362,35 +1362,33 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> {
|
||||||
let into_iter_path = Path {
|
let into_iter_path = Path {
|
||||||
kind: PathKind::Abs,
|
kind: PathKind::Abs,
|
||||||
segments: vec![
|
segments: vec![
|
||||||
PathSegment { name: STD, args_and_bindings: None },
|
PathSegment { name: name::STD, args_and_bindings: None },
|
||||||
PathSegment { name: ITER, args_and_bindings: None },
|
PathSegment { name: name::ITER, args_and_bindings: None },
|
||||||
PathSegment { name: INTO_ITERATOR, args_and_bindings: None },
|
PathSegment { name: name::INTO_ITERATOR, args_and_bindings: None },
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
match self.resolver.resolve_path_segments(self.db, &into_iter_path).into_fully_resolved() {
|
match self.resolver.resolve_path_segments(self.db, &into_iter_path).into_fully_resolved() {
|
||||||
PerNs { types: Some(Def(Trait(trait_))), .. } => {
|
PerNs { types: Some(Def(Trait(trait_))), .. } => {
|
||||||
Some(trait_.associated_type_by_name(self.db, ITEM)?)
|
Some(trait_.associated_type_by_name(self.db, name::ITEM)?)
|
||||||
}
|
}
|
||||||
_ => None,
|
_ => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn resolve_ops_try_ok(&self) -> Option<TypeAlias> {
|
fn resolve_ops_try_ok(&self) -> Option<TypeAlias> {
|
||||||
use crate::name::{OK, OPS, TRY};
|
|
||||||
|
|
||||||
let ops_try_path = Path {
|
let ops_try_path = Path {
|
||||||
kind: PathKind::Abs,
|
kind: PathKind::Abs,
|
||||||
segments: vec![
|
segments: vec![
|
||||||
PathSegment { name: STD, args_and_bindings: None },
|
PathSegment { name: name::STD, args_and_bindings: None },
|
||||||
PathSegment { name: OPS, args_and_bindings: None },
|
PathSegment { name: name::OPS, args_and_bindings: None },
|
||||||
PathSegment { name: TRY, args_and_bindings: None },
|
PathSegment { name: name::TRY, args_and_bindings: None },
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
match self.resolver.resolve_path_segments(self.db, &ops_try_path).into_fully_resolved() {
|
match self.resolver.resolve_path_segments(self.db, &ops_try_path).into_fully_resolved() {
|
||||||
PerNs { types: Some(Def(Trait(trait_))), .. } => {
|
PerNs { types: Some(Def(Trait(trait_))), .. } => {
|
||||||
Some(trait_.associated_type_by_name(self.db, OK)?)
|
Some(trait_.associated_type_by_name(self.db, name::OK)?)
|
||||||
}
|
}
|
||||||
_ => None,
|
_ => None,
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue