Skip to content

Commit d3d0ae7

Browse files
authoredFeb 21, 2024
Rollup merge of rust-lang#121406 - compiler-errors:tests, r=Nilstrieb
Add a couple tests Fixes rust-lang#119857 Fixes rust-lang#115497
2 parents 54d6ba1 + f8fbb70 commit d3d0ae7

File tree

4 files changed

+87
-0
lines changed

4 files changed

+87
-0
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#![feature(associated_type_bounds)]
2+
3+
// Test for <https://github.com/rust-lang/rust/issues/119857>.
4+
5+
pub trait Iter {
6+
type Item<'a>: 'a where Self: 'a;
7+
8+
fn next<'a>(&'a mut self) -> Option<Self::Item<'a, As1: Copy>>;
9+
//~^ ERROR associated type bindings are not allowed here
10+
}
11+
12+
impl Iter for () {
13+
type Item<'a> = &'a mut [()];
14+
15+
fn next<'a>(&'a mut self) -> Option<Self::Item<'a>> { None }
16+
}
17+
18+
fn main() {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
error[E0229]: associated type bindings are not allowed here
2+
--> $DIR/no-gat-position.rs:8:56
3+
|
4+
LL | fn next<'a>(&'a mut self) -> Option<Self::Item<'a, As1: Copy>>;
5+
| ^^^^^^^^^ associated type not allowed here
6+
7+
error: aborting due to 1 previous error
8+
9+
For more information about this error, try `rustc --explain E0229`.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#![feature(generic_const_exprs)]
2+
//~^ WARN the feature `generic_const_exprs` is incomplete
3+
#![feature(non_lifetime_binders)]
4+
//~^ WARN the feature `non_lifetime_binders` is incomplete
5+
6+
// Test for <https://github.com/rust-lang/rust/issues/115497>,
7+
// which originally relied on associated_type_bounds, but was
8+
// minimized away from that.
9+
10+
trait TraitA {
11+
type AsA;
12+
}
13+
trait TraitB {
14+
type AsB;
15+
}
16+
trait TraitC {}
17+
18+
fn foo<T>()
19+
where
20+
for<const N: u8 = { T::A }> T: TraitA<AsA = impl TraitB<AsB = impl TraitC>>,
21+
//~^ ERROR defaults for generic parameters are not allowed in `for<...>` binders
22+
//~| ERROR `impl Trait` is not allowed in bounds
23+
{
24+
}
25+
26+
fn main() {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
warning: the feature `generic_const_exprs` is incomplete and may not be safe to use and/or cause compiler crashes
2+
--> $DIR/bad-suggestion-on-missing-assoc.rs:1:12
3+
|
4+
LL | #![feature(generic_const_exprs)]
5+
| ^^^^^^^^^^^^^^^^^^^
6+
|
7+
= note: see issue #76560 <https://github.com/rust-lang/rust/issues/76560> for more information
8+
= note: `#[warn(incomplete_features)]` on by default
9+
10+
warning: the feature `non_lifetime_binders` is incomplete and may not be safe to use and/or cause compiler crashes
11+
--> $DIR/bad-suggestion-on-missing-assoc.rs:3:12
12+
|
13+
LL | #![feature(non_lifetime_binders)]
14+
| ^^^^^^^^^^^^^^^^^^^^
15+
|
16+
= note: see issue #108185 <https://github.com/rust-lang/rust/issues/108185> for more information
17+
18+
error: defaults for generic parameters are not allowed in `for<...>` binders
19+
--> $DIR/bad-suggestion-on-missing-assoc.rs:20:9
20+
|
21+
LL | for<const N: u8 = { T::A }> T: TraitA<AsA = impl TraitB<AsB = impl TraitC>>,
22+
| ^^^^^^^^^^^^^^^^^^^^^^
23+
24+
error[E0562]: `impl Trait` is not allowed in bounds
25+
--> $DIR/bad-suggestion-on-missing-assoc.rs:20:49
26+
|
27+
LL | for<const N: u8 = { T::A }> T: TraitA<AsA = impl TraitB<AsB = impl TraitC>>,
28+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
29+
|
30+
= note: `impl Trait` is only allowed in arguments and return types of functions and methods
31+
32+
error: aborting due to 2 previous errors; 2 warnings emitted
33+
34+
For more information about this error, try `rustc --explain E0562`.

0 commit comments

Comments
 (0)