rust-lang / rust

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

ICE: rustfmt: `silent emitter attempted to translate a diagnostic` #121638

Open matthiaskrgr opened 7 months ago

matthiaskrgr commented 7 months ago

Code

enum Enum<T: Melon<5>> {  SVariant { _v: T }, UVariant }

type AliasFixed = Enum<()>;

macro_rules! test {
    () => (test!(UVariant));
    ($variant:ident) => (if let AliasFixed::$variant::<3> {} = 5 (PartialEq, Eq, Copy, Clone) else { false });
}

fn main() {
    test!();
}

Meta

rustc --version --verbose:

rustfmt 1.7.0-nightly (0ecbd06 2024-02-25)

Error output

rustfmt --check file.rs

<output>
Backtrace

``` thread 'main' panicked at src/tools/rustfmt/src/parse/session.rs:42:9: silent emitter attempted to translate a diagnostic stack backtrace: 0: 0x7fc5b718ca06 - std::backtrace_rs::backtrace::libunwind::trace::hccc68910ff13f958 at /rustc/0ecbd0605770f45c9151715e66ba2b3cae367fcb/library/std/src/../../backtrace/src/backtrace/libunwind.rs:104:5 1: 0x7fc5b718ca06 - std::backtrace_rs::backtrace::trace_unsynchronized::hdd46fbd3506eaa92 at /rustc/0ecbd0605770f45c9151715e66ba2b3cae367fcb/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5 2: 0x7fc5b718ca06 - std::sys_common::backtrace::_print_fmt::h9ad5ddd930964dc6 at /rustc/0ecbd0605770f45c9151715e66ba2b3cae367fcb/library/std/src/sys_common/backtrace.rs:68:5 3: 0x7fc5b718ca06 - ::fmt::hb776b6ec91daeedd at /rustc/0ecbd0605770f45c9151715e66ba2b3cae367fcb/library/std/src/sys_common/backtrace.rs:44:22 4: 0x7fc5b71dd98c - core::fmt::rt::Argument::fmt::h2572fa2911ad0fb3 at /rustc/0ecbd0605770f45c9151715e66ba2b3cae367fcb/library/core/src/fmt/rt.rs:142:9 5: 0x7fc5b71dd98c - core::fmt::write::hff271b7e044cedf7 at /rustc/0ecbd0605770f45c9151715e66ba2b3cae367fcb/library/core/src/fmt/mod.rs:1120:17 6: 0x7fc5b71813cf - std::io::Write::write_fmt::h912c793bec133142 at /rustc/0ecbd0605770f45c9151715e66ba2b3cae367fcb/library/std/src/io/mod.rs:1846:15 7: 0x7fc5b718c7b4 - std::sys_common::backtrace::_print::hea0a6eee0651d2b8 at /rustc/0ecbd0605770f45c9151715e66ba2b3cae367fcb/library/std/src/sys_common/backtrace.rs:47:5 8: 0x7fc5b718c7b4 - std::sys_common::backtrace::print::h18c37b9b3c9e91a8 at /rustc/0ecbd0605770f45c9151715e66ba2b3cae367fcb/library/std/src/sys_common/backtrace.rs:34:9 9: 0x7fc5b718f4fb - std::panicking::default_hook::{{closure}}::h0be5e0bb06f8054c 10: 0x7fc5b718f249 - std::panicking::default_hook::h4893d748ed70c8dd at /rustc/0ecbd0605770f45c9151715e66ba2b3cae367fcb/library/std/src/panicking.rs:292:9 11: 0x7fc5ba0a083c - std[d552d81111d10822]::panicking::update_hook::>::{closure#0} 12: 0x7fc5b718fc60 - as core::ops::function::Fn>::call::h148c64496bcc724c at /rustc/0ecbd0605770f45c9151715e66ba2b3cae367fcb/library/alloc/src/boxed.rs:2030:9 13: 0x7fc5b718fc60 - std::panicking::rust_panic_with_hook::h18f7fbcd19143e05 at /rustc/0ecbd0605770f45c9151715e66ba2b3cae367fcb/library/std/src/panicking.rs:783:13 14: 0x7fc5b718f969 - std::panicking::begin_panic_handler::{{closure}}::h9b1e5e4a583f1a9f at /rustc/0ecbd0605770f45c9151715e66ba2b3cae367fcb/library/std/src/panicking.rs:649:13 15: 0x7fc5b718cee6 - std::sys_common::backtrace::__rust_end_short_backtrace::h5a04e37630d644c0 at /rustc/0ecbd0605770f45c9151715e66ba2b3cae367fcb/library/std/src/sys_common/backtrace.rs:171:18 16: 0x7fc5b718f6d4 - rust_begin_unwind at /rustc/0ecbd0605770f45c9151715e66ba2b3cae367fcb/library/std/src/panicking.rs:645:5 17: 0x7fc5b71d9ea5 - core::panicking::panic_fmt::h6be3da941e46ae73 at /rustc/0ecbd0605770f45c9151715e66ba2b3cae367fcb/library/core/src/panicking.rs:72:14 18: 0x5639a018902f - ::fallback_fluent_bundle 19: 0x5639a0104901 - ::translate_message 20: 0x7fc5b876e520 - ::eagerly_translate::, rustc_errors[fcee4e46eb3cda72]::diagnostic::DiagnosticArgValue>> 21: 0x7fc5b8751c34 - ::into_diagnostic 22: 0x7fc5bb7a7dd3 - ::parse_if_after_cond 23: 0x7fc5bb5da20c - ::parse_expr_dot_or_call 24: 0x7fc5bb5d2a6a - ::parse_expr_prefix 25: 0x7fc5bb5cf1f6 - ::parse_expr_assoc_with 26: 0x7fc5bbac86fc - ::parse_stmt_without_recovery 27: 0x7fc5bbac57b6 - ::parse_block_tail 28: 0x7fc5bb9f1ef0 - ::parse_fn 29: 0x7fc5bbd7f61b - ::parse_item_kind 30: 0x7fc5bb7ab1be - ::parse_item_common 31: 0x7fc5bb7a8c2a - ::parse_mod 32: 0x7fc5bc4e2af1 - ::parse_crate_mod 33: 0x5639a0188bdf - ::parse_crate 34: 0x5639a01422a4 - >>::format_input_inner::{closure#0} 35: 0x5639a01b5208 - rustfmt_nightly[8d4f808e9469a8c9]::format_snippet 36: 0x5639a01b5eb2 - rustfmt_nightly[8d4f808e9469a8c9]::format_code_block 37: 0x5639a01696b2 - , rustfmt_nightly[8d4f808e9469a8c9]::macros::rewrite_macro_def::{closure#1}, rustfmt_nightly[8d4f808e9469a8c9]::macros::rewrite_macro_def::{closure#2}, rustfmt_nightly[8d4f808e9469a8c9]::macros::rewrite_macro_def::{closure#3}> as core[bd769e7ba7008c3]::iter::traits::iterator::Iterator>::next::{closure#0} 38: 0x5639a016ea23 - rustfmt_nightly[8d4f808e9469a8c9]::macros::rewrite_macro_def 39: 0x5639a01aa4c5 - ::visit_item 40: 0x5639a018eae6 - ::visit_items_with_reordering 41: 0x5639a01ae6cb - ::format_separate_mod 42: 0x5639a00287be - >::format_input_inner::{closure#0} 43: 0x5639a003de41 - rustfmt[61a5e1a68eb86e51]::format_and_emit_report:: 44: 0x5639a003c2dc - rustfmt[61a5e1a68eb86e51]::execute 45: 0x5639a00379ab - rustfmt[61a5e1a68eb86e51]::main 46: 0x5639a0022083 - std[d552d81111d10822]::sys_common::backtrace::__rust_begin_short_backtrace:: 47: 0x5639a0024329 - std[d552d81111d10822]::rt::lang_start::<()>::{closure#0} 48: 0x7fc5b7171e93 - core::ops::function::impls:: for &F>::call_once::hd871a26e604b1b61 at /rustc/0ecbd0605770f45c9151715e66ba2b3cae367fcb/library/core/src/ops/function.rs:284:13 49: 0x7fc5b7171e93 - std::panicking::try::do_call::h8c535df1c0082533 at /rustc/0ecbd0605770f45c9151715e66ba2b3cae367fcb/library/std/src/panicking.rs:552:40 50: 0x7fc5b7171e93 - std::panicking::try::hb983a17d8c2d0d25 at /rustc/0ecbd0605770f45c9151715e66ba2b3cae367fcb/library/std/src/panicking.rs:516:19 51: 0x7fc5b7171e93 - std::panic::catch_unwind::hc39ef01f5f7bff9a at /rustc/0ecbd0605770f45c9151715e66ba2b3cae367fcb/library/std/src/panic.rs:142:14 52: 0x7fc5b7171e93 - std::rt::lang_start_internal::{{closure}}::h5d0060bca314125e at /rustc/0ecbd0605770f45c9151715e66ba2b3cae367fcb/library/std/src/rt.rs:148:48 53: 0x7fc5b7171e93 - std::panicking::try::do_call::h9eec93bd1b7794e8 at /rustc/0ecbd0605770f45c9151715e66ba2b3cae367fcb/library/std/src/panicking.rs:552:40 54: 0x7fc5b7171e93 - std::panicking::try::h4e014b77ab3dfd3d at /rustc/0ecbd0605770f45c9151715e66ba2b3cae367fcb/library/std/src/panicking.rs:516:19 55: 0x7fc5b7171e93 - std::panic::catch_unwind::ha2f220b987d764b1 at /rustc/0ecbd0605770f45c9151715e66ba2b3cae367fcb/library/std/src/panic.rs:142:14 56: 0x7fc5b7171e93 - std::rt::lang_start_internal::h55152906ff6b99c9 at /rustc/0ecbd0605770f45c9151715e66ba2b3cae367fcb/library/std/src/rt.rs:148:20 57: 0x5639a003f005 - main 58: 0x7fc5b6c29d90 - __libc_start_call_main at ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16 59: 0x7fc5b6c29e40 - __libc_start_main_impl at ./csu/../csu/libc-start.c:392:3 60: 0x5639a00116f9 - 61: 0x0 - error: the compiler unexpectedly panicked. this is a bug. note: we would appreciate a bug report: https://github.com/rust-lang/rustfmt/issues/new?labels=bug note: please attach the file at `/home/gh-matthiaskrgr/glacier2/fixed/rustc-ice-2024-02-26T15_55_50-1973730.txt` to your bug report query stack during panic: end of query stack Diff in /home/gh-matthiaskrgr/glacier2/fixed/icemaker_omni_4/5FDE66DB04A164775D5E5B8D7E65FD863D3B95DF714FBB75A0D76795307AB1D5.rs at line 1: -enum Enum> { SVariant { _v: T }, UVariant } +enum Enum> { + SVariant { _v: T }, + UVariant, +} type AliasFixed = Enum<()>; ```

matthiaskrgr commented 7 months ago

This bisects to #121454 , interesting...

matthiaskrgr commented 7 months ago

I'm wondering if there is something broken on how cargo bisect rustc handles components :|

edit: it no werky >:( https://github.com/rust-lang/cargo-bisect-rustc/issues/321

matthiaskrgr commented 7 months ago

This is probably https://github.com/rust-lang/rust/pull/121085 cc @davidtwco

matthiaskrgr commented 7 months ago

This seems kinda bad imo since using rustfmt on save, and saving broken code in order to get rustc to update diagnostics in an IDE is not uncommon. @rustbot prioritize

DaniPopes commented 7 months ago

See https://github.com/rust-lang/rustfmt/issues/6082, https://github.com/rust-lang/rust/pull/121301

apiraino commented 7 months ago

WG-prioritization assigning priority (Zulip discussion).

@rustbot label -I-prioritize +P-high