Skip to content

ICE implementing Fn trait for unit struct #22603

Closed

Description

The following programs generate the ICE with a slightly different message. May be related to #22565 and #22566

#![feature(unboxed_closures)]

pub struct Foo;

impl<A> Fn<(A,)> for Foo {
    type Output = ();
    extern "rust-call" fn call(&self, (_,): (A,)) {
    }
}

pub fn main() {
    println!("{:?}", Foo("bar"));
}
error: internal compiler error: unexpected panic
note: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: http://doc.rust-lang.org/complement-bugreport.html
note: run with `RUST_BACKTRACE=1` for a backtrace
thread 'rustc' panicked at 'assertion failed: `(left == right) && (right == left)` (left: `1`, right: `0`)', /Users/dwm/dev/freebroccolo/rust/src/librustc_trans/trans/adt.rs:1120

stack backtrace:
   1:        0x10f16fe23 - sys::backtrace::write::h3d6ead7c1184a95aYoB
   2:        0x10f19db85 - panicking::on_panic::h4ff071a70fb2a50dAGK
   3:        0x10f0cf188 - rt::unwind::begin_unwind_inner::h9fcba14039c4ae30QnK
   4:        0x10f0cf99e - rt::unwind::begin_unwind_fmt::h8a64dc3276ab80e6mmK
   5:        0x10b78ef5a - trans::adt::build_const_struct::h9f178ea5cb15adefd8J
   6:        0x10b6feb12 - trans::adt::trans_const::he12f11c052fd51c6qXJ
   7:        0x10b6fa1cb - trans::consts::const_expr_unadjusted::h6f4b4da94e54f806amo
   8:        0x10b6fca28 - trans::consts::const_expr::he362f3efa474e33578n
   9:        0x10b6fa146 - trans::consts::const_expr_unadjusted::h6f4b4da94e54f806amo
  10:        0x10b6fca28 - trans::consts::const_expr::he362f3efa474e33578n
  11:        0x10b6fe213 - iter::IteratorExt::fold::h16846351534471258687
  12:        0x10b6f893f - trans::consts::const_expr_unadjusted::h6f4b4da94e54f806amo
  13:        0x10b6fca28 - trans::consts::const_expr::he362f3efa474e33578n
  14:        0x10b68ed84 - trans::consts::get_const_expr_as_global::h0122b2bc5a07a52ed6n
  15:        0x10b643a17 - trans::expr::trans::h181c848f1f91f5c7BMh
  16:        0x10b734ee4 - trans::_match::trans_match_inner::h6e02f6c0e6a4b098zMx
  17:        0x10b691ee0 - trans::expr::trans_rvalue_dps_unadjusted::h5f563e68c9cce0602Wi
  18:        0x10b690362 - trans::expr::trans_unadjusted::h1caf7e41a27a61e7mqi
  19:        0x10b643ed0 - trans::expr::trans::h181c848f1f91f5c7BMh
  20:        0x10b6a71e3 - trans::expr::trans_addr_of::h3700c26ce80cf333tNj
  21:        0x10b6908f7 - trans::expr::trans_unadjusted::h1caf7e41a27a61e7mqi
  22:        0x10b643ed0 - trans::expr::trans::h181c848f1f91f5c7BMh
  23:        0x10b680aa5 - trans::callee::trans_args::h670e438b49426a11rjh
  24:        0x10b687394 - trans::callee::trans_call_inner::h12819191760544836083
  25:        0x10b692aed - trans::expr::trans_rvalue_dps_unadjusted::h5f563e68c9cce0602Wi
  26:        0x10b690362 - trans::expr::trans_unadjusted::h1caf7e41a27a61e7mqi
  27:        0x10b643ed0 - trans::expr::trans::h181c848f1f91f5c7BMh
  28:        0x10b680aa5 - trans::callee::trans_args::h670e438b49426a11rjh
  29:        0x10b687394 - trans::callee::trans_call_inner::h12819191760544836083
  30:        0x10b692aed - trans::expr::trans_rvalue_dps_unadjusted::h5f563e68c9cce0602Wi
  31:        0x10b6426eb - trans::expr::trans_into::h3a3c8b3d53f8afd1jGh
  32:        0x10b64153b - trans::controlflow::trans_stmt_semi::h26c41836c06fdbd36de
  33:        0x10b6431a3 - trans::controlflow::trans_block::hd7ca24723db0b5fbXee
  34:        0x10b7191f9 - trans::base::trans_closure::hbc388ffaaf4af161Fiu
  35:        0x10b62d4d6 - trans::base::trans_fn::hd5c4904336306603Wtu
  36:        0x10b62883d - trans::base::trans_item::h6fa4471c5f48a0b4PSu
  37:        0x10b71fbdc - trans::base::trans_crate::h15ffd65af4da49d1fQv
  38:        0x10b4ac638 - driver::phase_4_translate_to_llvm::h19f970ffecf43574iPa
  39:        0x10b4864f6 - driver::compile_input::hd5773fb44ef48d33Eba
  40:        0x10b560414 - run_compiler::h70410abf4d17bf43Rbc
  41:        0x10b55d495 - thunk::F.Invoke<A, R>::invoke::h1011432548731059940
  42:        0x10b55c130 - rt::unwind::try::try_fn::h9217449077233910915
  43:        0x10f21a289 - rust_try_inner
  44:        0x10f21a276 - rust_try
  45:        0x10b55c829 - thunk::F.Invoke<A, R>::invoke::h35832703021491210
  46:        0x10f186373 - sys::thread::thread_start::h5036bdc0fe436b19CWF
  47:     0x7fff82a3f268 - _pthread_body
  48:     0x7fff82a3f1e5 - _pthread_body
#![feature(unboxed_closures)]

pub struct Foo;

