Skip to content

ICE: OutputTypeParameterMismatch with unboxed closures #18298

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Closed
veddan opened this issue Oct 24, 2014 · 2 comments
Closed

ICE: OutputTypeParameterMismatch with unboxed closures #18298

veddan opened this issue Oct 24, 2014 · 2 comments
Labels
I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️

Comments

@veddan
Copy link
Contributor

veddan commented Oct 24, 2014

Compiling

#![feature(overloaded_calls)]
#![feature(unboxed_closures)]

fn main() {
    foo(1i);
}

fn foo<T>(a: T) {
    baz(a, &|&: _a: &T| { });
}

fn baz<'a, T: 'a, F: Fn<(&'a T,), ()>>(a: T, f: &F) {
    unsafe { f(::std::mem::transmute(&a)) }
}

with RUST_BACKTRACE=1 rustc bug.rs -Z verbose gives

bug.rs:13:14: 13:42 error: internal compiler error: Encountered error `OutputTypeParameterMismatch(<closure as core::ops::Fn<(&ReInfer(0) T),(),self closure>>, expected int, found type parameter)` selecting `<closure as core::ops::Fn<(&ReStatic int),(),self closure>>` during trans
bug.rs:13        unsafe { f(::std::mem::transmute(&a)) }
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~

task 'rustc' failed at 'Box<Any>', /.../rust/src/libsyntax/diagnostic.rs:116

    stack backtrace:
