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};
privacy_errors: Vec<PrivacyError<'a>>,
arenas: &'a ResolverArenas<'a>,
+ dummy_binding: &'a NameBinding<'a>,
}
pub struct ResolverArenas<'a> {
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,
+ }),
}
}
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};
// 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);
}