Move PathResolution

This commit is contained in:
Aleksey Kladov 2020-03-05 11:08:31 +01:00
parent 7b6716e50e
commit 7d873fcfa1
3 changed files with 18 additions and 19 deletions

View file

@ -45,8 +45,7 @@ pub use crate::{
StructField, Trait, Type, TypeAlias, TypeParam, Union, VariantDef,
},
has_source::HasSource,
semantics::{original_range, Semantics, SemanticsScope},
source_analyzer::PathResolution,
semantics::{original_range, PathResolution, Semantics, SemanticsScope},
};
pub use hir_def::{

View file

@ -20,10 +20,23 @@ use crate::{
db::HirDatabase,
semantics::source_to_def::{ChildContainer, SourceToDefCache, SourceToDefCtx},
source_analyzer::{resolve_hir_path, SourceAnalyzer},
Function, HirFileId, InFile, Local, MacroDef, Module, ModuleDef, Name, Origin, Path,
PathResolution, ScopeDef, StructField, Trait, Type, TypeParam, VariantDef,
AssocItem, Function, HirFileId, ImplDef, InFile, Local, MacroDef, Module, ModuleDef, Name,
Origin, Path, ScopeDef, StructField, Trait, Type, TypeParam, VariantDef,
};
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum PathResolution {
/// An item
Def(ModuleDef),
/// A local binding (only value namespace)
Local(Local),
/// A generic parameter
TypeParam(TypeParam),
SelfType(ImplDef),
Macro(MacroDef),
AssocItem(AssocItem),
}
/// Primary API to get semantic information, like types, from syntax trees.
pub struct Semantics<'db, DB> {
pub db: &'db DB,

View file

@ -24,8 +24,8 @@ use ra_syntax::{
};
use crate::{
db::HirDatabase, Adt, Const, EnumVariant, Function, Local, MacroDef, ModPath, ModuleDef, Path,
PathKind, Static, Struct, Trait, Type, TypeAlias, TypeParam,
db::HirDatabase, semantics::PathResolution, Adt, Const, EnumVariant, Function, Local, MacroDef,
ModPath, ModuleDef, Path, PathKind, Static, Struct, Trait, Type, TypeAlias, TypeParam,
};
/// `SourceAnalyzer` is a convenience wrapper which exposes HIR API in terms of
@ -40,19 +40,6 @@ pub(crate) struct SourceAnalyzer {
scopes: Option<Arc<ExprScopes>>,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum PathResolution {
/// An item
Def(crate::ModuleDef),
/// A local binding (only value namespace)
Local(Local),
/// A generic parameter
TypeParam(TypeParam),
SelfType(crate::ImplDef),
Macro(MacroDef),
AssocItem(crate::AssocItem),
}
impl SourceAnalyzer {
pub(crate) fn new_for_body(
db: &impl HirDatabase,