rust-lang / rust

Empowering everyone to build reliable and efficient software.
https://www.rust-lang.org
Other
96.91k stars 12.53k forks source link

ICE: Span must not be empty and have no suggestion (E0308) #114255

Open Noratrieb opened 1 year ago

Noratrieb commented 1 year ago

⚠️ requires debug assertions ⚠️

Found with tree-crasher.

looks like a different root cause than #114251, but if you fix this also test that to be sure.

Code

fn a<F>(f: F) {
    loop {}
}

fn main() {
    a(
        for _ in 0.. {},
        {},
    );
}

Meta

rustc --version --verbose:

rustc 1.73.0-dev d56a73f75430fa8ae92e97beb8a0e21713289ba5

Error output

without debug assertions:

error[E0061]: this function takes 1 argument but 2 arguments were supplied
 --> crash2.rs:6:5
  |
6 |     a(
  |     ^
7 |         for _ in 0.. {},
  |                        - help: remove the extra argument
8 |         {},
  |         -- unexpected argument of type `()`
  |
note: function defined here
 --> crash2.rs:1:4
  |
1 | fn a<F>(f: F) {
  |    ^    ----
Backtrace

``` thread 'rustc' panicked at 'assertion failed: `(left == right)` left: `Some(SubstitutionPart { span: crash2.rs:7:24: 7:24 (#4), snippet: "" })`, right: `None`: Span must not be empty and have no suggestion', /home/nils/projects/rust/compiler/rustc_errors/src/diagnostic.rs:623:9 stack backtrace: 0: 0x7ffff2d27727 - std::backtrace_rs::backtrace::libunwind::trace::h3d9ed4df748124a1 at /home/nils/projects/rust/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5 1: 0x7ffff2d27727 - std::backtrace_rs::backtrace::trace_unsynchronized::he4c4d81c86de394a at /home/nils/projects/rust/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5 2: 0x7ffff2d151c1 - std::sys_common::backtrace::_print_fmt::h9e921af20e34adfc at /home/nils/projects/rust/library/std/src/sys_common/backtrace.rs:65:5 3: 0x7ffff2d151c1 - ::fmt::hdbaa156e42cfc690 at /home/nils/projects/rust/library/std/src/sys_common/backtrace.rs:44:22 4: 0x7ffff2ddae08 - core::fmt::rt::Argument::fmt::h60a79991a7b6d1be at /home/nils/projects/rust/library/core/src/fmt/rt.rs:138:9 5: 0x7ffff2ddae08 - core::fmt::write::he0163c94c7f7aa8b at /home/nils/projects/rust/library/core/src/fmt/mod.rs:1094:21 6: 0x7ffff2d0c451 - std::io::Write::write_fmt::h9815287699485735 at /home/nils/projects/rust/library/std/src/io/mod.rs:1714:15 7: 0x7ffff2d15022 - std::sys_common::backtrace::_print::hfeb8edb197eba58b at /home/nils/projects/rust/library/std/src/sys_common/backtrace.rs:47:5 8: 0x7ffff2d15022 - std::sys_common::backtrace::print::hb971b63bd33b27df at /home/nils/projects/rust/library/std/src/sys_common/backtrace.rs:34:9 9: 0x7ffff2d162b0 - std::panicking::panic_hook_with_disk_dump::{{closure}}::hf1b8ab30ad6d9139 10: 0x7ffff2d1607a - std::panicking::panic_hook_with_disk_dump::hf76fde2bde123c3b at /home/nils/projects/rust/library/std/src/panicking.rs:312:9 11: 0x7ffff48300e0 - rustc_driver_impl[2639cc933e2d4e78]::install_ice_hook::{closure#0} at /home/nils/projects/rust/compiler/rustc_driver_impl/src/lib.rs:1386:13 12: 0x7ffff2d16802 - std::panicking::rust_panic_with_hook::h672762a245e5ec8e at /home/nils/projects/rust/library/std/src/panicking.rs:733:13 13: 0x7ffff2d412f2 - std::panicking::begin_panic_handler::{{closure}}::hfa5df3fc42b8b1de at /home/nils/projects/rust/library/std/src/panicking.rs:621:13 14: 0x7ffff2d41226 - std::sys_common::backtrace::__rust_end_short_backtrace::h3e204001403f9730 at /home/nils/projects/rust/library/std/src/sys_common/backtrace.rs:151:18 15: 0x7ffff2d16482 - rust_begin_unwind at /home/nils/projects/rust/library/std/src/panicking.rs:617:5 16: 0x7ffff2dc3fc3 - core::panicking::panic_fmt::h33f6a5f2dd8fcb25 at /home/nils/projects/rust/library/core/src/panicking.rs:67:14 17: 0x7ffff2dc44e1 - core::panicking::assert_failed_inner::h07c3e27b830d9f0b 18: 0x7ffff4fe753b - core[ecb3001d97bdddc]::panicking::assert_failed::, core[ecb3001d97bdddc]::option::Option<&rustc_errors[148f9c630af9adc4]::SubstitutionPart>> at /home/nils/projects/rust/library/core/src/panicking.rs:229:5 19: 0x7ffff4fb3b11 - ::multipart_suggestion_with_style:: at /home/nils/projects/rust/compiler/rustc_errors/src/diagnostic.rs:623:9 20: 0x7ffff4ff785c - >::multipart_suggestion:: at /home/nils/projects/rust/compiler/rustc_errors/src/diagnostic_builder.rs:466:13 21: 0x7ffff4ee12d5 - ::report_arg_errors at /home/nils/projects/rust/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs:1210:17 22: 0x7ffff4edd5dd - ::check_argument_types at /home/nils/projects/rust/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs:451:13 23: 0x7ffff4eb47f5 - ::confirm_builtin_call at /home/nils/projects/rust/compiler/rustc_hir_typeck/src/callee.rs:460:9 24: 0x7ffff4eb390a - ::check_call at /home/nils/projects/rust/compiler/rustc_hir_typeck/src/callee.rs:115:17 25: 0x7ffff4f1ba27 - ::check_expr_kind at /home/nils/projects/rust/compiler/rustc_hir_typeck/src/expr.rs:338:45 26: 0x7ffff4ec5c3b - ::check_expr_with_expectation_and_args::{closure#0} at /home/nils/projects/rust/compiler/rustc_hir_typeck/src/expr.rs:241:18 27: 0x7ffff4ec5c3b - stacker[dc4e670f93881e90]::maybe_grow::::check_expr_with_expectation_and_args::{closure#0}> at /home/nils/.cargo/registry/src/index.crates.io-6f17d22bba15001f/stacker-0.1.15/src/lib.rs:55:9 28: 0x7ffff4ec5c3b - rustc_data_structures[833fb17a58ea1b24]::stack::ensure_sufficient_stack::::check_expr_with_expectation_and_args::{closure#0}> at /home/nils/projects/rust/compiler/rustc_data_structures/src/stack.rs:17:5 29: 0x7ffff4ec5c3b - ::check_expr_with_expectation_and_args at /home/nils/projects/rust/compiler/rustc_hir_typeck/src/expr.rs:237:18 30: 0x7ffff4f1acae - ::check_expr_with_expectation at /home/nils/projects/rust/compiler/rustc_hir_typeck/src/expr.rs:191:9 31: 0x7ffff4ee4707 - ::check_stmt at /home/nils/projects/rust/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs:1522:17 32: 0x7ffff4e09d19 - ::check_block_with_expected::{closure#0} at /home/nils/projects/rust/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs:1574:17 33: 0x7ffff4e09d19 - ::with_breakable_ctxt::<::check_block_with_expected::{closure#0}, ()> at /home/nils/projects/rust/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs:1535:22 34: 0x7ffff4ee48cf - ::check_block_with_expected at /home/nils/projects/rust/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs:1572:26 35: 0x7ffff4f1b4d4 - ::check_expr_kind at /home/nils/projects/rust/compiler/rustc_hir_typeck/src/expr.rs:337:41 36: 0x7ffff4ec5c3b - ::check_expr_with_expectation_and_args::{closure#0} at /home/nils/projects/rust/compiler/rustc_hir_typeck/src/expr.rs:241:18 37: 0x7ffff4ec5c3b - stacker[dc4e670f93881e90]::maybe_grow::::check_expr_with_expectation_and_args::{closure#0}> at /home/nils/.cargo/registry/src/index.crates.io-6f17d22bba15001f/stacker-0.1.15/src/lib.rs:55:9 38: 0x7ffff4ec5c3b - rustc_data_structures[833fb17a58ea1b24]::stack::ensure_sufficient_stack::::check_expr_with_expectation_and_args::{closure#0}> at /home/nils/projects/rust/compiler/rustc_data_structures/src/stack.rs:17:5 39: 0x7ffff4ec5c3b - ::check_expr_with_expectation_and_args at /home/nils/projects/rust/compiler/rustc_hir_typeck/src/expr.rs:237:18 40: 0x7ffff4f1acae - ::check_expr_with_expectation at /home/nils/projects/rust/compiler/rustc_hir_typeck/src/expr.rs:191:9 41: 0x7ffff4ec75eb - ::check_expr_with_hint at /home/nils/projects/rust/compiler/rustc_hir_typeck/src/expr.rs:143:9 42: 0x7ffff4ec75eb - ::check_return_expr at /home/nils/projects/rust/compiler/rustc_hir_typeck/src/expr.rs:827:30 43: 0x7ffff4f43ab4 - rustc_hir_typeck[97c2e66f7282ea67]::check::check_fn at /home/nils/projects/rust/compiler/rustc_hir_typeck/src/check.rs:117:5 44: 0x7ffff4ffaef5 - rustc_hir_typeck[97c2e66f7282ea67]::typeck_with_fallback::::{closure#0} at /home/nils/projects/rust/compiler/rustc_hir_typeck/src/lib.rs:202:9 45: 0x7ffff4ffaef5 - rustc_hir_typeck[97c2e66f7282ea67]::typeck_with_fallback:: at /home/nils/projects/rust/compiler/rustc_hir_typeck/src/lib.rs:161:1 46: 0x7ffff625a1a5 - rustc_query_impl[687b6c99bf9f4e42]::query_impl::typeck::dynamic_query::{closure#2}::{closure#0} at /home/nils/projects/rust/compiler/rustc_query_impl/src/plumbing.rs:582:47 47: 0x7ffff625a1a5 - rustc_query_impl[687b6c99bf9f4e42]::plumbing::__rust_begin_short_backtrace::> at /home/nils/projects/rust/compiler/rustc_query_impl/src/plumbing.rs:506:18 48: 0x7ffff6401c47 - rustc_query_impl[687b6c99bf9f4e42]::query_impl::typeck::dynamic_query::{closure#2} at /home/nils/projects/rust/compiler/rustc_query_impl/src/plumbing.rs:578:25 49: 0x7ffff6401c47 - >::call_once at /home/nils/projects/rust/library/core/src/ops/function.rs:250:5 50: 0x7ffff61f7056 - >, false, false, false> as rustc_query_system[c992a1182486ae11]::query::config::QueryConfig>::compute at /home/nils/projects/rust/compiler/rustc_query_impl/src/lib.rs:117:9 51: 0x7ffff61f7056 - rustc_query_system[c992a1182486ae11]::query::plumbing::execute_job_non_incr::>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0} at /home/nils/projects/rust/compiler/rustc_query_system/src/query/plumbing.rs:481:72 52: 0x7ffff61f7056 - rustc_middle[2cb70032d7856bf7]::ty::context::tls::enter_context::>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 8usize]>>::{closure#0} at /home/nils/projects/rust/compiler/rustc_middle/src/ty/context/tls.rs:82:9 53: 0x7ffff61f7056 - >>::try_with::>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 8usize]>>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 8usize]>> at /home/nils/projects/rust/library/std/src/thread/local.rs:270:16 54: 0x7ffff61f7056 - >>::with::>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 8usize]>>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 8usize]>> at /home/nils/projects/rust/library/std/src/thread/local.rs:246:9 55: 0x7ffff63474c7 - rustc_middle[2cb70032d7856bf7]::ty::context::tls::enter_context::>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 8usize]>> at /home/nils/projects/rust/compiler/rustc_middle/src/ty/context/tls.rs:79:5 56: 0x7ffff63474c7 - ::start_query::, rustc_query_system[c992a1182486ae11]::query::plumbing::execute_job_non_incr>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0}>::{closure#0} at /home/nils/projects/rust/compiler/rustc_query_impl/src/plumbing.rs:149:13 57: 0x7ffff63474c7 - rustc_middle[2cb70032d7856bf7]::ty::context::tls::with_related_context::<::start_query, rustc_query_system[c992a1182486ae11]::query::plumbing::execute_job_non_incr>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0}>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 8usize]>>::{closure#0} at /home/nils/projects/rust/compiler/rustc_middle/src/ty/context/tls.rs:133:9 58: 0x7ffff63474c7 - rustc_middle[2cb70032d7856bf7]::ty::context::tls::with_context::::start_query, rustc_query_system[c992a1182486ae11]::query::plumbing::execute_job_non_incr>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0}>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 8usize]>>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 8usize]>>::{closure#0} at /home/nils/projects/rust/compiler/rustc_middle/src/ty/context/tls.rs:111:36 59: 0x7ffff63474c7 - rustc_middle[2cb70032d7856bf7]::ty::context::tls::with_context_opt::::start_query, rustc_query_system[c992a1182486ae11]::query::plumbing::execute_job_non_incr>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0}>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 8usize]>>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 8usize]>>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 8usize]>> at /home/nils/projects/rust/compiler/rustc_middle/src/ty/context/tls.rs:100:18 60: 0x7ffff63474c7 - rustc_middle[2cb70032d7856bf7]::ty::context::tls::with_context::::start_query, rustc_query_system[c992a1182486ae11]::query::plumbing::execute_job_non_incr>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0}>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 8usize]>>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 8usize]>> at /home/nils/projects/rust/compiler/rustc_middle/src/ty/context/tls.rs:111:5 61: 0x7ffff63474c7 - rustc_middle[2cb70032d7856bf7]::ty::context::tls::with_related_context::<::start_query, rustc_query_system[c992a1182486ae11]::query::plumbing::execute_job_non_incr>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0}>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 8usize]>> at /home/nils/projects/rust/compiler/rustc_middle/src/ty/context/tls.rs:124:5 62: 0x7ffff63474c7 - ::start_query::, rustc_query_system[c992a1182486ae11]::query::plumbing::execute_job_non_incr>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0}> at /home/nils/projects/rust/compiler/rustc_query_impl/src/plumbing.rs:134:9 63: 0x7ffff63474c7 - rustc_query_system[c992a1182486ae11]::query::plumbing::execute_job_non_incr::>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt> at /home/nils/projects/rust/compiler/rustc_query_system/src/query/plumbing.rs:481:18 64: 0x7ffff63474c7 - rustc_query_system[c992a1182486ae11]::query::plumbing::execute_job::>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt, false> at /home/nils/projects/rust/compiler/rustc_query_system/src/query/plumbing.rs:414:9 65: 0x7ffff63474c7 - rustc_query_system[c992a1182486ae11]::query::plumbing::try_execute_query::>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt, false> at /home/nils/projects/rust/compiler/rustc_query_system/src/query/plumbing.rs:359:13 66: 0x7ffff6406995 - rustc_query_system[c992a1182486ae11]::query::plumbing::get_query_non_incr::>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0} at /home/nils/projects/rust/compiler/rustc_query_system/src/query/plumbing.rs:811:32 67: 0x7ffff6406995 - stacker[dc4e670f93881e90]::maybe_grow::, rustc_query_system[c992a1182486ae11]::query::plumbing::get_query_non_incr>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0}> at /home/nils/.cargo/registry/src/index.crates.io-6f17d22bba15001f/stacker-0.1.15/src/lib.rs:55:9 68: 0x7ffff6406995 - rustc_data_structures[833fb17a58ea1b24]::stack::ensure_sufficient_stack::, rustc_query_system[c992a1182486ae11]::query::plumbing::get_query_non_incr>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0}> at /home/nils/projects/rust/compiler/rustc_data_structures/src/stack.rs:17:5 69: 0x7ffff6406995 - rustc_query_system[c992a1182486ae11]::query::plumbing::get_query_non_incr::>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt> at /home/nils/projects/rust/compiler/rustc_query_system/src/query/plumbing.rs:811:5 70: 0x7ffff6406995 - rustc_query_impl[687b6c99bf9f4e42]::query_impl::typeck::get_query_non_incr::__rust_end_short_backtrace at /home/nils/projects/rust/compiler/rustc_query_impl/src/plumbing.rs:556:26 71: 0x7ffff5167347 - rustc_middle[2cb70032d7856bf7]::query::plumbing::query_ensure::>> at /home/nils/projects/rust/compiler/rustc_middle/src/query/plumbing.rs:171:9 72: 0x7ffff5167347 - ::typeck:: at /home/nils/projects/rust/compiler/rustc_middle/src/query/plumbing.rs:346:17 73: 0x7ffff5167347 - rustc_hir_analysis[8f944d6169c0c192]::check_crate::{closure#7} at /home/nils/projects/rust/compiler/rustc_hir_analysis/src/lib.rs:247:13 74: 0x7ffff5167347 - ::par_body_owners::::{closure#0} at /home/nils/projects/rust/compiler/rustc_middle/src/hir/map/mod.rs:490:82 75: 0x7ffff5167347 - rustc_data_structures[833fb17a58ea1b24]::sync::par_for_each_in::<&[rustc_span[aa2249d917f09169]::def_id::LocalDefId], ::par_body_owners::{closure#0}>::{closure#0}::{closure#0} at /home/nils/projects/rust/compiler/rustc_data_structures/src/sync.rs:218:66 76: 0x7ffff5167347 - ::par_body_owners::{closure#0}>::{closure#0}::{closure#0}> as core[ecb3001d97bdddc]::ops::function::FnOnce<()>>::call_once at /home/nils/projects/rust/library/core/src/panic/unwind_safe.rs:271:9 77: 0x7ffff5166d69 - std[14584cf2425d82f6]::panicking::try::do_call::::par_body_owners::{closure#0}>::{closure#0}::{closure#0}>, ()> at /home/nils/projects/rust/library/std/src/panicking.rs:524:40 78: 0x7ffff5166d69 - std[14584cf2425d82f6]::panicking::try::<(), core[ecb3001d97bdddc]::panic::unwind_safe::AssertUnwindSafe::par_body_owners::{closure#0}>::{closure#0}::{closure#0}>> at /home/nils/projects/rust/library/std/src/panicking.rs:488:19 79: 0x7ffff516be0c - rustc_data_structures[833fb17a58ea1b24]::sync::par_for_each_in::<&[rustc_span[aa2249d917f09169]::def_id::LocalDefId], ::par_body_owners::{closure#0}>::{closure#0} at /home/nils/projects/rust/compiler/rustc_data_structures/src/sync.rs:218:33 80: 0x7ffff516be0c - as core[ecb3001d97bdddc]::iter::traits::iterator::Iterator>::for_each::::par_body_owners::{closure#0}>::{closure#0}> at /home/nils/projects/rust/library/core/src/slice/iter/macros.rs:254:21 81: 0x7ffff516be0c - rustc_data_structures[833fb17a58ea1b24]::sync::par_for_each_in::<&[rustc_span[aa2249d917f09169]::def_id::LocalDefId], ::par_body_owners::{closure#0}> at /home/nils/projects/rust/compiler/rustc_data_structures/src/sync.rs:217:13 82: 0x7ffff5262b3e - ::par_body_owners:: at /home/nils/projects/rust/compiler/rustc_middle/src/hir/map/mod.rs:490:9 83: 0x7ffff5262b3e - rustc_hir_analysis[8f944d6169c0c192]::check_crate at /home/nils/projects/rust/compiler/rustc_hir_analysis/src/lib.rs:244:5 84: 0x7ffff4ab5544 - rustc_interface[1dcf4826fcbd5076]::passes::analysis at /home/nils/projects/rust/compiler/rustc_interface/src/passes.rs:788:5 85: 0x7ffff625a763 - rustc_query_impl[687b6c99bf9f4e42]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0} at /home/nils/projects/rust/compiler/rustc_query_impl/src/plumbing.rs:582:47 86: 0x7ffff625a763 - rustc_query_impl[687b6c99bf9f4e42]::plumbing::__rust_begin_short_backtrace::> at /home/nils/projects/rust/compiler/rustc_query_impl/src/plumbing.rs:506:18 87: 0x7ffff629f003 - rustc_query_impl[687b6c99bf9f4e42]::query_impl::analysis::dynamic_query::{closure#2} at /home/nils/projects/rust/compiler/rustc_query_impl/src/plumbing.rs:578:25 88: 0x7ffff629f003 - >::call_once at /home/nils/projects/rust/library/core/src/ops/function.rs:250:5 89: 0x7ffff61f334d - >, false, false, false> as rustc_query_system[c992a1182486ae11]::query::config::QueryConfig>::compute at /home/nils/projects/rust/compiler/rustc_query_impl/src/lib.rs:117:9 90: 0x7ffff61f334d - rustc_query_system[c992a1182486ae11]::query::plumbing::execute_job_non_incr::>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0} at /home/nils/projects/rust/compiler/rustc_query_system/src/query/plumbing.rs:481:72 91: 0x7ffff61f334d - rustc_middle[2cb70032d7856bf7]::ty::context::tls::enter_context::>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 1usize]>>::{closure#0} at /home/nils/projects/rust/compiler/rustc_middle/src/ty/context/tls.rs:82:9 92: 0x7ffff61f334d - >>::try_with::>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 1usize]>>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 1usize]>> at /home/nils/projects/rust/library/std/src/thread/local.rs:270:16 93: 0x7ffff61f334d - >>::with::>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 1usize]>>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 1usize]>> at /home/nils/projects/rust/library/std/src/thread/local.rs:246:9 94: 0x7ffff62fb054 - rustc_middle[2cb70032d7856bf7]::ty::context::tls::enter_context::>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 1usize]>> at /home/nils/projects/rust/compiler/rustc_middle/src/ty/context/tls.rs:79:5 95: 0x7ffff62fb054 - ::start_query::, rustc_query_system[c992a1182486ae11]::query::plumbing::execute_job_non_incr>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0}>::{closure#0} at /home/nils/projects/rust/compiler/rustc_query_impl/src/plumbing.rs:149:13 96: 0x7ffff62fb054 - rustc_middle[2cb70032d7856bf7]::ty::context::tls::with_related_context::<::start_query, rustc_query_system[c992a1182486ae11]::query::plumbing::execute_job_non_incr>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0}>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 1usize]>>::{closure#0} at /home/nils/projects/rust/compiler/rustc_middle/src/ty/context/tls.rs:133:9 97: 0x7ffff62fb054 - rustc_middle[2cb70032d7856bf7]::ty::context::tls::with_context::::start_query, rustc_query_system[c992a1182486ae11]::query::plumbing::execute_job_non_incr>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0}>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 1usize]>>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 1usize]>>::{closure#0} at /home/nils/projects/rust/compiler/rustc_middle/src/ty/context/tls.rs:111:36 98: 0x7ffff62fb054 - rustc_middle[2cb70032d7856bf7]::ty::context::tls::with_context_opt::::start_query, rustc_query_system[c992a1182486ae11]::query::plumbing::execute_job_non_incr>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0}>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 1usize]>>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 1usize]>>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 1usize]>> at /home/nils/projects/rust/compiler/rustc_middle/src/ty/context/tls.rs:100:18 99: 0x7ffff62fb054 - rustc_middle[2cb70032d7856bf7]::ty::context::tls::with_context::::start_query, rustc_query_system[c992a1182486ae11]::query::plumbing::execute_job_non_incr>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0}>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 1usize]>>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 1usize]>> at /home/nils/projects/rust/compiler/rustc_middle/src/ty/context/tls.rs:111:5 100: 0x7ffff62fb054 - rustc_middle[2cb70032d7856bf7]::ty::context::tls::with_related_context::<::start_query, rustc_query_system[c992a1182486ae11]::query::plumbing::execute_job_non_incr>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0}>::{closure#0}, rustc_middle[2cb70032d7856bf7]::query::erase::Erased<[u8; 1usize]>> at /home/nils/projects/rust/compiler/rustc_middle/src/ty/context/tls.rs:124:5 101: 0x7ffff62fb054 - ::start_query::, rustc_query_system[c992a1182486ae11]::query::plumbing::execute_job_non_incr>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0}> at /home/nils/projects/rust/compiler/rustc_query_impl/src/plumbing.rs:134:9 102: 0x7ffff62fb054 - rustc_query_system[c992a1182486ae11]::query::plumbing::execute_job_non_incr::>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt> at /home/nils/projects/rust/compiler/rustc_query_system/src/query/plumbing.rs:481:18 103: 0x7ffff62fb054 - rustc_query_system[c992a1182486ae11]::query::plumbing::execute_job::>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt, false> at /home/nils/projects/rust/compiler/rustc_query_system/src/query/plumbing.rs:414:9 104: 0x7ffff62fb054 - rustc_query_system[c992a1182486ae11]::query::plumbing::try_execute_query::>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt, false> at /home/nils/projects/rust/compiler/rustc_query_system/src/query/plumbing.rs:359:13 105: 0x7ffff64061ad - rustc_query_system[c992a1182486ae11]::query::plumbing::get_query_non_incr::>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0} at /home/nils/projects/rust/compiler/rustc_query_system/src/query/plumbing.rs:811:32 106: 0x7ffff64061ad - stacker[dc4e670f93881e90]::maybe_grow::, rustc_query_system[c992a1182486ae11]::query::plumbing::get_query_non_incr>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0}> at /home/nils/.cargo/registry/src/index.crates.io-6f17d22bba15001f/stacker-0.1.15/src/lib.rs:55:9 107: 0x7ffff64061ad - rustc_data_structures[833fb17a58ea1b24]::stack::ensure_sufficient_stack::, rustc_query_system[c992a1182486ae11]::query::plumbing::get_query_non_incr>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt>::{closure#0}> at /home/nils/projects/rust/compiler/rustc_data_structures/src/stack.rs:17:5 108: 0x7ffff64061ad - rustc_query_system[c992a1182486ae11]::query::plumbing::get_query_non_incr::>, false, false, false>, rustc_query_impl[687b6c99bf9f4e42]::plumbing::QueryCtxt> at /home/nils/projects/rust/compiler/rustc_query_system/src/query/plumbing.rs:811:5 109: 0x7ffff64061ad - rustc_query_impl[687b6c99bf9f4e42]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace at /home/nils/projects/rust/compiler/rustc_query_impl/src/plumbing.rs:556:26 110: 0x7ffff48c9cb7 - rustc_middle[2cb70032d7856bf7]::query::plumbing::query_get_at::>> at /home/nils/projects/rust/compiler/rustc_middle/src/query/plumbing.rs:155:17 111: 0x7ffff48c9cb7 - ::analysis at /home/nils/projects/rust/compiler/rustc_middle/src/query/plumbing.rs:385:31 112: 0x7ffff48c9cb7 - ::analysis at /home/nils/projects/rust/compiler/rustc_middle/src/query/plumbing.rs:376:17 113: 0x7ffff48c9cb7 - rustc_driver_impl[2639cc933e2d4e78]::run_compiler::{closure#1}::{closure#2}::{closure#4} at /home/nils/projects/rust/compiler/rustc_driver_impl/src/lib.rs:444:48 114: 0x7ffff48c9cb7 - ::enter::>::{closure#0} at /home/nils/projects/rust/compiler/rustc_middle/src/ty/context.rs:589:37 115: 0x7ffff48c9cb7 - rustc_middle[2cb70032d7856bf7]::ty::context::tls::enter_context::<::enter>::{closure#0}, core[ecb3001d97bdddc]::result::Result<(), rustc_span[aa2249d917f09169]::ErrorGuaranteed>>::{closure#0} at /home/nils/projects/rust/compiler/rustc_middle/src/ty/context/tls.rs:82:9 116: 0x7ffff48c9cb7 - >>::try_with::::enter>::{closure#0}, core[ecb3001d97bdddc]::result::Result<(), rustc_span[aa2249d917f09169]::ErrorGuaranteed>>::{closure#0}, core[ecb3001d97bdddc]::result::Result<(), rustc_span[aa2249d917f09169]::ErrorGuaranteed>> at /home/nils/projects/rust/library/std/src/thread/local.rs:270:16 117: 0x7ffff48c9cb7 - >>::with::::enter>::{closure#0}, core[ecb3001d97bdddc]::result::Result<(), rustc_span[aa2249d917f09169]::ErrorGuaranteed>>::{closure#0}, core[ecb3001d97bdddc]::result::Result<(), rustc_span[aa2249d917f09169]::ErrorGuaranteed>> at /home/nils/projects/rust/library/std/src/thread/local.rs:246:9 118: 0x7ffff48b67a8 - rustc_middle[2cb70032d7856bf7]::ty::context::tls::enter_context::<::enter>::{closure#0}, core[ecb3001d97bdddc]::result::Result<(), rustc_span[aa2249d917f09169]::ErrorGuaranteed>> at /home/nils/projects/rust/compiler/rustc_middle/src/ty/context/tls.rs:79:5 119: 0x7ffff48b67a8 - ::enter::> at /home/nils/projects/rust/compiler/rustc_middle/src/ty/context.rs:589:9 120: 0x7ffff48a14da - rustc_driver_impl[2639cc933e2d4e78]::run_compiler::{closure#1}::{closure#2} at /home/nils/projects/rust/compiler/rustc_driver_impl/src/lib.rs:444:13 121: 0x7ffff48a14da - ::enter::, rustc_span[aa2249d917f09169]::ErrorGuaranteed>> at /home/nils/projects/rust/compiler/rustc_interface/src/queries.rs:389:19 122: 0x7ffff488a1f0 - rustc_driver_impl[2639cc933e2d4e78]::run_compiler::{closure#1} at /home/nils/projects/rust/compiler/rustc_driver_impl/src/lib.rs:385:22 123: 0x7ffff488a1f0 - rustc_interface[1dcf4826fcbd5076]::interface::run_compiler::, rustc_driver_impl[2639cc933e2d4e78]::run_compiler::{closure#1}>::{closure#0}::{closure#0} at /home/nils/projects/rust/compiler/rustc_interface/src/interface.rs:339:21 124: 0x7ffff488a1f0 - rustc_span[aa2249d917f09169]::set_source_map::, rustc_interface[1dcf4826fcbd5076]::interface::run_compiler, rustc_driver_impl[2639cc933e2d4e78]::run_compiler::{closure#1}>::{closure#0}::{closure#0}> at /home/nils/projects/rust/compiler/rustc_span/src/lib.rs:1042:5 125: 0x7ffff488857e - rustc_interface[1dcf4826fcbd5076]::interface::run_compiler::, rustc_driver_impl[2639cc933e2d4e78]::run_compiler::{closure#1}>::{closure#0} at /home/nils/projects/rust/compiler/rustc_interface/src/interface.rs:333:13 126: 0x7ffff488857e - >::set::, rustc_driver_impl[2639cc933e2d4e78]::run_compiler::{closure#1}>::{closure#0}, core[ecb3001d97bdddc]::result::Result<(), rustc_span[aa2249d917f09169]::ErrorGuaranteed>> at /home/nils/.cargo/registry/src/index.crates.io-6f17d22bba15001f/scoped-tls-1.0.1/src/lib.rs:137:9 127: 0x7ffff48b7670 - rustc_span[aa2249d917f09169]::create_session_globals_then::, rustc_interface[1dcf4826fcbd5076]::interface::run_compiler, rustc_driver_impl[2639cc933e2d4e78]::run_compiler::{closure#1}>::{closure#0}> at /home/nils/projects/rust/compiler/rustc_span/src/lib.rs:121:5 128: 0x7ffff48b7670 - rustc_interface[1dcf4826fcbd5076]::util::run_in_thread_pool_with_globals::, rustc_driver_impl[2639cc933e2d4e78]::run_compiler::{closure#1}>::{closure#0}, core[ecb3001d97bdddc]::result::Result<(), rustc_span[aa2249d917f09169]::ErrorGuaranteed>>::{closure#0}::{closure#0} at /home/nils/projects/rust/compiler/rustc_interface/src/util.rs:163:38 129: 0x7ffff48b7670 - std[14584cf2425d82f6]::sys_common::backtrace::__rust_begin_short_backtrace::, rustc_driver_impl[2639cc933e2d4e78]::run_compiler::{closure#1}>::{closure#0}, core[ecb3001d97bdddc]::result::Result<(), rustc_span[aa2249d917f09169]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[ecb3001d97bdddc]::result::Result<(), rustc_span[aa2249d917f09169]::ErrorGuaranteed>> at /home/nils/projects/rust/library/std/src/sys_common/backtrace.rs:135:18 130: 0x7ffff48b7e96 - ::spawn_unchecked_::, rustc_driver_impl[2639cc933e2d4e78]::run_compiler::{closure#1}>::{closure#0}, core[ecb3001d97bdddc]::result::Result<(), rustc_span[aa2249d917f09169]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[ecb3001d97bdddc]::result::Result<(), rustc_span[aa2249d917f09169]::ErrorGuaranteed>>::{closure#1}::{closure#0} at /home/nils/projects/rust/library/std/src/thread/mod.rs:529:17 131: 0x7ffff48b7e96 - ::spawn_unchecked_, rustc_driver_impl[2639cc933e2d4e78]::run_compiler::{closure#1}>::{closure#0}, core[ecb3001d97bdddc]::result::Result<(), rustc_span[aa2249d917f09169]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[ecb3001d97bdddc]::result::Result<(), rustc_span[aa2249d917f09169]::ErrorGuaranteed>>::{closure#1}::{closure#0}> as core[ecb3001d97bdddc]::ops::function::FnOnce<()>>::call_once at /home/nils/projects/rust/library/core/src/panic/unwind_safe.rs:271:9 132: 0x7ffff48797b4 - std[14584cf2425d82f6]::panicking::try::do_call::::spawn_unchecked_, rustc_driver_impl[2639cc933e2d4e78]::run_compiler::{closure#1}>::{closure#0}, core[ecb3001d97bdddc]::result::Result<(), rustc_span[aa2249d917f09169]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[ecb3001d97bdddc]::result::Result<(), rustc_span[aa2249d917f09169]::ErrorGuaranteed>>::{closure#1}::{closure#0}>, core[ecb3001d97bdddc]::result::Result<(), rustc_span[aa2249d917f09169]::ErrorGuaranteed>> at /home/nils/projects/rust/library/std/src/panicking.rs:524:40 133: 0x7ffff48797b4 - std[14584cf2425d82f6]::panicking::try::, core[ecb3001d97bdddc]::panic::unwind_safe::AssertUnwindSafe<::spawn_unchecked_, rustc_driver_impl[2639cc933e2d4e78]::run_compiler::{closure#1}>::{closure#0}, core[ecb3001d97bdddc]::result::Result<(), rustc_span[aa2249d917f09169]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[ecb3001d97bdddc]::result::Result<(), rustc_span[aa2249d917f09169]::ErrorGuaranteed>>::{closure#1}::{closure#0}>> at /home/nils/projects/rust/library/std/src/panicking.rs:488:19 134: 0x7ffff48cc5ba - std[14584cf2425d82f6]::panic::catch_unwind::::spawn_unchecked_, rustc_driver_impl[2639cc933e2d4e78]::run_compiler::{closure#1}>::{closure#0}, core[ecb3001d97bdddc]::result::Result<(), rustc_span[aa2249d917f09169]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[ecb3001d97bdddc]::result::Result<(), rustc_span[aa2249d917f09169]::ErrorGuaranteed>>::{closure#1}::{closure#0}>, core[ecb3001d97bdddc]::result::Result<(), rustc_span[aa2249d917f09169]::ErrorGuaranteed>> at /home/nils/projects/rust/library/std/src/panic.rs:142:14 135: 0x7ffff48cc5ba - ::spawn_unchecked_::, rustc_driver_impl[2639cc933e2d4e78]::run_compiler::{closure#1}>::{closure#0}, core[ecb3001d97bdddc]::result::Result<(), rustc_span[aa2249d917f09169]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[ecb3001d97bdddc]::result::Result<(), rustc_span[aa2249d917f09169]::ErrorGuaranteed>>::{closure#1} at /home/nils/projects/rust/library/std/src/thread/mod.rs:528:30 136: 0x7ffff48cc5ba - <::spawn_unchecked_, rustc_driver_impl[2639cc933e2d4e78]::run_compiler::{closure#1}>::{closure#0}, core[ecb3001d97bdddc]::result::Result<(), rustc_span[aa2249d917f09169]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[ecb3001d97bdddc]::result::Result<(), rustc_span[aa2249d917f09169]::ErrorGuaranteed>>::{closure#1} as core[ecb3001d97bdddc]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} at /home/nils/projects/rust/library/core/src/ops/function.rs:250:5 137: 0x7ffff2d29b0a - as core::ops::function::FnOnce>::call_once::h2515b5ba737f4759 at /home/nils/projects/rust/library/alloc/src/boxed.rs:2007:9 138: 0x7ffff2d29b0a - as core::ops::function::FnOnce>::call_once::hf84b8969f2ac6739 at /home/nils/projects/rust/library/alloc/src/boxed.rs:2007:9 139: 0x7ffff2d7376f - std::sys::unix::thread::Thread::new::thread_start::h0229213dd0406b64 at /home/nils/projects/rust/library/std/src/sys/unix/thread.rs:108:17 140: 0x7ffff2aaae24 - start_thread 141: 0x7ffff2b2c9b0 - __clone3 142: 0x0 - error: the compiler unexpectedly panicked. this is a bug. 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 attach the file at `/home/nils/projects/rust/tree-crasher/cases/rustc-ice-2023-07-30T15:15:05.737698896Z-3121992.txt` to your bug report query stack during panic: #0 [typeck] type-checking `main` #1 [analysis] running analysis passes on this crate end of query stack ``` There's more output about "no errors encountered even though `delay_span_bug` issued which doesn't really make sense as there were errors emitted, it just didn't fully complete emission.

meysam81 commented 1 year ago

Hello @Nilstrieb I'm interested in taking this, but would you please give more context as to where to look for when fixing and how to test my modifications?

Noratrieb commented 1 year ago

The issue here is that the compiler wants to emit a suggestion in the error message, but the span (location) of the suggestion is empty/wrong. By looking at the backtrace, you can figure out where the error is emitted. Then you can look there to see why the span would be wrong. See the rustc dev guide for help about building and running: https://rustc-dev-guide.rust-lang.org/building/how-to-build-and-run.html You can also search the issue tracker for "Span must not be empty and have no suggestion" and look for issues that have been closed. The fixing PRs show how this issues was fixed in other places which may serve as inspiration, as this is an issue that keeps coming up in different places.

meysam81 commented 1 year ago

@rustbot claim

lukas-code commented 1 year ago

This is actually (partially) fixed by https://github.com/rust-lang/rust/pull/112500. (Someone review that please?)

But even though that PR makes the span no longer empty and technically correct, it could still use some improvements:

error[E0061]: this function takes 1 argument but 2 arguments were supplied
 --> src/main.rs:6:5
  |
6 |       a(
  |       ^
7 |           for _ in 0.. {},
  |  ________________________-
8 | |         {},
  | |         --
  | |_________||
  |           |help: remove the extra argument
  |           unexpected argument of type `()`
  |
note: function defined here
 --> src/main.rs:1:4
  |
1 | fn a<F>(f: F) {
  |    ^    ----

In particular, the "remove the extra argument" span should probably not include the previous , if that would make the span multi-line.

@meysam81 if you still want to work on this, the relevant code is here: https://github.com/rust-lang/rust/blob/89acdae9f243da15549c7a8bc737e6240c301790/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs#L937-L938

The SourceMap::is_multiline function may be useful and you can get a reference to the SourceMap with tcx.sess.source_map().