Skip to content

Commit

Permalink
Rollup merge of #130173 - fmease:rustdoc-regression-tests, r=notriddle
Browse files Browse the repository at this point in the history
rustdoc: add two regression tests

They were basically copy/pasted from `tests/ui/` to `tests/rustdoc-ui/`.
Not sure if it's worth adding these, I can just close these issues as is if you want.

This brings the number of https://github.com/rust-lang/rust/labels/T-rustdoc + https://github.com/rust-lang/rust/labels/E-needs-test from 3 down to 1.
The remaining one – #103004 — is a nasty one to retroactively find a proper(!) test for.

Fixes #98250.
Fixes #107872.

r? rustdoc
  • Loading branch information
matthiaskrgr authored Sep 10, 2024
2 parents 34c935b + 6d61dfd commit a204f87
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 0 deletions.
14 changes: 14 additions & 0 deletions tests/rustdoc-ui/projection-as-union-type-error.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// Test to ensure that there is no ICE when normalizing a projection.
// See also <https://github.com/rust-lang/rust/pull/106938>.
// issue: rust-lang/rust#107872

pub trait Identity {
type Identity;
}

pub type Foo = u8;

pub union Bar {
a: <Foo as Identity>::Identity, //~ ERROR the trait bound `u8: Identity` is not satisfied
b: u8,
}
15 changes: 15 additions & 0 deletions tests/rustdoc-ui/projection-as-union-type-error.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
error[E0277]: the trait bound `u8: Identity` is not satisfied
--> $DIR/projection-as-union-type-error.rs:12:9
|
LL | a: <Foo as Identity>::Identity,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Identity` is not implemented for `u8`
|
help: this trait has no implementations, consider adding one
--> $DIR/projection-as-union-type-error.rs:5:1
|
LL | pub trait Identity {
| ^^^^^^^^^^^^^^^^^^

error: aborting due to 1 previous error

For more information about this error, try `rustc --explain E0277`.
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// issue: rust-lang/rust#98250
//@ check-pass

#![feature(type_alias_impl_trait)]

mod foo {
pub type Foo = impl PartialEq<(Foo, i32)>;

fn foo() -> Foo {
super::Bar
}
}
use foo::Foo;

struct Bar;

impl PartialEq<(Foo, i32)> for Bar {
fn eq(&self, _other: &(Foo, i32)) -> bool {
true
}
}

fn main() {}

0 comments on commit a204f87

Please sign in to comment.