From 62d01dd4dfc8feb52c006b84f9d1a1a7142cc060 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sat, 13 Apr 2019 11:00:15 +0300 Subject: hide resolver --- crates/ra_hir/src/source_binder.rs | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'crates/ra_hir/src') diff --git a/crates/ra_hir/src/source_binder.rs b/crates/ra_hir/src/source_binder.rs index d87f8ff34..b5e2f86be 100644 --- a/crates/ra_hir/src/source_binder.rs +++ b/crates/ra_hir/src/source_binder.rs @@ -7,7 +7,7 @@ /// purely for "IDE needs". use std::sync::Arc; -use rustc_hash::FxHashSet; +use rustc_hash::{FxHashSet, FxHashMap}; use ra_db::{FileId, FilePosition}; use ra_syntax::{ SyntaxNode, AstPtr, TextUnit, SyntaxNodePtr, @@ -17,7 +17,7 @@ use ra_syntax::{ }; use crate::{ - HirDatabase, Function, Struct, Enum, Const, Static, Either, DefWithBody, + HirDatabase, Function, Struct, Enum, Const, Static, Either, DefWithBody, PerNs, Name, AsName, Module, HirFileId, Crate, Trait, Resolver, expr::{BodySourceMap, scope::{ReferenceDescriptor, ScopeEntryWithSyntax, ScopeId, ExprScopes}}, ids::LocationCtx, @@ -222,10 +222,6 @@ impl SourceAnalyzer { } } - pub fn resolver(&self) -> &Resolver { - &self.resolver - } - pub fn type_of(&self, _db: &impl HirDatabase, expr: &ast::Expr) -> Option { let expr_id = self.body_source_map.as_ref()?.node_expr(expr)?; Some(self.infer.as_ref()?[expr_id].clone()) @@ -246,6 +242,18 @@ impl SourceAnalyzer { self.infer.as_ref()?.field_resolution(expr_id) } + pub fn resolve_hir_path( + &self, + db: &impl HirDatabase, + path: &crate::Path, + ) -> PerNs { + self.resolver.resolve_path(db, path) + } + + pub fn all_names(&self, db: &impl HirDatabase) -> FxHashMap> { + self.resolver.all_names(db) + } + pub fn resolve_path(&self, db: &impl HirDatabase, path: &ast::Path) -> Option { if let Some(path_expr) = path.syntax().parent().and_then(ast::PathExpr::cast) { let expr_id = self.body_source_map.as_ref()?.node_expr(path_expr.into())?; -- cgit v1.2.3