Skip to content

Commit 96dfe52

Browse files
committed
improve tests
1 parent 322f121 commit 96dfe52

File tree

3 files changed

+27
-17
lines changed

3 files changed

+27
-17
lines changed

tests/ui/useless_conversion.fixed

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -194,13 +194,14 @@ mod issue11300 {
194194
assert_eq!(i.len(), 3);
195195
}
196196

197-
trait Helper {}
198-
impl Helper for [i32; 3] {}
199-
impl Helper for std::array::IntoIter<i32, 3> {}
197+
trait Helper<T: ?Sized> {}
198+
impl Helper<i32> for [i32; 3] {}
199+
impl Helper<i32> for std::array::IntoIter<i32, 3> {}
200+
impl Helper<()> for std::array::IntoIter<i32, 3> {}
200201

201-
fn foo2<I>(_: I)
202+
fn foo2<X: ?Sized, I>(_: I)
202203
where
203-
I: IntoIterator<Item = i32> + Helper,
204+
I: IntoIterator<Item = i32> + Helper<X>,
204205
{
205206
}
206207

@@ -211,7 +212,11 @@ mod issue11300 {
211212
foo([1, 2, 3].into_iter());
212213

213214
// This should trigger the lint, receiver type [i32; 3] also implements `Helper`
214-
foo2([1, 2, 3]);
215+
foo2::<i32, _>([1, 2, 3]);
216+
217+
// This again should *not* lint, since X = () and I = std::array::IntoIter<i32, 3>,
218+
// and `[i32; 3]: Helper<()>` is not true (only `std::array::IntoIter<i32, 3>: Helper<()>` is).
219+
foo2::<(), _>([1, 2, 3].into_iter());
215220
}
216221
}
217222

tests/ui/useless_conversion.rs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -194,13 +194,14 @@ mod issue11300 {
194194
assert_eq!(i.len(), 3);
195195
}
196196

197-
trait Helper {}
198-
impl Helper for [i32; 3] {}
199-
impl Helper for std::array::IntoIter<i32, 3> {}
197+
trait Helper<T: ?Sized> {}
198+
impl Helper<i32> for [i32; 3] {}
199+
impl Helper<i32> for std::array::IntoIter<i32, 3> {}
200+
impl Helper<()> for std::array::IntoIter<i32, 3> {}
200201

201-
fn foo2<I>(_: I)
202+
fn foo2<X: ?Sized, I>(_: I)
202203
where
203-
I: IntoIterator<Item = i32> + Helper,
204+
I: IntoIterator<Item = i32> + Helper<X>,
204205
{
205206
}
206207

@@ -211,7 +212,11 @@ mod issue11300 {
211212
foo([1, 2, 3].into_iter());
212213

213214
// This should trigger the lint, receiver type [i32; 3] also implements `Helper`
214-
foo2([1, 2, 3].into_iter());
215+
foo2::<i32, _>([1, 2, 3].into_iter());
216+
217+
// This again should *not* lint, since X = () and I = std::array::IntoIter<i32, 3>,
218+
// and `[i32; 3]: Helper<()>` is not true (only `std::array::IntoIter<i32, 3>: Helper<()>` is).
219+
foo2::<(), _>([1, 2, 3].into_iter());
215220
}
216221
}
217222

tests/ui/useless_conversion.stderr

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -179,15 +179,15 @@ LL | fn b<T: IntoIterator<Item = i32>>(_: T) {}
179179
| ^^^^^^^^^^^^^^^^^^^^^^^^
180180

181181
error: explicit call to `.into_iter()` in function argument accepting `IntoIterator`
182-
--> $DIR/useless_conversion.rs:214:14
182+
--> $DIR/useless_conversion.rs:215:24
183183
|
184-
LL | foo2([1, 2, 3].into_iter());
185-
| ^^^^^^^^^^^^^^^^^^^^^ help: consider removing the `.into_iter()`: `[1, 2, 3]`
184+
LL | foo2::<i32, _>([1, 2, 3].into_iter());
185+
| ^^^^^^^^^^^^^^^^^^^^^ help: consider removing the `.into_iter()`: `[1, 2, 3]`
186186
|
187187
note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()`
188-
--> $DIR/useless_conversion.rs:203:12
188+
--> $DIR/useless_conversion.rs:204:12
189189
|
190-
LL | I: IntoIterator<Item = i32> + Helper,
190+
LL | I: IntoIterator<Item = i32> + Helper<X>,
191191
| ^^^^^^^^^^^^^^^^^^^^^^^^
192192

193193
error: aborting due to 25 previous errors

0 commit comments

Comments
 (0)