rustdoc: add a couple of regression tests

This commit is contained in:
León Orell Valerian Liehr 2024-04-02 18:37:01 +02:00
parent a3cfa031fa
commit 5ee4d13709
No known key found for this signature in database
GPG Key ID: D17A07215F68E713
5 changed files with 85 additions and 0 deletions

View File

@ -0,0 +1,23 @@
// We used to ICE here while trying to synthesize auto trait impls.
// issue: 107715
//@ check-pass
pub const N: usize = 1;
pub struct MapType<K: Supertrait<V>, V> {
_array: K::Array,
}
pub trait Subtrait: Supertrait<[u8; N]> {}
pub trait Supertrait<V> {
type Array: AnotherTrait<V>;
}
pub trait AnotherTrait<V> {
const LENGTH: usize;
}
pub struct Container<S: Subtrait> {
_x: MapType<S, [u8; N]>,
}

View File

@ -0,0 +1,18 @@
// We used to ICE here while trying to synthesize auto trait impls.
// issue: 114657
pub trait Foo {
type FooType;
}
pub trait Bar<const A: usize>: Foo<FooType = <Self as Bar<A>>::BarType> {
type BarType;
}
pub(crate) const B: usize = 5;
pub trait Tec: Bar<B> {}
pub struct Structure<C: Tec> { //~ ERROR the trait bound `C: Bar<5>` is not satisfied
_field: C::BarType, //~ ERROR the trait bound `C: Bar<5>` is not satisfied
}

View File

@ -0,0 +1,25 @@
error[E0277]: the trait bound `C: Bar<5>` is not satisfied
--> $DIR/projections-in-super-trait-bound-unsatisfied.rs:16:1
|
LL | pub struct Structure<C: Tec> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Bar<5>` is not implemented for `C`
|
help: consider further restricting this bound
|
LL | pub struct Structure<C: Tec + Bar<5>> {
| ++++++++
error[E0277]: the trait bound `C: Bar<5>` is not satisfied
--> $DIR/projections-in-super-trait-bound-unsatisfied.rs:17:13
|
LL | _field: C::BarType,
| ^^^^^^^^^^ the trait `Bar<5>` is not implemented for `C`
|
help: consider further restricting this bound
|
LL | pub struct Structure<C: Tec + Bar<5>> {
| ++++++++
error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0277`.

View File

@ -0,0 +1,10 @@
// We used to ICE here while trying to synthesize auto trait impls.
// issue: 112828
struct Outer(Inner);
struct Inner;
unsafe impl<Q: Trait> Send for Inner {}
//~^ ERROR the type parameter `Q` is not constrained by the impl trait, self type, or predicates
trait Trait {}

View File

@ -0,0 +1,9 @@
error[E0207]: the type parameter `Q` is not constrained by the impl trait, self type, or predicates
--> $DIR/unconstrained-param-in-impl-ambiguity.rs:7:13
|
LL | unsafe impl<Q: Trait> Send for Inner {}
| ^ unconstrained type parameter
error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0207`.