Skip to content

Commit

Permalink
Unrolled build for rust-lang#123348
Browse files Browse the repository at this point in the history
Rollup merge of rust-lang#123348 - fmease:add-synth-auto-trait-impls-tests, r=GuillaumeGomez

rustdoc: add a couple of regression tests

Fixes rust-lang#114657.
Fixes rust-lang#112828.
Fixes rust-lang#107715.

r? rustdoc
  • Loading branch information
rust-timer committed Apr 2, 2024
2 parents a77322c + 5ee4d13 commit 4d28bdd
Show file tree
Hide file tree
Showing 5 changed files with 85 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -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]>,
}
Original file line number Diff line number Diff line change
@@ -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
}
Original file line number Diff line number Diff line change
@@ -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`.
Original file line number Diff line number Diff line change
@@ -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 {}
Original file line number Diff line number Diff line change
@@ -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`.

0 comments on commit 4d28bdd

Please sign in to comment.