diff --git a/src/librustc/hir/mod.rs b/src/librustc/hir/mod.rs index 986f1b9e4196..39ec33eef1fe 100644 --- a/src/librustc/hir/mod.rs +++ b/src/librustc/hir/mod.rs @@ -244,23 +244,6 @@ impl Path { pub fn is_global(&self) -> bool { !self.segments.is_empty() && self.segments[0].name == keywords::CrateRoot.name() } - - /// Wether this path is any of `::std::ops::{Range, RangeTo, RangeFrom}`. - pub fn is_range(&self) -> bool { - let mut base = ["{{root}}", "std", "ops"].iter().map(|p| p.to_string()).collect::>(); - let range_paths = ["Range", "RangeTo", "RangeFrom"]; - let segments = self.segments.iter() - .map(|segment| format!("{}", segment.name)) - .collect::>(); - for path in &range_paths { - base.push(path.to_string()); - if base == segments { - return true; - } - base.pop(); - } - false - } } impl fmt::Debug for Path { diff --git a/src/librustc/traits/error_reporting.rs b/src/librustc/traits/error_reporting.rs index a8a8b20012b7..46e2c3af5e63 100644 --- a/src/librustc/traits/error_reporting.rs +++ b/src/librustc/traits/error_reporting.rs @@ -832,17 +832,11 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> { let parent_node = self.tcx.hir.get_parent_node(node_id); if let Some(hir::map::NodeLocal(ref local)) = self.tcx.hir.find(parent_node) { if let Some(ref expr) = local.init { - if let hir::ExprIndex(_, ref index) = expr.node { - if let hir::ExprStruct(hir::QPath::Resolved(None, ref path), - ..) = index.node { - if let (Ok(snippet), true) = ( - self.tcx.sess.codemap().span_to_snippet(expr.span), - path.is_range() - ) { - err.span_suggestion(expr.span, - "consider a slice instead", - format!("&{}", snippet)); - } + if let hir::ExprIndex(_, _) = expr.node { + if let Ok(snippet) = self.tcx.sess.codemap().span_to_snippet(expr.span) { + err.span_suggestion(expr.span, + "consider a slice instead", + format!("&{}", snippet)); } } } diff --git a/src/test/ui/suggestions/str-array-assignment.rs b/src/test/ui/suggestions/str-array-assignment.rs index 52b39d390d62..adec495e72a9 100644 --- a/src/test/ui/suggestions/str-array-assignment.rs +++ b/src/test/ui/suggestions/str-array-assignment.rs @@ -20,7 +20,7 @@ fn main() { //~ NOTE expected `()` because of default return type //~| NOTE expected type let v = s[..2]; //~^ ERROR the trait bound `str: std::marker::Sized` is not satisfied - //~| NOTE consider a slice instead + //~| HELP consider a slice instead //~| NOTE `str` does not have a constant size known at compile-time //~| HELP the trait `std::marker::Sized` is not implemented for `str` //~| NOTE all local variables must have a statically known size