From c9d8e1493c840a9901f7caecda26de1a8a48f754 Mon Sep 17 00:00:00 2001 From: Jeffrey Seyfried Date: Wed, 27 Apr 2016 01:13:15 +0000 Subject: [PATCH] Refactor field `span` of `NameBinding` from `Option` to `Span`. --- src/librustc_resolve/build_reduced_graph.rs | 4 ++-- src/librustc_resolve/lib.rs | 15 +++++++-------- src/librustc_resolve/resolve_imports.rs | 8 ++++---- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/librustc_resolve/build_reduced_graph.rs b/src/librustc_resolve/build_reduced_graph.rs index 6dfd3e00be8..6a8779d79db 100644 --- a/src/librustc_resolve/build_reduced_graph.rs +++ b/src/librustc_resolve/build_reduced_graph.rs @@ -48,13 +48,13 @@ trait ToNameBinding<'a> { impl<'a> ToNameBinding<'a> for (Module<'a>, Span, ty::Visibility) { 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) { 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 } } } diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index 16954f6bc97..a5831186c87 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -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 .resolve_name_in_lexical_scope(name, ValueNS) { if binding.is_import() { - err.span_note(binding.span.unwrap(), "constant imported here"); + err.span_note(binding.span, "constant imported here"); } } err @@ -900,7 +900,7 @@ impl<'a> fmt::Debug for ModuleS<'a> { #[derive(Clone, Debug)] pub struct NameBinding<'a> { kind: NameBindingKind<'a>, - span: Option, + span: Span, vis: ty::Visibility, } @@ -3293,7 +3293,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> { identifier: ident, parameters: params, }; - let span = name_binding.span.unwrap_or(syntax::codemap::DUMMY_SP); + let span = name_binding.span; let mut segms = path_segments.clone(); segms.push(segment); let segms = HirVec::from_vec(segms); @@ -3447,7 +3447,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> { binding: &NameBinding, old_binding: &NameBinding) { // 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); } @@ -3463,7 +3463,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> { false => ("defined", "definition"), }; - let span = binding.span.unwrap(); + let span = binding.span; let msg = { let kind = match (ns, old_binding.module()) { (ValueNS, _) => "a value", @@ -3488,9 +3488,8 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> { }, }; - let span = old_binding.span.unwrap(); - if span != codemap::DUMMY_SP { - err.span_note(span, &format!("previous {} of `{}` here", noun, name)); + if old_binding.span != codemap::DUMMY_SP { + err.span_note(old_binding.span, &format!("previous {} of `{}` here", noun, name)); } err.emit(); } diff --git a/src/librustc_resolve/resolve_imports.rs b/src/librustc_resolve/resolve_imports.rs index f335f145a10..4a87ffe820d 100644 --- a/src/librustc_resolve/resolve_imports.rs +++ b/src/librustc_resolve/resolve_imports.rs @@ -26,7 +26,7 @@ use rustc::hir::def::*; use syntax::ast::{NodeId, Name}; 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 std::cell::{Cell, RefCell}; @@ -76,7 +76,7 @@ impl<'a> ImportDirective<'a> { directive: self, privacy_error: privacy_error, }, - span: Some(self.span), + span: self.span, 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 { let dummy_binding = self.resolver.arenas.alloc_name_binding(NameBinding { kind: NameBindingKind::Def(Def::Err), - span: None, + span: DUMMY_SP, vis: ty::Visibility::Public, }); 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`", name); 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); } } }