diff options
| author | León Orell Valerian Liehr <me@fmease.dev> | 2024-04-13 17:07:02 +0200 |
|---|---|---|
| committer | León Orell Valerian Liehr <me@fmease.dev> | 2024-04-13 17:07:02 +0200 |
| commit | dfbdce01e186bfb81a120f5256f429e5d74066e5 (patch) | |
| tree | cad9e1212b62d3cc4c0e54ef6ec2420170ae8c95 /tests/ui/generic-const-items | |
| parent | 05ccc49a4412a23a7afa1226804bb44558fb15b0 (diff) | |
| download | rust-dfbdce01e186bfb81a120f5256f429e5d74066e5.tar.gz rust-dfbdce01e186bfb81a120f5256f429e5d74066e5.zip | |
Check regions earlier when comparing impl with trait item def
Diffstat (limited to 'tests/ui/generic-const-items')
| -rw-r--r-- | tests/ui/generic-const-items/compare-impl-item.rs | 11 | ||||
| -rw-r--r-- | tests/ui/generic-const-items/compare-impl-item.stderr | 35 |
2 files changed, 29 insertions, 17 deletions
diff --git a/tests/ui/generic-const-items/compare-impl-item.rs b/tests/ui/generic-const-items/compare-impl-item.rs index 01e4477c698..21c958a0abe 100644 --- a/tests/ui/generic-const-items/compare-impl-item.rs +++ b/tests/ui/generic-const-items/compare-impl-item.rs @@ -6,9 +6,10 @@ trait Trait<P> { const B<const K: u64, const Q: u64>: u64; const C<T>: T; const D<const N: usize>: usize; + const E<'a>: &'a (); - const E: usize; - const F<T: PartialEq>: (); + const F: usize; + const G<T: PartialEq>: (); } impl<P> Trait<P> for () { @@ -20,11 +21,13 @@ impl<P> Trait<P> for () { //~^ ERROR const `C` has 0 type parameters but its trait declaration has 1 type parameter const D<const N: u16>: u16 = N; //~^ ERROR const `D` has an incompatible generic parameter for trait `Trait` + const E: &'static () = &(); + //~^ ERROR lifetime parameters or bounds on const `E` do not match the trait declaration - const E: usize = 1024 + const F: usize = 1024 where P: Copy; //~ ERROR impl has stricter requirements than trait - const F<T: Eq>: () = (); //~ ERROR impl has stricter requirements than trait + const G<T: Eq>: () = (); //~ ERROR impl has stricter requirements than trait } fn main() {} diff --git a/tests/ui/generic-const-items/compare-impl-item.stderr b/tests/ui/generic-const-items/compare-impl-item.stderr index 8610d8cba00..3bf28e9da60 100644 --- a/tests/ui/generic-const-items/compare-impl-item.stderr +++ b/tests/ui/generic-const-items/compare-impl-item.stderr @@ -1,5 +1,5 @@ error[E0049]: const `A` has 1 type parameter but its trait declaration has 0 type parameters - --> $DIR/compare-impl-item.rs:15:13 + --> $DIR/compare-impl-item.rs:16:13 | LL | const A: (); | - expected 0 type parameters @@ -8,7 +8,7 @@ LL | const A<T>: () = (); | ^ found 1 type parameter error[E0049]: const `B` has 1 const parameter but its trait declaration has 2 const parameters - --> $DIR/compare-impl-item.rs:17:13 + --> $DIR/compare-impl-item.rs:18:13 | LL | const B<const K: u64, const Q: u64>: u64; | ------------ ------------ @@ -19,7 +19,7 @@ LL | const B<const K: u64>: u64 = 0; | ^^^^^^^^^^^^ found 1 const parameter error[E0049]: const `C` has 0 type parameters but its trait declaration has 1 type parameter - --> $DIR/compare-impl-item.rs:19:13 + --> $DIR/compare-impl-item.rs:20:13 | LL | const C<T>: T; | - expected 1 type parameter @@ -28,7 +28,7 @@ LL | const C<'a>: &'a str = ""; | ^^ found 0 type parameters error[E0053]: const `D` has an incompatible generic parameter for trait `Trait` - --> $DIR/compare-impl-item.rs:21:13 + --> $DIR/compare-impl-item.rs:22:13 | LL | trait Trait<P> { | ----- @@ -42,25 +42,34 @@ LL | impl<P> Trait<P> for () { LL | const D<const N: u16>: u16 = N; | ^^^^^^^^^^^^ found const parameter of type `u16` +error[E0195]: lifetime parameters or bounds on const `E` do not match the trait declaration + --> $DIR/compare-impl-item.rs:24:12 + | +LL | const E<'a>: &'a (); + | ---- lifetimes in impl do not match this const in trait +... +LL | const E: &'static () = &(); + | ^ lifetimes do not match const in trait + error[E0276]: impl has stricter requirements than trait - --> $DIR/compare-impl-item.rs:26:12 + --> $DIR/compare-impl-item.rs:29:12 | -LL | const E: usize; - | -------------- definition of `E` from trait +LL | const F: usize; + | -------------- definition of `F` from trait ... LL | P: Copy; | ^^^^ impl has extra requirement `P: Copy` error[E0276]: impl has stricter requirements than trait - --> $DIR/compare-impl-item.rs:27:16 + --> $DIR/compare-impl-item.rs:30:16 | -LL | const F<T: PartialEq>: (); - | ------------------------- definition of `F` from trait +LL | const G<T: PartialEq>: (); + | ------------------------- definition of `G` from trait ... -LL | const F<T: Eq>: () = (); +LL | const G<T: Eq>: () = (); | ^^ impl has extra requirement `T: Eq` -error: aborting due to 6 previous errors +error: aborting due to 7 previous errors -Some errors have detailed explanations: E0049, E0053, E0276. +Some errors have detailed explanations: E0049, E0053, E0195, E0276. For more information about an error, try `rustc --explain E0049`. |
