Skip to content

Commit 428ef19

Browse files
committed
resolve (cleanup): Get rid of Option in PerNS
1 parent 17841cc commit 428ef19

File tree

2 files changed

+15
-14
lines changed

2 files changed

+15
-14
lines changed

src/librustc_resolve/build_reduced_graph.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use macros::{InvocationData, LegacyScope};
1717
use resolve_imports::ImportDirective;
1818
use resolve_imports::ImportDirectiveSubclass::{self, GlobImport, SingleImport};
1919
use {Module, ModuleData, ModuleKind, NameBinding, NameBindingKind, ToNameBinding};
20-
use {Resolver, ResolverArenas};
20+
use {PerNS, Resolver, ResolverArenas};
2121
use Namespace::{self, TypeNS, ValueNS, MacroNS};
2222
use {resolve_error, resolve_struct_error, ResolutionError};
2323

@@ -175,7 +175,11 @@ impl<'a> Resolver<'a> {
175175
let subclass = SingleImport {
176176
target: ident,
177177
source,
178-
result: self.per_ns(|_, _| Cell::new(Err(Undetermined))),
178+
result: PerNS {
179+
type_ns: Cell::new(Err(Undetermined)),
180+
value_ns: Cell::new(Err(Undetermined)),
181+
macro_ns: Cell::new(Err(Undetermined)),
182+
},
179183
type_ns_only,
180184
};
181185
self.add_import_directive(

src/librustc_resolve/lib.rs

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -700,7 +700,7 @@ pub enum Namespace {
700700
pub struct PerNS<T> {
701701
value_ns: T,
702702
type_ns: T,
703-
macro_ns: Option<T>,
703+
macro_ns: T,
704704
}
705705

706706
impl<T> ::std::ops::Index<Namespace> for PerNS<T> {
@@ -709,7 +709,7 @@ impl<T> ::std::ops::Index<Namespace> for PerNS<T> {
709709
match ns {
710710
ValueNS => &self.value_ns,
711711
TypeNS => &self.type_ns,
712-
MacroNS => self.macro_ns.as_ref().unwrap(),
712+
MacroNS => &self.macro_ns,
713713
}
714714
}
715715
}
@@ -719,7 +719,7 @@ impl<T> ::std::ops::IndexMut<Namespace> for PerNS<T> {
719719
match ns {
720720
ValueNS => &mut self.value_ns,
721721
TypeNS => &mut self.type_ns,
722-
MacroNS => self.macro_ns.as_mut().unwrap(),
722+
MacroNS => &mut self.macro_ns,
723723
}
724724
}
725725
}
@@ -1726,7 +1726,7 @@ impl<'a> Resolver<'a> {
17261726
ribs: PerNS {
17271727
value_ns: vec![Rib::new(ModuleRibKind(graph_root))],
17281728
type_ns: vec![Rib::new(ModuleRibKind(graph_root))],
1729-
macro_ns: Some(vec![Rib::new(ModuleRibKind(graph_root))]),
1729+
macro_ns: vec![Rib::new(ModuleRibKind(graph_root))],
17301730
},
17311731
label_ribs: Vec::new(),
17321732

@@ -1806,14 +1806,11 @@ impl<'a> Resolver<'a> {
18061806
}
18071807

18081808
/// Runs the function on each namespace.
1809-
fn per_ns<T, F: FnMut(&mut Self, Namespace) -> T>(&mut self, mut f: F) -> PerNS<T> {
1810-
PerNS {
1811-
type_ns: f(self, TypeNS),
1812-
value_ns: f(self, ValueNS),
1813-
macro_ns: match self.use_extern_macros {
1814-
true => Some(f(self, MacroNS)),
1815-
false => None,
1816-
},
1809+
fn per_ns<F: FnMut(&mut Self, Namespace)>(&mut self, mut f: F) {
1810+
f(self, TypeNS);
1811+
f(self, ValueNS);
1812+
if self.use_extern_macros {
1813+
f(self, MacroNS);
18171814
}
18181815
}
18191816

0 commit comments

Comments
 (0)