commit
3138c7a8c4
3 changed files with 19 additions and 1 deletions
|
@ -1624,7 +1624,8 @@ impl<'a, 'tcx> Visitor<'tcx> for VarVisitor<'a, 'tcx> {
|
||||||
if_chain! {
|
if_chain! {
|
||||||
// a range index op
|
// a range index op
|
||||||
if let ExprMethodCall(ref meth, _, ref args) = expr.node;
|
if let ExprMethodCall(ref meth, _, ref args) = expr.node;
|
||||||
if meth.name == "index" || meth.name == "index_mut";
|
if (meth.name == "index" && match_trait_method(self.cx, expr, &paths::INDEX))
|
||||||
|
|| (meth.name == "index_mut" && match_trait_method(self.cx, expr, &paths::INDEX_MUT));
|
||||||
if !self.check(&args[1], &args[0], expr);
|
if !self.check(&args[1], &args[0], expr);
|
||||||
then { return }
|
then { return }
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,6 +33,8 @@ pub const HASH: [&str; 2] = ["hash", "Hash"];
|
||||||
pub const HASHMAP: [&str; 5] = ["std", "collections", "hash", "map", "HashMap"];
|
pub const HASHMAP: [&str; 5] = ["std", "collections", "hash", "map", "HashMap"];
|
||||||
pub const HASHMAP_ENTRY: [&str; 5] = ["std", "collections", "hash", "map", "Entry"];
|
pub const HASHMAP_ENTRY: [&str; 5] = ["std", "collections", "hash", "map", "Entry"];
|
||||||
pub const HASHSET: [&str; 5] = ["std", "collections", "hash", "set", "HashSet"];
|
pub const HASHSET: [&str; 5] = ["std", "collections", "hash", "set", "HashSet"];
|
||||||
|
pub const INDEX: [&str; 3] = ["core", "ops", "Index"];
|
||||||
|
pub const INDEX_MUT: [&str; 3] = ["core", "ops", "IndexMut"];
|
||||||
pub const INIT: [&str; 4] = ["core", "intrinsics", "", "init"];
|
pub const INIT: [&str; 4] = ["core", "intrinsics", "", "init"];
|
||||||
pub const INTO: [&str; 3] = ["core", "convert", "Into"];
|
pub const INTO: [&str; 3] = ["core", "convert", "Into"];
|
||||||
pub const INTO_ITERATOR: [&str; 4] = ["core", "iter", "traits", "IntoIterator"];
|
pub const INTO_ITERATOR: [&str; 4] = ["core", "iter", "traits", "IntoIterator"];
|
||||||
|
|
|
@ -556,3 +556,18 @@ pub fn manual_copy_same_destination(dst: &mut [i32], d: usize, s: usize) {
|
||||||
dst[d + i] = dst[s + i];
|
dst[d + i] = dst[s + i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mod issue_2496 {
|
||||||
|
pub trait Handle {
|
||||||
|
fn new_for_index(index: usize) -> Self;
|
||||||
|
fn index(&self) -> usize;
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn test<H: Handle>() -> H {
|
||||||
|
for x in 0..5 {
|
||||||
|
let next_handle = H::new_for_index(x);
|
||||||
|
println!("{}", next_handle.index());
|
||||||
|
}
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue