]> git.lizzy.rs Git - rust.git/commitdiff
Add field `dummy_binding` to `Resolver`.
authorJeffrey Seyfried <jeffrey.seyfried@gmail.com>
Mon, 22 Aug 2016 04:05:49 +0000 (04:05 +0000)
committerJeffrey Seyfried <jeffrey.seyfried@gmail.com>
Thu, 1 Sep 2016 22:29:30 +0000 (22:29 +0000)
src/librustc_resolve/lib.rs
src/librustc_resolve/resolve_imports.rs

index b17687e17575c907dbf60b5c5ed06b4d6e012845..124a748be326f2a70093941835ab73ccbbcba9a0 100644 (file)
@@ -65,7 +65,7 @@
 use syntax::ast::{Local, Mutability, Pat, PatKind, Path};
 use syntax::ast::{PathSegment, PathParameters, QSelf, TraitItemKind, TraitRef, Ty, TyKind};
 
-use syntax_pos::Span;
+use syntax_pos::{Span, DUMMY_SP};
 use errors::DiagnosticBuilder;
 
 use std::cell::{Cell, RefCell};
@@ -1052,6 +1052,7 @@ pub struct Resolver<'a> {
     privacy_errors: Vec<PrivacyError<'a>>,
 
     arenas: &'a ResolverArenas<'a>,
+    dummy_binding: &'a NameBinding<'a>,
 }
 
 pub struct ResolverArenas<'a> {
@@ -1203,6 +1204,11 @@ pub fn new(session: &'a Session, make_glob_map: MakeGlobMap, arenas: &'a Resolve
             privacy_errors: Vec::new(),
 
             arenas: arenas,
+            dummy_binding: arenas.alloc_name_binding(NameBinding {
+                kind: NameBindingKind::Def(Def::Err),
+                span: DUMMY_SP,
+                vis: ty::Visibility::Public,
+            }),
         }
     }
 
index a0aab53c58f0900dc6cff88015d1322ba56b6b33..f02e9b048dea76052705dbee6ad7339fea58581a 100644 (file)
@@ -27,7 +27,7 @@
 
 use syntax::ast::{NodeId, Name};
 use syntax::util::lev_distance::find_best_match_for_name;
-use syntax_pos::{Span, DUMMY_SP};
+use syntax_pos::Span;
 
 use std::cell::{Cell, RefCell};
 
@@ -442,13 +442,8 @@ fn resolve_imports(&mut self) {
     // failed resolution
     fn import_dummy_binding(&mut self, directive: &'b ImportDirective<'b>) {
         if let SingleImport { target, .. } = directive.subclass {
-            let dummy_binding = self.arenas.alloc_name_binding(NameBinding {
-                kind: NameBindingKind::Def(Def::Err),
-                span: DUMMY_SP,
-                vis: ty::Visibility::Public,
-            });
+            let dummy_binding = self.dummy_binding;
             let dummy_binding = self.import(dummy_binding, directive);
-
             let _ = self.try_define(directive.parent, target, ValueNS, dummy_binding.clone());
             let _ = self.try_define(directive.parent, target, TypeNS, dummy_binding);
         }