add test for ice called Option::unwrap() on a None value in collector.rs:934:13 #105488
Fixes https://github.com/rust-lang/rust/issues/105488
This commit is contained in:
parent
7d9e1067fd
commit
7836909402
42
tests/ui/impl-trait/failed-to-resolve-instance-ice-105488.rs
Normal file
42
tests/ui/impl-trait/failed-to-resolve-instance-ice-105488.rs
Normal file
@ -0,0 +1,42 @@
|
||||
// ICE failed to resolve instance for <fn() -> impl MyFnOnce ...
|
||||
// issue: rust-lang/rust#105488
|
||||
//@ build-fail
|
||||
//~^^^ ERROR overflow evaluating the requirement `fn() -> impl MyFnOnce
|
||||
|
||||
pub trait MyFnOnce {
|
||||
type Output;
|
||||
|
||||
fn call_my_fn_once(self) -> Self::Output;
|
||||
}
|
||||
|
||||
pub struct WrapFnOnce<F>(F);
|
||||
|
||||
impl<F: FnOnce() -> D, D: MyFnOnce> MyFnOnce for WrapFnOnce<F> {
|
||||
type Output = D::Output;
|
||||
|
||||
fn call_my_fn_once(self) -> Self::Output {
|
||||
D::call_my_fn_once(self.0())
|
||||
}
|
||||
}
|
||||
|
||||
impl<F: FnOnce() -> D, D: MyFnOnce> MyFnOnce for F {
|
||||
type Output = D::Output;
|
||||
|
||||
fn call_my_fn_once(self) -> Self::Output {
|
||||
D::call_my_fn_once(self())
|
||||
}
|
||||
}
|
||||
|
||||
pub fn my_fn_1() -> impl MyFnOnce {
|
||||
my_fn_2
|
||||
}
|
||||
|
||||
pub fn my_fn_2() -> impl MyFnOnce {
|
||||
WrapFnOnce(my_fn_1)
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let v = my_fn_1();
|
||||
|
||||
let _ = v.call_my_fn_once();
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
error[E0275]: overflow evaluating the requirement `fn() -> impl MyFnOnce {my_fn_2}: MyFnOnce`
|
||||
|
|
||||
= help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`failed_to_resolve_instance_ice_105488`)
|
||||
note: required for `WrapFnOnce<fn() -> impl MyFnOnce {my_fn_1}>` to implement `MyFnOnce`
|
||||
--> $DIR/failed-to-resolve-instance-ice-105488.rs:14:37
|
||||
|
|
||||
LL | impl<F: FnOnce() -> D, D: MyFnOnce> MyFnOnce for WrapFnOnce<F> {
|
||||
| -------- ^^^^^^^^ ^^^^^^^^^^^^^
|
||||
| |
|
||||
| unsatisfied trait bound introduced here
|
||||
= note: 126 redundant requirements hidden
|
||||
= note: required for `WrapFnOnce<fn() -> impl MyFnOnce {my_fn_1}>` to implement `MyFnOnce`
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0275`.
|
Loading…
Reference in New Issue
Block a user