Skip to content

Commit 7836909

Browse files
committed
add test for ice called Option::unwrap() on a None value in collector.rs:934:13 #105488
Fixes #105488
1 parent 7d9e106 commit 7836909

File tree

2 files changed

+58
-0
lines changed

2 files changed

+58
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
// ICE failed to resolve instance for <fn() -> impl MyFnOnce ...
2+
// issue: rust-lang/rust#105488
3+
//@ build-fail
4+
//~^^^ ERROR overflow evaluating the requirement `fn() -> impl MyFnOnce
5+
6+
pub trait MyFnOnce {
7+
type Output;
8+
9+
fn call_my_fn_once(self) -> Self::Output;
10+
}
11+
12+
pub struct WrapFnOnce<F>(F);
13+
14+
impl<F: FnOnce() -> D, D: MyFnOnce> MyFnOnce for WrapFnOnce<F> {
15+
type Output = D::Output;
16+
17+
fn call_my_fn_once(self) -> Self::Output {
18+
D::call_my_fn_once(self.0())
19+
}
20+
}
21+
22+
impl<F: FnOnce() -> D, D: MyFnOnce> MyFnOnce for F {
23+
type Output = D::Output;
24+
25+
fn call_my_fn_once(self) -> Self::Output {
26+
D::call_my_fn_once(self())
27+
}
28+
}
29+
30+
pub fn my_fn_1() -> impl MyFnOnce {
31+
my_fn_2
32+
}
33+
34+
pub fn my_fn_2() -> impl MyFnOnce {
35+
WrapFnOnce(my_fn_1)
36+
}
37+
38+
fn main() {
39+
let v = my_fn_1();
40+
41+
let _ = v.call_my_fn_once();
42+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
error[E0275]: overflow evaluating the requirement `fn() -> impl MyFnOnce {my_fn_2}: MyFnOnce`
2+
|
3+
= help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`failed_to_resolve_instance_ice_105488`)
4+
note: required for `WrapFnOnce<fn() -> impl MyFnOnce {my_fn_1}>` to implement `MyFnOnce`
5+
--> $DIR/failed-to-resolve-instance-ice-105488.rs:14:37
6+
|
7+
LL | impl<F: FnOnce() -> D, D: MyFnOnce> MyFnOnce for WrapFnOnce<F> {
8+
| -------- ^^^^^^^^ ^^^^^^^^^^^^^
9+
| |
10+
| unsatisfied trait bound introduced here
11+
= note: 126 redundant requirements hidden
12+
= note: required for `WrapFnOnce<fn() -> impl MyFnOnce {my_fn_1}>` to implement `MyFnOnce`
13+
14+
error: aborting due to 1 previous error
15+
16+
For more information about this error, try `rustc --explain E0275`.

0 commit comments

Comments
 (0)