Refactor field span
of NameBinding
from Option<Span>
to Span
.
This commit is contained in:
parent
c46164b626
commit
c9d8e1493c
3 changed files with 13 additions and 14 deletions
|
@ -48,13 +48,13 @@ trait ToNameBinding<'a> {
|
||||||
|
|
||||||
impl<'a> ToNameBinding<'a> for (Module<'a>, Span, ty::Visibility) {
|
impl<'a> ToNameBinding<'a> for (Module<'a>, Span, ty::Visibility) {
|
||||||
fn to_name_binding(self) -> NameBinding<'a> {
|
fn to_name_binding(self) -> NameBinding<'a> {
|
||||||
NameBinding { kind: NameBindingKind::Module(self.0), span: Some(self.1), vis: self.2 }
|
NameBinding { kind: NameBindingKind::Module(self.0), span: self.1, vis: self.2 }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> ToNameBinding<'a> for (Def, Span, ty::Visibility) {
|
impl<'a> ToNameBinding<'a> for (Def, Span, ty::Visibility) {
|
||||||
fn to_name_binding(self) -> NameBinding<'a> {
|
fn to_name_binding(self) -> NameBinding<'a> {
|
||||||
NameBinding { kind: NameBindingKind::Def(self.0), span: Some(self.1), vis: self.2 }
|
NameBinding { kind: NameBindingKind::Def(self.0), span: self.1, vis: self.2 }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -349,7 +349,7 @@ fn resolve_struct_error<'b, 'a: 'b, 'tcx: 'a>(resolver: &'b Resolver<'a, 'tcx>,
|
||||||
if let Some(binding) = resolver.current_module
|
if let Some(binding) = resolver.current_module
|
||||||
.resolve_name_in_lexical_scope(name, ValueNS) {
|
.resolve_name_in_lexical_scope(name, ValueNS) {
|
||||||
if binding.is_import() {
|
if binding.is_import() {
|
||||||
err.span_note(binding.span.unwrap(), "constant imported here");
|
err.span_note(binding.span, "constant imported here");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
err
|
err
|
||||||
|
@ -900,7 +900,7 @@ impl<'a> fmt::Debug for ModuleS<'a> {
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
pub struct NameBinding<'a> {
|
pub struct NameBinding<'a> {
|
||||||
kind: NameBindingKind<'a>,
|
kind: NameBindingKind<'a>,
|
||||||
span: Option<Span>,
|
span: Span,
|
||||||
vis: ty::Visibility,
|
vis: ty::Visibility,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3293,7 +3293,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
||||||
identifier: ident,
|
identifier: ident,
|
||||||
parameters: params,
|
parameters: params,
|
||||||
};
|
};
|
||||||
let span = name_binding.span.unwrap_or(syntax::codemap::DUMMY_SP);
|
let span = name_binding.span;
|
||||||
let mut segms = path_segments.clone();
|
let mut segms = path_segments.clone();
|
||||||
segms.push(segment);
|
segms.push(segment);
|
||||||
let segms = HirVec::from_vec(segms);
|
let segms = HirVec::from_vec(segms);
|
||||||
|
@ -3447,7 +3447,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
||||||
binding: &NameBinding,
|
binding: &NameBinding,
|
||||||
old_binding: &NameBinding) {
|
old_binding: &NameBinding) {
|
||||||
// Error on the second of two conflicting names
|
// Error on the second of two conflicting names
|
||||||
if old_binding.span.unwrap().lo > binding.span.unwrap().lo {
|
if old_binding.span.lo > binding.span.lo {
|
||||||
return self.report_conflict(parent, name, ns, old_binding, binding);
|
return self.report_conflict(parent, name, ns, old_binding, binding);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3463,7 +3463,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
||||||
false => ("defined", "definition"),
|
false => ("defined", "definition"),
|
||||||
};
|
};
|
||||||
|
|
||||||
let span = binding.span.unwrap();
|
let span = binding.span;
|
||||||
let msg = {
|
let msg = {
|
||||||
let kind = match (ns, old_binding.module()) {
|
let kind = match (ns, old_binding.module()) {
|
||||||
(ValueNS, _) => "a value",
|
(ValueNS, _) => "a value",
|
||||||
|
@ -3488,9 +3488,8 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
let span = old_binding.span.unwrap();
|
if old_binding.span != codemap::DUMMY_SP {
|
||||||
if span != codemap::DUMMY_SP {
|
err.span_note(old_binding.span, &format!("previous {} of `{}` here", noun, name));
|
||||||
err.span_note(span, &format!("previous {} of `{}` here", noun, name));
|
|
||||||
}
|
}
|
||||||
err.emit();
|
err.emit();
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@ use rustc::hir::def::*;
|
||||||
|
|
||||||
use syntax::ast::{NodeId, Name};
|
use syntax::ast::{NodeId, Name};
|
||||||
use syntax::attr::AttrMetaMethods;
|
use syntax::attr::AttrMetaMethods;
|
||||||
use syntax::codemap::Span;
|
use syntax::codemap::{Span, DUMMY_SP};
|
||||||
use syntax::util::lev_distance::find_best_match_for_name;
|
use syntax::util::lev_distance::find_best_match_for_name;
|
||||||
|
|
||||||
use std::cell::{Cell, RefCell};
|
use std::cell::{Cell, RefCell};
|
||||||
|
@ -76,7 +76,7 @@ impl<'a> ImportDirective<'a> {
|
||||||
directive: self,
|
directive: self,
|
||||||
privacy_error: privacy_error,
|
privacy_error: privacy_error,
|
||||||
},
|
},
|
||||||
span: Some(self.span),
|
span: self.span,
|
||||||
vis: self.vis,
|
vis: self.vis,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -412,7 +412,7 @@ impl<'a, 'b:'a, 'tcx:'b> ImportResolver<'a, 'b, 'tcx> {
|
||||||
if let SingleImport { target, .. } = e.import_directive.subclass {
|
if let SingleImport { target, .. } = e.import_directive.subclass {
|
||||||
let dummy_binding = self.resolver.arenas.alloc_name_binding(NameBinding {
|
let dummy_binding = self.resolver.arenas.alloc_name_binding(NameBinding {
|
||||||
kind: NameBindingKind::Def(Def::Err),
|
kind: NameBindingKind::Def(Def::Err),
|
||||||
span: None,
|
span: DUMMY_SP,
|
||||||
vis: ty::Visibility::Public,
|
vis: ty::Visibility::Public,
|
||||||
});
|
});
|
||||||
let dummy_binding = e.import_directive.import(dummy_binding, None);
|
let dummy_binding = e.import_directive.import(dummy_binding, None);
|
||||||
|
@ -696,7 +696,7 @@ impl<'a, 'b:'a, 'tcx:'b> ImportResolver<'a, 'b, 'tcx> {
|
||||||
(error E0364), consider declaring its enum as `pub`",
|
(error E0364), consider declaring its enum as `pub`",
|
||||||
name);
|
name);
|
||||||
let lint = lint::builtin::PRIVATE_IN_PUBLIC;
|
let lint = lint::builtin::PRIVATE_IN_PUBLIC;
|
||||||
self.resolver.session.add_lint(lint, directive.id, binding.span.unwrap(), msg);
|
self.resolver.session.add_lint(lint, directive.id, binding.span, msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue