forked from rust-lang/rust
-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rollup merge of rust-lang#135390 - ranger-ross:readd-test-122638, r=BoxyUwU Re-added regression test for rust-lang#122638 Re-adds the test for rust-lang#122638 😄 fixes rust-lang#122638 r? `@BoxyUwU` (please let me know if this can be improved. I am still fairly new to using compiletest)
- Loading branch information
Showing
2 changed files
with
78 additions
and
0 deletions.
There are no files selected for viewing
18 changes: 18 additions & 0 deletions
18
tests/ui/const-generics/normalizing_with_unconstrained_impl_params.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
//! Regression test for <https://github.com/rust-lang/rust/issues/122638>. | ||
//@ check-fail | ||
#![feature(min_specialization)] | ||
impl<'a, T: std::fmt::Debug, const N: usize> Iterator for ConstChunksExact<'a, T, { N }> { | ||
//~^ ERROR not all trait items implemented, missing: `Item` [E0046] | ||
fn next(&mut self) -> Option<Self::Item> {} | ||
//~^ ERROR mismatched types [E0308] | ||
} | ||
struct ConstChunksExact<'a, T: '_, const assert: usize> {} | ||
//~^ ERROR `'_` cannot be used here [E0637] | ||
//~| ERROR lifetime parameter `'a` is never used [E0392] | ||
//~| ERROR type parameter `T` is never used [E0392] | ||
impl<'a, T: std::fmt::Debug, const N: usize> Iterator for ConstChunksExact<'a, T, {}> { | ||
//~^ ERROR mismatched types [E0308] | ||
//~| ERROR the const parameter `N` is not constrained by the impl trait, self type, or predicates [E0207] | ||
type Item = &'a [T; N]; } | ||
|
||
fn main() {} |
60 changes: 60 additions & 0 deletions
60
tests/ui/const-generics/normalizing_with_unconstrained_impl_params.stderr
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
error[E0637]: `'_` cannot be used here | ||
--> $DIR/normalizing_with_unconstrained_impl_params.rs:9:32 | ||
| | ||
LL | struct ConstChunksExact<'a, T: '_, const assert: usize> {} | ||
| ^^ `'_` is a reserved lifetime name | ||
|
||
error[E0308]: mismatched types | ||
--> $DIR/normalizing_with_unconstrained_impl_params.rs:13:83 | ||
| | ||
LL | impl<'a, T: std::fmt::Debug, const N: usize> Iterator for ConstChunksExact<'a, T, {}> { | ||
| ^^ expected `usize`, found `()` | ||
|
||
error[E0046]: not all trait items implemented, missing: `Item` | ||
--> $DIR/normalizing_with_unconstrained_impl_params.rs:4:1 | ||
| | ||
LL | impl<'a, T: std::fmt::Debug, const N: usize> Iterator for ConstChunksExact<'a, T, { N }> { | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `Item` in implementation | ||
| | ||
= help: implement the missing item: `type Item = /* Type */;` | ||
|
||
error[E0392]: lifetime parameter `'a` is never used | ||
--> $DIR/normalizing_with_unconstrained_impl_params.rs:9:25 | ||
| | ||
LL | struct ConstChunksExact<'a, T: '_, const assert: usize> {} | ||
| ^^ unused lifetime parameter | ||
| | ||
= help: consider removing `'a`, referring to it in a field, or using a marker such as `PhantomData` | ||
|
||
error[E0392]: type parameter `T` is never used | ||
--> $DIR/normalizing_with_unconstrained_impl_params.rs:9:29 | ||
| | ||
LL | struct ConstChunksExact<'a, T: '_, const assert: usize> {} | ||
| ^ unused type parameter | ||
| | ||
= help: consider removing `T`, referring to it in a field, or using a marker such as `PhantomData` | ||
|
||
error[E0207]: the const parameter `N` is not constrained by the impl trait, self type, or predicates | ||
--> $DIR/normalizing_with_unconstrained_impl_params.rs:13:30 | ||
| | ||
LL | impl<'a, T: std::fmt::Debug, const N: usize> Iterator for ConstChunksExact<'a, T, {}> { | ||
| ^^^^^^^^^^^^^^ unconstrained const parameter | ||
| | ||
= note: expressions using a const parameter must map each value to a distinct output value | ||
= note: proving the result of expressions other than the parameter are unique is not supported | ||
|
||
error[E0308]: mismatched types | ||
--> $DIR/normalizing_with_unconstrained_impl_params.rs:6:27 | ||
| | ||
LL | fn next(&mut self) -> Option<Self::Item> {} | ||
| ---- ^^^^^^^^^^^^^^^^^^ expected `Option<_>`, found `()` | ||
| | | ||
| implicitly returns `()` as its body has no tail or `return` expression | ||
| | ||
= note: expected enum `Option<_>` | ||
found unit type `()` | ||
|
||
error: aborting due to 7 previous errors | ||
|
||
Some errors have detailed explanations: E0046, E0207, E0308, E0392, E0637. | ||
For more information about an error, try `rustc --explain E0046`. |