1:     0x7fdee60a9500 - rt::backtrace::imp::write::hf55f54de54e145feOcq
2:     0x7fdee60ac690 - failure::on_fail::h6f167845e58b4b31byq
3:     0x7fdeea3a24c0 - unwind::begin_unwind_inner::ha847232dcda349e1MQd
4:     0x7fdee7464570 - unwind::begin_unwind::h17474698627741534983
5:     0x7fdee74644f0 - diagnostic::SpanHandler::span_bug::h1beed783f0a3d283OOF
6:     0x7fdeeae03d70 - middle::trans::common::fulfill_obligation::h276f3c9978aa90bdsG8
7:     0x7fdeeadb0080 - middle::trans::meth::trans_method_callee::h0d34e3dc7265a24bcom
8:     0x7fdeeadb0000 - middle::trans::controlflow::trans_for::closure.121899
9:     0x7fdeeb38a4d0 - middle::trans::expr::trans_overloaded_call::closure.122745
10:     0x7fdeeadae4b0 - middle::trans::callee::trans_call_inner::h70a281432d522e0fXT3
11:     0x7fdeeade3010 - middle::trans::expr::trans_rvalue_dps_unadjusted::h59c778149c635662A25
12:     0x7fdeeada6690 - middle::trans::expr::trans_into::hda9c6f85ba21846a8D4
13:     0x7fdeeada6ab0 - middle::trans::controlflow::trans_block::h4dba6b12c8bf9ae0oU0
14:     0x7fdeeae4dca0 - middle::trans::base::trans_closure::h735659f6c6f975ccp0g
15:     0x7fdeead99000 - middle::trans::base::trans_fn::hf443f010df6ff76fNbh
16:     0x7fdeead996f0 - middle::trans::monomorphize::monomorphic_fn::h2f32af73a63c19f7Ok0
17:     0x7fdeeadcdca0 - middle::trans::callee::trans_fn_ref_with_substs::h89c4b3518b4bcfd7dy3
18:     0x7fdeeadcbe40 - middle::trans::callee::trans_fn_ref::h9bc019d9fbcc1ca43l3
19:     0x7fdeeadd4130 - middle::trans::callee::trans_call::closure.122326
20:     0x7fdeeadae4b0 - middle::trans::callee::trans_call_inner::h70a281432d522e0fXT3
21:     0x7fdeeadd3e80 - middle::trans::callee::trans_call::ha8e12ba9337696e7hO3
22:     0x7fdeeade3010 - middle::trans::expr::trans_rvalue_dps_unadjusted::h59c778149c635662A25
23:     0x7fdeeada6690 - middle::trans::expr::trans_into::hda9c6f85ba21846a8D4
24:     0x7fdeeada5a80 - middle::trans::controlflow::trans_stmt_semi::h8c4df4e6755d6084vT0
25:     0x7fdeeada5030 - middle::trans::controlflow::trans_stmt::h21d1608d40f72cd9iP0
26:     0x7fdeeada6ab0 - middle::trans::controlflow::trans_block::h4dba6b12c8bf9ae0oU0
27:     0x7fdeeae4dca0 - middle::trans::base::trans_closure::h735659f6c6f975ccp0g
28:     0x7fdeead99000 - middle::trans::base::trans_fn::hf443f010df6ff76fNbh
29:     0x7fdeead996f0 - middle::trans::monomorphize::monomorphic_fn::h2f32af73a63c19f7Ok0
30:     0x7fdeeadcdca0 - middle::trans::callee::trans_fn_ref_with_substs::h89c4b3518b4bcfd7dy3
31:     0x7fdeeadcbe40 - middle::trans::callee::trans_fn_ref::h9bc019d9fbcc1ca43l3
32:     0x7fdeeadd4130 - middle::trans::callee::trans_call::closure.122326
33:     0x7fdeeadae4b0 - middle::trans::callee::trans_call_inner::h70a281432d522e0fXT3
34:     0x7fdeeadd3e80 - middle::trans::callee::trans_call::ha8e12ba9337696e7hO3
35:     0x7fdeeade3010 - middle::trans::expr::trans_rvalue_dps_unadjusted::h59c778149c635662A25
36:     0x7fdeeada6690 - middle::trans::expr::trans_into::hda9c6f85ba21846a8D4
37:     0x7fdeeada5a80 - middle::trans::controlflow::trans_stmt_semi::h8c4df4e6755d6084vT0
38:     0x7fdeeada5030 - middle::trans::controlflow::trans_stmt::h21d1608d40f72cd9iP0
39:     0x7fdeeada6ab0 - middle::trans::controlflow::trans_block::h4dba6b12c8bf9ae0oU0
40:     0x7fdeeade3010 - middle::trans::expr::trans_rvalue_dps_unadjusted::h59c778149c635662A25
41:     0x7fdeeada6690 - middle::trans::expr::trans_into::hda9c6f85ba21846a8D4
42:     0x7fdeeada6ab0 - middle::trans::controlflow::trans_block::h4dba6b12c8bf9ae0oU0
43:     0x7fdeeae4dca0 - middle::trans::base::trans_closure::h735659f6c6f975ccp0g
44:     0x7fdeead99000 - middle::trans::base::trans_fn::hf443f010df6ff76fNbh
45:     0x7fdeead96650 - middle::trans::base::trans_item::he22491066ac9a2096uh
46:     0x7fdeeae58a10 - middle::trans::base::trans_crate::h98401cdcfefa4f8bXsi
47:     0x7fdeeb2a85b0 - driver::driver::phase_4_translate_to_llvm::h1747de07c7c65440yuA
48:     0x7fdeeb29f990 - driver::driver::compile_input::hd1134e5c5c5b138es1z
49:     0x7fdeeb329170 - driver::run_compiler::hc6267138c7b52e1cDOD
50:     0x7fdeeb329020 - driver::run::closure.144862
51:     0x7fdeeaa2bd30 - task::TaskBuilder<S>::try_future::closure.103257
52:     0x7fdeeaa2bb10 - task::TaskBuilder<S>::spawn_internal::closure.103228
53:     0x7fdeea6f1990 - task::NativeSpawner.Spawner::spawn::closure.8447
54:     0x7fdeea3fc770 - rust_try_inner
55:     0x7fdeea3fc760 - rust_try
56:     0x7fdeea39fa40 - unwind::try::h994238c297aa05e0uFd
57:     0x7fdeea39f8c0 - task::Task::run::hde6c0e3dcf5eb653kLc
58:     0x7fdeea6f1690 - task::NativeSpawner.Spawner::spawn::closure.8385
59:     0x7fdeea3a1320 - thread::thread_start::h693f7af46f13be17z6c
60:     0x7fdee5452010 - start_thread
61:     0x7fdeea06a559 - __clone
62:                0x0 - <unknown>
@veddan veddan changed the title ICE: OutputTypeParameterMismatch ICE: OutputTypeParameterMismatch with unboxed closures Oct 25, 2014
@bkoropoff
Copy link
Contributor

The backtrace is different, but this is related to #16791 and should be fixed by the open PR for that bug.

@sfackler sfackler added the I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ label Oct 26, 2014
@veddan
Copy link
Contributor Author

veddan commented Oct 28, 2014

Looks like the solution to #16791 fixed this too.

@veddan veddan closed this as completed Oct 28, 2014
lnicola pushed a commit to lnicola/rust that referenced this issue Oct 17, 2024
fix: incorrect autofix for missing wrapped unit in return expr

fix rust-lang#18298.

We should insert `Ok(())` or `Some(())` instead of wrapping `return` with variants.
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️
Projects
None yet
Development

No branches or pull requests

3 participants