Rollup merge of #63397 - JohnTitor:add-tests-for-ices, r=Centril
Add tests for some ICEs Closes #43623 Closes #44405 r? @Centril
This commit is contained in:
commit
7a251629a2
4 changed files with 94 additions and 0 deletions
19
src/test/ui/issues/issue-43623.rs
Normal file
19
src/test/ui/issues/issue-43623.rs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
pub trait Trait<'a> {
|
||||||
|
type Assoc;
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct Type;
|
||||||
|
|
||||||
|
impl<'a> Trait<'a> for Type {
|
||||||
|
type Assoc = ();
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn break_me<T, F>(f: F)
|
||||||
|
where T: for<'b> Trait<'b>,
|
||||||
|
F: for<'b> FnMut(<T as Trait<'b>>::Assoc) {
|
||||||
|
break_me::<Type, fn(_)>;
|
||||||
|
//~^ ERROR: type mismatch in function arguments
|
||||||
|
//~| ERROR: type mismatch resolving
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
42
src/test/ui/issues/issue-43623.stderr
Normal file
42
src/test/ui/issues/issue-43623.stderr
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
error[E0631]: type mismatch in function arguments
|
||||||
|
--> $DIR/issue-43623.rs:14:5
|
||||||
|
|
|
||||||
|
LL | break_me::<Type, fn(_)>;
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
| |
|
||||||
|
| expected signature of `for<'b> fn(<Type as Trait<'b>>::Assoc) -> _`
|
||||||
|
| found signature of `fn(_) -> _`
|
||||||
|
|
|
||||||
|
note: required by `break_me`
|
||||||
|
--> $DIR/issue-43623.rs:11:1
|
||||||
|
|
|
||||||
|
LL | / pub fn break_me<T, F>(f: F)
|
||||||
|
LL | | where T: for<'b> Trait<'b>,
|
||||||
|
LL | | F: for<'b> FnMut(<T as Trait<'b>>::Assoc) {
|
||||||
|
LL | | break_me::<Type, fn(_)>;
|
||||||
|
LL | |
|
||||||
|
LL | |
|
||||||
|
LL | | }
|
||||||
|
| |_^
|
||||||
|
|
||||||
|
error[E0271]: type mismatch resolving `for<'b> <fn(_) as std::ops::FnOnce<(<Type as Trait<'b>>::Assoc,)>>::Output == ()`
|
||||||
|
--> $DIR/issue-43623.rs:14:5
|
||||||
|
|
|
||||||
|
LL | break_me::<Type, fn(_)>;
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^ expected bound lifetime parameter 'b, found concrete lifetime
|
||||||
|
|
|
||||||
|
note: required by `break_me`
|
||||||
|
--> $DIR/issue-43623.rs:11:1
|
||||||
|
|
|
||||||
|
LL | / pub fn break_me<T, F>(f: F)
|
||||||
|
LL | | where T: for<'b> Trait<'b>,
|
||||||
|
LL | | F: for<'b> FnMut(<T as Trait<'b>>::Assoc) {
|
||||||
|
LL | | break_me::<Type, fn(_)>;
|
||||||
|
LL | |
|
||||||
|
LL | |
|
||||||
|
LL | | }
|
||||||
|
| |_^
|
||||||
|
|
||||||
|
error: aborting due to 2 previous errors
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0271`.
|
22
src/test/ui/issues/issue-44405.rs
Normal file
22
src/test/ui/issues/issue-44405.rs
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
use std::ops::Index;
|
||||||
|
|
||||||
|
struct Test;
|
||||||
|
struct Container(Test);
|
||||||
|
|
||||||
|
impl Test {
|
||||||
|
fn test(&mut self) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a> Index<&'a bool> for Container {
|
||||||
|
type Output = Test;
|
||||||
|
|
||||||
|
fn index(&self, _index: &'a bool) -> &Test {
|
||||||
|
&self.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let container = Container(Test);
|
||||||
|
let mut val = true;
|
||||||
|
container[&mut val].test(); //~ ERROR: cannot borrow data
|
||||||
|
}
|
11
src/test/ui/issues/issue-44405.stderr
Normal file
11
src/test/ui/issues/issue-44405.stderr
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
error[E0596]: cannot borrow data in an index of `Container` as mutable
|
||||||
|
--> $DIR/issue-44405.rs:21:5
|
||||||
|
|
|
||||||
|
LL | container[&mut val].test();
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^ cannot borrow as mutable
|
||||||
|
|
|
||||||
|
= help: trait `IndexMut` is required to modify indexed content, but it is not implemented for `Container`
|
||||||
|
|
||||||
|
error: aborting due to previous error
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0596`.
|
Loading…
Add table
Add a link
Reference in a new issue