path::{ModPath, PathKind},
per_ns::PerNs,
visibility::{RawVisibility, Visibility},
- AdtId, AssocContainerId, ConstId, ContainerId, DefWithBodyId, EnumId, EnumVariantId,
- FunctionId, GenericDefId, HasModule, ImplId, LocalModuleId, Lookup, ModuleDefId, ModuleId,
- StaticId, StructId, TraitId, TypeAliasId, TypeParamId, VariantId,
+ AdtId, AssocContainerId, ConstId, ConstParamId, ContainerId, DefWithBodyId, EnumId,
+ EnumVariantId, FunctionId, GenericDefId, HasModule, ImplId, LocalModuleId, Lookup, ModuleDefId,
+ ModuleId, StaticId, StructId, TraitId, TypeAliasId, TypeParamId, VariantId,
};
#[derive(Debug, Clone, Default)]
StaticId(StaticId),
StructId(StructId),
EnumVariantId(EnumVariantId),
+ GenericParam(ConstParamId),
}
impl Resolver {
}
Scope::GenericParams { params, def } => {
- if let Some(local_id) = params.find_by_name(first_name) {
+ if let Some(local_id) = params.find_type_by_name(first_name) {
let idx = if path.segments.len() == 1 { None } else { Some(1) };
return Some((
TypeNs::GenericParam(TypeParamId { local_id, parent: *def }),
Scope::ExprScope(_) => continue,
Scope::GenericParams { params, def } if n_segments > 1 => {
- if let Some(local_id) = params.find_by_name(first_name) {
+ if let Some(local_id) = params.find_type_by_name(first_name) {
let ty = TypeNs::GenericParam(TypeParamId { local_id, parent: *def });
return Some(ResolveValueResult::Partial(ty, 1));
}
}
+ Scope::GenericParams { params, def } if n_segments == 1 => {
+ if let Some(local_id) = params.find_const_by_name(first_name) {
+ let val = ValueNs::GenericParam(ConstParamId { local_id, parent: *def });
+ return Some(ResolveValueResult::ValueNs(val));
+ }
+ }
Scope::GenericParams { .. } => continue,
Scope::ImplDefScope(impl_) => {