提交 d2d21446 编写于 作者: J Jeffrey Seyfried

Refactor away NameSearchType

上级 1fcde2bd
......@@ -44,7 +44,6 @@
use self::UseLexicalScopeFlag::*;
use self::ModulePrefixResult::*;
use self::AssocItemResolveResult::*;
use self::NameSearchType::*;
use self::BareIdentifierPatternResolution::*;
use self::ParentLink::*;
use self::FallbackChecks::*;
......@@ -784,16 +783,6 @@ enum AssocItemResolveResult {
ResolveAttempt(Option<PathResolution>),
}
#[derive(Copy, Clone, PartialEq)]
enum NameSearchType {
/// We're doing a name search in order to resolve a `use` directive.
ImportSearch,
/// We're doing a name search in order to resolve a path type, a path
/// expression, or a path pattern.
PathSearch,
}
#[derive(Copy, Clone)]
enum BareIdentifierPatternResolution {
FoundStructOrEnumVariant(Def, LastPrivate),
......@@ -1370,7 +1359,6 @@ fn resolve_module_path_from_root(&mut self,
module_path: &[Name],
index: usize,
span: Span,
name_search_type: NameSearchType,
lp: LastPrivate)
-> ResolveResult<(Module<'a>, LastPrivate)> {
fn search_parent_externals<'a>(needle: Name, module: Module<'a>)
......@@ -1396,11 +1384,7 @@ fn search_parent_externals<'a>(needle: Name, module: Module<'a>)
// modules as we go.
while index < module_path_len {
let name = module_path[index];
match self.resolve_name_in_module(search_module,
name,
TypeNS,
name_search_type,
false) {
match self.resolve_name_in_module(search_module, name, TypeNS, false) {
Failed(None) => {
let segment_name = name.as_str();
let module_name = module_to_string(search_module);
......@@ -1477,8 +1461,7 @@ fn resolve_module_path(&mut self,
module_: Module<'a>,
module_path: &[Name],
use_lexical_scope: UseLexicalScopeFlag,
span: Span,
name_search_type: NameSearchType)
span: Span)
-> ResolveResult<(Module<'a>, LastPrivate)> {
let module_path_len = module_path.len();
assert!(module_path_len > 0);
......@@ -1559,7 +1542,6 @@ fn resolve_module_path(&mut self,
module_path,
start_index,
span,
name_search_type,
last_private)
}
......@@ -1658,11 +1640,7 @@ fn resolve_item_in_lexical_scope(&mut self,
}
// Resolve the name in the parent module.
match self.resolve_name_in_module(search_module,
name,
namespace,
PathSearch,
true) {
match self.resolve_name_in_module(search_module, name, namespace, true) {
Failed(Some((span, msg))) => {
resolve_error(self, span, ResolutionError::FailedToResolve(&*msg));
}
......@@ -1787,7 +1765,6 @@ fn resolve_name_in_module(&mut self,
module_: Module<'a>,
name: Name,
namespace: Namespace,
name_search_type: NameSearchType,
allow_private_imports: bool)
-> ResolveResult<(Target<'a>, bool)> {
debug!("(resolving name in module) resolving `{}` in `{}`",
......@@ -3167,11 +3144,7 @@ fn resolve_module_relative_path(&mut self,
let containing_module;
let last_private;
let current_module = self.current_module;
match self.resolve_module_path(current_module,
&module_path[..],
UseLexicalScope,
span,
PathSearch) {
match self.resolve_module_path(current_module, &module_path, UseLexicalScope, span) {
Failed(err) => {
let (span, msg) = match err {
Some((span, msg)) => (span, msg),
......@@ -3193,11 +3166,7 @@ fn resolve_module_relative_path(&mut self,
}
let name = segments.last().unwrap().identifier.name;
let def = match self.resolve_name_in_module(containing_module,
name,
namespace,
NameSearchType::PathSearch,
false) {
let def = match self.resolve_name_in_module(containing_module, name, namespace, false) {
Success((Target { binding, .. }, _)) => {
let (def, lp) = binding.def_and_lp();
(def, last_private.or(lp))
......@@ -3232,7 +3201,6 @@ fn resolve_crate_relative_path(&mut self,
&module_path[..],
0,
span,
PathSearch,
LastMod(AllPublic)) {
Failed(err) => {
let (span, msg) = match err {
......@@ -3257,11 +3225,7 @@ fn resolve_crate_relative_path(&mut self,
}
let name = segments.last().unwrap().identifier.name;
match self.resolve_name_in_module(containing_module,
name,
namespace,
NameSearchType::PathSearch,
false) {
match self.resolve_name_in_module(containing_module, name, namespace, false) {
Success((Target { binding, .. }, _)) => {
let (def, lp) = binding.def_and_lp();
Some((def, last_private.or(lp)))
......@@ -3303,7 +3267,6 @@ fn resolve_identifier_in_local_ribs(&mut self,
if let Success((target, _)) = self.resolve_name_in_module(module,
ident.unhygienic_name,
namespace,
PathSearch,
true) {
if let Some(def) = target.binding.def() {
return Some(LocalDef::from_def(def));
......@@ -3399,11 +3362,7 @@ fn get_module<'a, 'tcx>(this: &mut Resolver<'a, 'tcx>,
}
}
} else {
match this.resolve_module_path(root,
&name_path[..],
UseLexicalScope,
span,
PathSearch) {
match this.resolve_module_path(root, &name_path, UseLexicalScope, span) {
Success((module, _)) => Some(module),
_ => None,
}
......@@ -3649,10 +3608,9 @@ fn resolve_expr(&mut self, expr: &Expr) {
let current_module = self.current_module;
match self.resolve_module_path(current_module,
&name_path[..],
UseLexicalScope,
expr.span,
PathSearch) {
&name_path[..],
UseLexicalScope,
expr.span) {
Success(_) => {
context = UnresolvedNameContext::PathIsMod(expr.id);
},
......
......@@ -16,7 +16,6 @@
use {NameBindings, NameBinding};
use NamespaceResult::{BoundResult, UnboundResult, UnknownResult};
use NamespaceResult;
use NameSearchType;
use ResolveResult;
use Resolver;
use UseLexicalScopeFlag;
......@@ -321,8 +320,7 @@ fn resolve_import_for_module(&mut self,
match self.resolver.resolve_module_path(module_,
&module_path[..],
UseLexicalScopeFlag::DontUseLexicalScope,
import_directive.span,
NameSearchType::ImportSearch) {
import_directive.span) {
ResolveResult::Failed(err) => {
resolution_result = ResolveResult::Failed(err);
None
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册