Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

ICE: OutputTypeParameterMismatch with unboxed closures #18298

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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in 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