resolve: add type IdentMap<T> alias.

This commit is contained in:
Mazdak Farrokhzad 2019-08-28 10:18:23 +02:00
parent 219ddde26b
commit f343e84f40

View File

@ -35,8 +35,10 @@ mod diagnostics;
type Res = def::Res<NodeId>; type Res = def::Res<NodeId>;
type IdentMap<T> = FxHashMap<Ident, T>;
/// Map from the name in a pattern to its binding mode. /// Map from the name in a pattern to its binding mode.
type BindingMap = FxHashMap<Ident, BindingInfo>; type BindingMap = IdentMap<BindingInfo>;
#[derive(Copy, Clone, Debug)] #[derive(Copy, Clone, Debug)]
struct BindingInfo { struct BindingInfo {
@ -143,7 +145,7 @@ impl RibKind<'_> {
/// resolving, the name is looked up from inside out. /// resolving, the name is looked up from inside out.
#[derive(Debug)] #[derive(Debug)]
crate struct Rib<'a, R = Res> { crate struct Rib<'a, R = Res> {
pub bindings: FxHashMap<Ident, R>, pub bindings: IdentMap<R>,
pub kind: RibKind<'a>, pub kind: RibKind<'a>,
} }
@ -1275,7 +1277,7 @@ impl<'a, 'b> LateResolutionVisitor<'a, '_> {
pat_id: NodeId, pat_id: NodeId,
outer_pat_id: NodeId, outer_pat_id: NodeId,
pat_src: PatternSource, pat_src: PatternSource,
bindings: &mut FxHashMap<Ident, NodeId>) bindings: &mut IdentMap<NodeId>)
-> Res { -> Res {
// Add the binding to the local ribs, if it // Add the binding to the local ribs, if it
// doesn't already exist in the bindings map. (We // doesn't already exist in the bindings map. (We
@ -1323,7 +1325,7 @@ impl<'a, 'b> LateResolutionVisitor<'a, '_> {
res res
} }
fn innermost_rib_bindings(&mut self, ns: Namespace) -> &mut FxHashMap<Ident, Res> { fn innermost_rib_bindings(&mut self, ns: Namespace) -> &mut IdentMap<Res> {
&mut self.ribs[ns].last_mut().unwrap().bindings &mut self.ribs[ns].last_mut().unwrap().bindings
} }
@ -1332,7 +1334,7 @@ impl<'a, 'b> LateResolutionVisitor<'a, '_> {
pat: &Pat, pat: &Pat,
pat_src: PatternSource, pat_src: PatternSource,
// Maps idents to the node ID for the outermost pattern that binds them. // Maps idents to the node ID for the outermost pattern that binds them.
bindings: &mut FxHashMap<Ident, NodeId>, bindings: &mut IdentMap<NodeId>,
) { ) {
// Visit all direct subpatterns of this pattern. // Visit all direct subpatterns of this pattern.
let outer_pat_id = pat.id; let outer_pat_id = pat.id;