impl<A> Fn<(A,)> for Foo {
    type Output = A;
    extern "rust-call" fn call(&self, (arg,): (A,)) -> A {
        arg
    }
}

pub fn main() {
    println!("{:?}", Foo("bar"));
}
error: internal compiler error: adt::represent_type called on non-ADT type: &'static str
note: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: http://doc.rust-lang.org/complement-bugreport.html
note: run with `RUST_BACKTRACE=1` for a backtrace
thread 'rustc' panicked at 'Box<Any>', /Users/dwm/dev/freebroccolo/rust/src/libsyntax/diagnostic.rs:189

stack backtrace:
   1:        0x107908e23 - sys::backtrace::write::h3d6ead7c1184a95aYoB
   2:        0x107936b85 - panicking::on_panic::h4ff071a70fb2a50dAGK
   3:        0x107868188 - rt::unwind::begin_unwind_inner::h9fcba14039c4ae30QnK
   4:        0x106f32b2f - rt::unwind::begin_unwind::h6422578009397946341
   5:        0x106f3345d - diagnostic::Handler::bug::he3fe83188ec467dceeF
   6:        0x1047a7568 - session::Session::bug::hc6ca12d54ef8a384z3s
   7:        0x103f16223 - trans::adt::represent_type_uncached::h3807220f4faf82436mI
   8:        0x103de3790 - trans::adt::represent_type::hdcbcf49d3304f11cGjI
   9:        0x103e871a0 - trans::consts::const_expr_unadjusted::h6f4b4da94e54f806amo
  10:        0x103e89a28 - trans::consts::const_expr::he362f3efa474e33578n
  11:        0x103e87146 - trans::consts::const_expr_unadjusted::h6f4b4da94e54f806amo
  12:        0x103e89a28 - trans::consts::const_expr::he362f3efa474e33578n
  13:        0x103e8b213 - iter::IteratorExt::fold::h16846351534471258687
  14:        0x103e8593f - trans::consts::const_expr_unadjusted::h6f4b4da94e54f806amo
  15:        0x103e89a28 - trans::consts::const_expr::he362f3efa474e33578n
  16:        0x103e1bd84 - trans::consts::get_const_expr_as_global::h0122b2bc5a07a52ed6n
  17:        0x103dd0a17 - trans::expr::trans::h181c848f1f91f5c7BMh
  18:        0x103ec1ee4 - trans::_match::trans_match_inner::h6e02f6c0e6a4b098zMx
  19:        0x103e1eee0 - trans::expr::trans_rvalue_dps_unadjusted::h5f563e68c9cce0602Wi
  20:        0x103e1d362 - trans::expr::trans_unadjusted::h1caf7e41a27a61e7mqi
  21:        0x103dd0ed0 - trans::expr::trans::h181c848f1f91f5c7BMh
  22:        0x103e341e3 - trans::expr::trans_addr_of::h3700c26ce80cf333tNj
  23:        0x103e1d8f7 - trans::expr::trans_unadjusted::h1caf7e41a27a61e7mqi
  24:        0x103dd0ed0 - trans::expr::trans::h181c848f1f91f5c7BMh
  25:        0x103e0daa5 - trans::callee::trans_args::h670e438b49426a11rjh
  26:        0x103e14394 - trans::callee::trans_call_inner::h12819191760544836083
  27:        0x103e1faed - trans::expr::trans_rvalue_dps_unadjusted::h5f563e68c9cce0602Wi
  28:        0x103e1d362 - trans::expr::trans_unadjusted::h1caf7e41a27a61e7mqi
  29:        0x103dd0ed0 - trans::expr::trans::h181c848f1f91f5c7BMh
  30:        0x103e0daa5 - trans::callee::trans_args::h670e438b49426a11rjh
  31:        0x103e14394 - trans::callee::trans_call_inner::h12819191760544836083
  32:        0x103e1faed - trans::expr::trans_rvalue_dps_unadjusted::h5f563e68c9cce0602Wi
  33:        0x103dcf6eb - trans::expr::trans_into::h3a3c8b3d53f8afd1jGh
  34:        0x103dce53b - trans::controlflow::trans_stmt_semi::h26c41836c06fdbd36de
  35:        0x103dd01a3 - trans::controlflow::trans_block::hd7ca24723db0b5fbXee
  36:        0x103ea61f9 - trans::base::trans_closure::hbc388ffaaf4af161Fiu
  37:        0x103dba4d6 - trans::base::trans_fn::hd5c4904336306603Wtu
  38:        0x103db583d - trans::base::trans_item::h6fa4471c5f48a0b4PSu
  39:        0x103eacbdc - trans::base::trans_crate::h15ffd65af4da49d1fQv
  40:        0x103c3a638 - driver::phase_4_translate_to_llvm::h19f970ffecf43574iPa
  41:        0x103c144f6 - driver::compile_input::hd5773fb44ef48d33Eba
  42:        0x103cee414 - run_compiler::h70410abf4d17bf43Rbc
  43:        0x103ceb495 - thunk::F.Invoke<A, R>::invoke::h1011432548731059940
  44:        0x103cea130 - rt::unwind::try::try_fn::h9217449077233910915
  45:        0x1079b3289 - rust_try_inner
  46:        0x1079b3276 - rust_try
  47:        0x103cea829 - thunk::F.Invoke<A, R>::invoke::h35832703021491210
  48:        0x10791f373 - sys::thread::thread_start::h5036bdc0fe436b19CWF
  49:     0x7fff82a3f268 - _pthread_body
  50:     0x7fff82a3f1e5 - _pthread_body
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    E-needs-testCall for participation: An issue has been fixed and does not reproduce, but no test has been added.Call for participation: An issue has been fixed and does not reproduce, but no test has been added.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions