Skip to content

ICE: Encountered error SignatureMismatch #129214

Open

Description

auto-reduced (treereduce-rust):

//@ run-pass

trait to_str {}

trait map<T> {
    fn map<U, F>(&self, f: F) -> Vec<U>
    where
        F: FnMut(&Box<usize>) -> U;
}
impl<T> map<T> for Vec<T> {
    fn map<U, F>(&self, mut f: F) -> Vec<U>
    where
        F: FnMut(&T) -> U,
    {
        let mut r = Vec::new();
        for i in self {
            r.push(f(i));
        }
        r
    }
}

fn foo<U, T: map<U>>(x: T) -> Vec<String> {
    x.map(|_e| "hi".to_string())
}

pub fn main() {
    assert_eq!(foo(vec![1]), ["hi".to_string()]);
}
original code

original:

//@ run-pass
#![repr(align=8)]



trait to_str {
    fn to_string_(&self) -> String;
}
impl to_str for isize {
    fn to_string_(&self) -> String { self.to_string() }
}
impl to_str for String {
    fn to_string_(&self) -> String { self.clone() }
}
impl to_str for () {
    fn to_string_(&self) -> String { "()".to_string() }
}

trait map<T> {
    fn map<U, F>(&self, f: F) -> Vec<U> where F: FnMut(&Box<usize>) -> U;
}
impl<T> map<T> for Vec<T> {
    fn map<U, F>(&self, mut f: F) -> Vec<U> where F: FnMut(&T) -> U {
        let mut r = Vec::new();
        for i in self {
            r.push(f(i));
        }
        r
    }
}

fn foo<U, T: map<U>>(x: T) -> Vec<String> {
    x.map(|_e| "hi".to_string() )
}
fn bar<U:to_str,T:map<U>>(x: T) -> Vec<String> {
    x.map(|_e| _e.to_string_() )
}

pub fn main() {
    assert_eq!(foo(vec![1]), ["hi".to_string()]);
    assert_eq!(bar::<isize, Vec<isize> >(vec![4, 5]), ["4".to_string(), "5".to_string()]);
    assert_eq!(bar::<String, Vec<String> >(vec!["x".to_string(), "y".to_string()]),
               ["x".to_string(), "y".to_string()]);
    assert_eq!(bar::<(), Vec<()>>(vec![()]), ["()".to_string()]);
}

Version information

rustc 1.82.0-nightly (0f26ee4fd 2024-08-17)
binary: rustc
commit-hash: 0f26ee4fd95a1c046582dfb18892f520788e2c2c
commit-date: 2024-08-17
host: x86_64-unknown-linux-gnu
release: 1.82.0-nightly
LLVM version: 19.1.0

Command:
/home/matthias/.rustup/toolchains/master/bin/rustc -Zvalidate-mir -Copt-level=3 --crate-type=lib

Program output

warning: trait `to_str` should have an upper camel case name
 --> /tmp/icemaker_global_tempdir.CTvLxe24vLkE/rustc_testrunner_tmpdir_reporting.sonlNjO1Rab2/mvce.rs:3:7
  |
3 | trait to_str {}
  |       ^^^^^^ help: convert the identifier to upper camel case: `ToStr`
  |
  = note: `#[warn(non_camel_case_types)]` on by default

warning: trait `map` should have an upper camel case name
 --> /tmp/icemaker_global_tempdir.CTvLxe24vLkE/rustc_testrunner_tmpdir_reporting.sonlNjO1Rab2/mvce.rs:5:7
  |
5 | trait map<T> {
  |       ^^^ help: convert the identifier to upper camel case: `Map`

error[E0276]: impl has stricter requirements than trait
  --> /tmp/icemaker_global_tempdir.CTvLxe24vLkE/rustc_testrunner_tmpdir_reporting.sonlNjO1Rab2/mvce.rs:13:12
   |
6  | /     fn map<U, F>(&self, f: F) -> Vec<U>
7  | |     where
8  | |         F: FnMut(&Box<usize>) -> U;
   | |___________________________________- definition of `map` from trait
...
13 |           F: FnMut(&T) -> U,
   |              ^^^^^^^^^^^^^^ impl has extra requirement `for<'a> F: FnMut(&'a T)`

error[E0276]: impl has stricter requirements than trait
  --> /tmp/icemaker_global_tempdir.CTvLxe24vLkE/rustc_testrunner_tmpdir_reporting.sonlNjO1Rab2/mvce.rs:13:25
   |
6  | /     fn map<U, F>(&self, f: F) -> Vec<U>
7  | |     where
8  | |         F: FnMut(&Box<usize>) -> U;
   | |___________________________________- definition of `map` from trait
...
13 |           F: FnMut(&T) -> U,
   |                           ^ impl has extra requirement `for<'a> F: FnOnce(&'a T)`

error: internal compiler error: compiler/rustc_traits/src/codegen.rs:44:13: Encountered error `SignatureMismatch(SignatureMismatchData { found_trait_ref: <{closure@/tmp/icemaker_global_tempdir.CTvLxe24vLkE/rustc_testrunner_tmpdir_reporting.sonlNjO1Rab2/mvce.rs:24:11: 24:15} as std::ops::FnMut<(&std::boxed::Box<usize>,)>>, expected_trait_ref: <{closure@/tmp/icemaker_global_tempdir.CTvLxe24vLkE/rustc_testrunner_tmpdir_reporting.sonlNjO1Rab2/mvce.rs:24:11: 24:15} as std::ops::FnMut<(&i32,)>>, terr: Sorts(ExpectedFound { expected: i32, found: std::boxed::Box<usize, std::alloc::Global> }) })` selecting `<{closure@/tmp/icemaker_global_tempdir.CTvLxe24vLkE/rustc_testrunner_tmpdir_reporting.sonlNjO1Rab2/mvce.rs:24:11: 24:15} as std::ops::FnMut<(&i32,)>>` during codegen

thread 'rustc' panicked at compiler/rustc_traits/src/codegen.rs:44:13:
Box<dyn Any>
stack backtrace:
   0:     0x7d4a373c429d - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::hce35dec2bed7e8e1
   1:     0x7d4a37c05297 - core::fmt::write::haaf8a728f3019c12
   2:     0x7d4a38ebbd91 - std::io::Write::write_fmt::hb0dc5188703aea0d
   3:     0x7d4a373c697b - std::panicking::default_hook::{{closure}}::h35c501ae74c82675
   4:     0x7d4a373c65ee - std::panicking::default_hook::hc1ddd62643c4c855
   5:     0x7d4a36558729 - std[54b021f941472252]::panicking::update_hook::<alloc[8840b3d3a55bb7af]::boxed::Box<rustc_driver_impl[ec4d44b725e7aa11]::install_ice_hook::{closure#0}>>::{closure#0}
   6:     0x7d4a373c7297 - std::panicking::rust_panic_with_hook::h7960ad04eaeb646d
   7:     0x7d4a36593111 - std[54b021f941472252]::panicking::begin_panic::<rustc_errors[2e519a482e3c741a]::ExplicitBug>::{closure#0}
   8:     0x7d4a36586156 - std[54b021f941472252]::sys::backtrace::__rust_end_short_backtrace::<std[54b021f941472252]::panicking::begin_panic<rustc_errors[2e519a482e3c741a]::ExplicitBug>::{closure#0}, !>
   9:     0x7d4a36581536 - std[54b021f941472252]::panicking::begin_panic::<rustc_errors[2e519a482e3c741a]::ExplicitBug>
  10:     0x7d4a3659c0f1 - <rustc_errors[2e519a482e3c741a]::diagnostic::BugAbort as rustc_errors[2e519a482e3c741a]::diagnostic::EmissionGuarantee>::emit_producing_guarantee
  11:     0x7d4a36b5f6c4 - rustc_middle[10ec7aec7d9fdda3]::util::bug::opt_span_bug_fmt::<rustc_span[a5a4c6b08f7cf6f]::span_encoding::Span>::{closure#0}
  12:     0x7d4a36b452da - rustc_middle[10ec7aec7d9fdda3]::ty::context::tls::with_opt::<rustc_middle[10ec7aec7d9fdda3]::util::bug::opt_span_bug_fmt<rustc_span[a5a4c6b08f7cf6f]::span_encoding::Span>::{closure#0}, !>::{closure#0}
  13:     0x7d4a36b4516b - rustc_middle[10ec7aec7d9fdda3]::ty::context::tls::with_context_opt::<rustc_middle[10ec7aec7d9fdda3]::ty::context::tls::with_opt<rustc_middle[10ec7aec7d9fdda3]::util::bug::opt_span_bug_fmt<rustc_span[a5a4c6b08f7cf6f]::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
  14:     0x7d4a34650ac0 - rustc_middle[10ec7aec7d9fdda3]::util::bug::bug_fmt
  15:     0x7d4a34628187 - rustc_traits[87fc0fd8b38a9555]::codegen::codegen_select_candidate
  16:     0x7d4a381ef9f7 - rustc_query_impl[69287ea093d06d1d]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[69287ea093d06d1d]::query_impl::codegen_select_candidate::dynamic_query::{closure#2}::{closure#0}, rustc_middle[10ec7aec7d9fdda3]::query::erase::Erased<[u8; 16usize]>>
  17:     0x7d4a381efd23 - rustc_query_system[1449707d44461b06]::query::plumbing::try_execute_query::<rustc_query_impl[69287ea093d06d1d]::DynamicConfig<rustc_query_system[1449707d44461b06]::query::caches::DefaultCache<(rustc_middle[10ec7aec7d9fdda3]::ty::ParamEnv, rustc_type_ir[40aaada2a0110c33]::predicate::TraitRef<rustc_middle[10ec7aec7d9fdda3]::ty::context::TyCtxt>), rustc_middle[10ec7aec7d9fdda3]::query::erase::Erased<[u8; 16usize]>>, false, false, false>, rustc_query_impl[69287ea093d06d1d]::plumbing::QueryCtxt, false>
  18:     0x7d4a381ef99d - rustc_query_impl[69287ea093d06d1d]::query_impl::codegen_select_candidate::get_query_non_incr::__rust_end_short_backtrace
  19:     0x7d4a3514619c - rustc_ty_utils[6c9943a590e2da67]::instance::resolve_instance_raw
  20:     0x7d4a383965e9 - rustc_query_impl[69287ea093d06d1d]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[69287ea093d06d1d]::query_impl::resolve_instance_raw::dynamic_query::{closure#2}::{closure#0}, rustc_middle[10ec7aec7d9fdda3]::query::erase::Erased<[u8; 32usize]>>
  21:     0x7d4a38396929 - rustc_query_system[1449707d44461b06]::query::plumbing::try_execute_query::<rustc_query_impl[69287ea093d06d1d]::DynamicConfig<rustc_query_system[1449707d44461b06]::query::caches::DefaultCache<rustc_middle[10ec7aec7d9fdda3]::ty::ParamEnvAnd<(rustc_span[a5a4c6b08f7cf6f]::def_id::DefId, &rustc_middle[10ec7aec7d9fdda3]::ty::list::RawList<(), rustc_middle[10ec7aec7d9fdda3]::ty::generic_args::GenericArg>)>, rustc_middle[10ec7aec7d9fdda3]::query::erase::Erased<[u8; 32usize]>>, false, false, false>, rustc_query_impl[69287ea093d06d1d]::plumbing::QueryCtxt, false>
  22:     0x7d4a38396564 - rustc_query_impl[69287ea093d06d1d]::query_impl::resolve_instance_raw::get_query_non_incr::__rust_end_short_backtrace
  23:     0x7d4a37c3b2d3 - <rustc_middle[10ec7aec7d9fdda3]::ty::instance::Instance>::try_resolve
  24:     0x7d4a38ba52e9 - rustc_mir_transform[c8fa74b5a51f9a1a]::inline::cycle::mir_callgraph_reachable::process
  25:     0x7d4a38ba5a30 - rustc_mir_transform[c8fa74b5a51f9a1a]::inline::cycle::mir_callgraph_reachable::process
  26:     0x7d4a38ba4b14 - rustc_mir_transform[c8fa74b5a51f9a1a]::inline::cycle::mir_callgraph_reachable
  27:     0x7d4a38ba49a9 - rustc_query_impl[69287ea093d06d1d]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[69287ea093d06d1d]::query_impl::mir_callgraph_reachable::dynamic_query::{closure#2}::{closure#0}, rustc_middle[10ec7aec7d9fdda3]::query::erase::Erased<[u8; 1usize]>>
  28:     0x7d4a38ba496b - <rustc_query_impl[69287ea093d06d1d]::query_impl::mir_callgraph_reachable::dynamic_query::{closure#2} as core[5070cb7ec77c977]::ops::function::FnOnce<(rustc_middle[10ec7aec7d9fdda3]::ty::context::TyCtxt, (rustc_middle[10ec7aec7d9fdda3]::ty::instance::Instance, rustc_span[a5a4c6b08f7cf6f]::def_id::LocalDefId))>>::call_once
  29:     0x7d4a3838c719 - rustc_query_system[1449707d44461b06]::query::plumbing::try_execute_query::<rustc_query_impl[69287ea093d06d1d]::DynamicConfig<rustc_query_system[1449707d44461b06]::query::caches::DefaultCache<(rustc_middle[10ec7aec7d9fdda3]::ty::instance::Instance, rustc_span[a5a4c6b08f7cf6f]::def_id::LocalDefId), rustc_middle[10ec7aec7d9fdda3]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[69287ea093d06d1d]::plumbing::QueryCtxt, false>
  30:     0x7d4a3838c44c - rustc_query_impl[69287ea093d06d1d]::query_impl::mir_callgraph_reachable::get_query_non_incr::__rust_end_short_backtrace
  31:     0x7d4a385faf85 - <rustc_mir_transform[c8fa74b5a51f9a1a]::inline::Inliner>::try_inlining
  32:     0x7d4a385f8820 - <rustc_mir_transform[c8fa74b5a51f9a1a]::inline::Inliner>::process_blocks
  33:     0x7d4a385f7ce6 - <rustc_mir_transform[c8fa74b5a51f9a1a]::inline::Inline as rustc_middle[10ec7aec7d9fdda3]::mir::MirPass>::run_pass
  34:     0x7d4a37c02151 - rustc_mir_transform[c8fa74b5a51f9a1a]::pass_manager::run_passes_inner
  35:     0x7d4a38605a37 - rustc_mir_transform[c8fa74b5a51f9a1a]::optimized_mir
  36:     0x7d4a3862925d - rustc_query_impl[69287ea093d06d1d]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[69287ea093d06d1d]::query_impl::optimized_mir::dynamic_query::{closure#2}::{closure#0}, rustc_middle[10ec7aec7d9fdda3]::query::erase::Erased<[u8; 8usize]>>
  37:     0x7d4a37c25ea7 - rustc_query_system[1449707d44461b06]::query::plumbing::try_execute_query::<rustc_query_impl[69287ea093d06d1d]::DynamicConfig<rustc_query_system[1449707d44461b06]::query::caches::DefIdCache<rustc_middle[10ec7aec7d9fdda3]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[69287ea093d06d1d]::plumbing::QueryCtxt, false>
  38:     0x7d4a37c2545f - rustc_query_impl[69287ea093d06d1d]::query_impl::optimized_mir::get_query_non_incr::__rust_end_short_backtrace
  39:     0x7d4a347845c4 - <rustc_middle[10ec7aec7d9fdda3]::ty::context::TyCtxt>::instance_mir
  40:     0x7d4a38386406 - rustc_interface[f40e7651e6b02ea1]::passes::run_required_analyses
  41:     0x7d4a3875c49e - rustc_interface[f40e7651e6b02ea1]::passes::analysis
  42:     0x7d4a3875c471 - rustc_query_impl[69287ea093d06d1d]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[69287ea093d06d1d]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[10ec7aec7d9fdda3]::query::erase::Erased<[u8; 1usize]>>
  43:     0x7d4a38b867ee - rustc_query_system[1449707d44461b06]::query::plumbing::try_execute_query::<rustc_query_impl[69287ea093d06d1d]::DynamicConfig<rustc_query_system[1449707d44461b06]::query::caches::SingleCache<rustc_middle[10ec7aec7d9fdda3]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[69287ea093d06d1d]::plumbing::QueryCtxt, false>
  44:     0x7d4a38b8654f - rustc_query_impl[69287ea093d06d1d]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
  45:     0x7d4a389d38ea - rustc_interface[f40e7651e6b02ea1]::interface::run_compiler::<core[5070cb7ec77c977]::result::Result<(), rustc_span[a5a4c6b08f7cf6f]::ErrorGuaranteed>, rustc_driver_impl[ec4d44b725e7aa11]::run_compiler::{closure#0}>::{closure#1}
  46:     0x7d4a389b3210 - std[54b021f941472252]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[f40e7651e6b02ea1]::util::run_in_thread_with_globals<rustc_interface[f40e7651e6b02ea1]::util::run_in_thread_pool_with_globals<rustc_interface[f40e7651e6b02ea1]::interface::run_compiler<core[5070cb7ec77c977]::result::Result<(), rustc_span[a5a4c6b08f7cf6f]::ErrorGuaranteed>, rustc_driver_impl[ec4d44b725e7aa11]::run_compiler::{closure#0}>::{closure#1}, core[5070cb7ec77c977]::result::Result<(), rustc_span[a5a4c6b08f7cf6f]::ErrorGuaranteed>>::{closure#0}, core[5070cb7ec77c977]::result::Result<(), rustc_span[a5a4c6b08f7cf6f]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[5070cb7ec77c977]::result::Result<(), rustc_span[a5a4c6b08f7cf6f]::ErrorGuaranteed>>
  47:     0x7d4a389b387a - <<std[54b021f941472252]::thread::Builder>::spawn_unchecked_<rustc_interface[f40e7651e6b02ea1]::util::run_in_thread_with_globals<rustc_interface[f40e7651e6b02ea1]::util::run_in_thread_pool_with_globals<rustc_interface[f40e7651e6b02ea1]::interface::run_compiler<core[5070cb7ec77c977]::result::Result<(), rustc_span[a5a4c6b08f7cf6f]::ErrorGuaranteed>, rustc_driver_impl[ec4d44b725e7aa11]::run_compiler::{closure#0}>::{closure#1}, core[5070cb7ec77c977]::result::Result<(), rustc_span[a5a4c6b08f7cf6f]::ErrorGuaranteed>>::{closure#0}, core[5070cb7ec77c977]::result::Result<(), rustc_span[a5a4c6b08f7cf6f]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[5070cb7ec77c977]::result::Result<(), rustc_span[a5a4c6b08f7cf6f]::ErrorGuaranteed>>::{closure#1} as core[5070cb7ec77c977]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  48:     0x7d4a389b3beb - std::sys::pal::unix::thread::Thread::new::thread_start::he8fde62ed04f9a93
  49:     0x7d4a3a11039d - <unknown>
  50:     0x7d4a3a19549c - <unknown>
  51:                0x0 - <unknown>

note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: please make sure that you have updated to the latest nightly

note: rustc 1.82.0-nightly (0f26ee4fd 2024-08-17) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z validate-mir -C opt-level=3 --crate-type lib -Z dump-mir-dir=dir

query stack during panic:
#0 [codegen_select_candidate] computing candidate for `<{closure@/tmp/icemaker_global_tempdir.CTvLxe24vLkE/rustc_testrunner_tmpdir_reporting.sonlNjO1Rab2/mvce.rs:24:11: 24:15} as core::ops::function::FnMut<(&i32,)>>`
#1 [resolve_instance_raw] resolving instance `<{closure@/tmp/icemaker_global_tempdir.CTvLxe24vLkE/rustc_testrunner_tmpdir_reporting.sonlNjO1Rab2/mvce.rs:24:11: 24:15} as core::ops::function::FnMut<(&i32,)>>::call_mut`
end of query stack
error: aborting due to 3 previous errors; 2 warnings emitted

For more information about this error, try `rustc --explain E0276`.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️S-bug-has-testStatus: This bug is tracked inside the repo by a `known-bug` test.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions