rust-lang / rust-lang/rust-analyzer

panic: `incompatible integer types` adding enum and int

Open
#22,954 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

C-bug I-panic
Dominant language
Rust
Stars
16.9k
Forks
2.2k
Avg merge
1d 12h
Merged PRs (30d)
72

Description

enum Foo {
    A = 0,
    B = {let v = Foo::A; v + 2},
}

fn main() {}

rust-analyzer analysis-stats . --run-all-ide-things
Database loaded:     589.78ms, 229minstr, 48mb (metadata 298.98ms, 1011kinstr, 151kb; build 33.74ms, 180kinstr, 2144b)
  item trees: 1
  dependency lines of code: 1_467_433, item trees: 2_948
  dependency item stats: traits: 848, impl: 9_686, mods: 3_059, macro calls: 5_580, macro rules: 1_054
Item Tree Collection: 4.18s, 23ginstr, 427mb
  Total Statistics:
    crates: 1, mods: 1, decls: 2, bodies: 3, adts: 1, consts: 0, signatures: 2, variants: 2
  Workspace:
    traits: 0, macro_rules macros: 0, proc_macros: 0
    lines of code: 6, item trees: 1
    usages: traits: 0, impl: 0, mods: 0, macro calls: 0, macro rules: 0
  Dependencies:
    lines of code: 1_467_433, item trees: 2_948
    declarations: traits: 848, impl: 9_686, mods: 3_059, macro calls: 5_580, macro rules: 1_054
Item Collection:     2.50s, 11ginstr, 179mb
Crate lang items:    445.06ms, 2474minstr, 31mb
Expression Store Lowering: 268.86µs, 329kinstr, 7kb
  exprs: 7, ??ty: 0 (0%), ?ty: 0 (0%), !ty: 0
  pats: 1, ??ty: 0 (0%), ?ty: 0 (0%), !ty: 0
  panics: 0
Inference:           358.96ms, 1346minstr, 35mb
MIR lowering:        66.13µs, 97kinstr, 704b
Mir failed bodies: 0 (0%)

thread 'main' (1789978) panicked at src/tools/rust-analyzer/crates/hir-ty/src/mir/eval.rs:3390:5:
incompatible integer types
stack backtrace:
   0:     0x7f7fcbca6246 - <<std[74eb2aff46e51e81]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[7aff35c028b048a4]::fmt::Display>::fmt
   1:     0x7f7fcc40ad52 - core[7aff35c028b048a4]::fmt::write
   2:     0x7f7fcbcbb38c - <std[74eb2aff46e51e81]::sys::stdio::unix::Stderr as core[7aff35c028b048a4]::io::write::Write>::write_fmt
   3:     0x7f7fcbc77e7a - std[74eb2aff46e51e81]::panicking::default_hook::{closure#0}
   4:     0x7f7fcbc988e3 - std[74eb2aff46e51e81]::panicking::default_hook
   5:     0x7f7fcbc98d4b - std[74eb2aff46e51e81]::panicking::panic_with_hook
   6:     0x7f7fcbc77f64 - std[74eb2aff46e51e81]::panicking::panic_handler::{closure#0}
   7:     0x7f7fcbc6f3e9 - std[74eb2aff46e51e81]::sys::backtrace::__rust_end_short_backtrace::<std[74eb2aff46e51e81]::panicking::panic_handler::{closure#0}, !>
   8:     0x7f7fcbc7988d - __rustc[49844a0cf2bb6b0d]::rust_begin_unwind
   9:     0x7f7fc8a33c7c - core[7aff35c028b048a4]::panicking::panic_fmt
  10:     0x55c777fc63dd - <hir_ty[f58a0abe133f1c00]::mir::eval::IntValue>::checked_add
  11:     0x55c777f94039 - <hir_ty[f58a0abe133f1c00]::mir::eval::Evaluator>::eval_rvalue
  12:     0x55c77800982f - hir_ty[f58a0abe133f1c00]::mir::eval::interpret_mir
  13:     0x55c778084853 - <hir_ty[f58a0abe133f1c00]::consteval::_::const_eval_discriminant_variant_Configuration_ as salsa[8774cceebe7971b6]::function::Configuration>::execute
  14:     0x55c777e925a0 - <salsa[8774cceebe7971b6]::function::IngredientImpl<hir_ty[f58a0abe133f1c00]::consteval::_::const_eval_discriminant_variant_Configuration_>>::execute
  15:     0x55c778001875 - hir_ty[f58a0abe133f1c00]::consteval::const_eval_discriminant_variant
  16:     0x55c77806dbe6 - <core[7aff35c028b048a4]::iter::adapters::map::Map<core[7aff35c028b048a4]::iter::adapters::filter::Filter<core[7aff35c028b048a4]::iter::adapters::filter_map::FilterMap<core[7aff35c028b048a4]::iter::adapters::map::Map<core[7aff35c028b048a4]::iter::adapters::enumerate::Enumerate<core[7aff35c028b048a4]::slice::iter::Iter<ra_ap_rustc_index[6e6194786c499247]::vec::IndexVec<hir_ty[f58a0abe133f1c00]::layout::RustcFieldIdx, &&ra_ap_rustc_abi[6a9deacac8faccbd]::LayoutData<hir_ty[f58a0abe133f1c00]::layout::RustcFieldIdx, hir_ty[f58a0abe133f1c00]::layout::RustcEnumVariantIdx>>>>, <ra_ap_rustc_index[6e6194786c499247]::slice::IndexSlice<hir_ty[f58a0abe133f1c00]::layout::RustcEnumVariantIdx, ra_ap_rustc_index[6e6194786c499247]::vec::IndexVec<hir_ty[f58a0abe133f1c00]::layout::RustcFieldIdx, &&ra_ap_rustc_abi[6a9deacac8faccbd]::LayoutData<hir_ty[f58a0abe133f1c00]::layout::RustcFieldIdx, hir_ty[f58a0abe133f1c00]::layout::RustcEnumVariantIdx>>>>::iter_enumerated::{closure#0}>, <hir_ty[f58a0abe133f1c00]::layout::adt::_::layout_of_adt_query_Configuration_ as salsa[8774cceebe7971b6]::function::Configuration>::execute::inner_::{closure#5}>, <ra_ap_rustc_abi[6a9deacac8faccbd]::layout::LayoutCalculator<&ra_ap_rustc_abi[6a9deacac8faccbd]::TargetDataLayout>>::layout_of_enum<hir_ty[f58a0abe133f1c00]::layout::RustcFieldIdx, hir_ty[f58a0abe133f1c00]::layout::RustcEnumVariantIdx, &&ra_ap_rustc_abi[6a9deacac8faccbd]::LayoutData<hir_ty[f58a0abe133f1c00]::layout::RustcFieldIdx, hir_ty[f58a0abe133f1c00]::layout::RustcEnumVariantIdx>, <hir_ty[f58a0abe133f1c00]::layout::adt::_::layout_of_adt_query_Configuration_ as salsa[8774cceebe7971b6]::function::Configuration>::execute::inner_::{closure#4}, core[7aff35c028b048a4]::iter::adapters::filter_map::FilterMap<core[7aff35c028b048a4]::iter::adapters::map::Map<core[7aff35c028b048a4]::iter::adapters::enumerate::Enumerate<core[7aff35c028b048a4]::slice::iter::Iter<ra_ap_rustc_index[6e6194786c499247]::vec::IndexVec<hir_ty[f58a0abe133f1c00]::layout::RustcFieldIdx, &&ra_ap_rustc_abi[6a9deacac8faccbd]::LayoutData<hir_ty[f58a0abe133f1c00]::layout::RustcFieldIdx, hir_ty[f58a0abe133f1c00]::layout::RustcEnumVariantIdx>>>>, <ra_ap_rustc_index[6e6194786c499247]::slice::IndexSlice<hir_ty[f58a0abe133f1c00]::layout::RustcEnumVariantIdx, ra_ap_rustc_index[6e6194786c499247]::vec::IndexVec<hir_ty[f58a0abe133f1c00]::layout::RustcFieldIdx, &&ra_ap_rustc_abi[6a9deacac8faccbd]::LayoutData<hir_ty[f58a0abe133f1c00]::layout::RustcFieldIdx, hir_ty[f58a0abe133f1c00]::layout::RustcEnumVariantIdx>>>>::iter_enumerated::{closure#0}>, <hir_ty[f58a0abe133f1c00]::layout::adt::_::layout_of_adt_query_Configuration_ as salsa[8774cceebe7971b6]::function::Configuration>::execute::inner_::{closure#5}>>::{closure#1}>, <ra_ap_rustc_abi[6a9deacac8faccbd]::layout::LayoutCalculator<&ra_ap_rustc_abi[6a9deacac8faccbd]::TargetDataLayout>>::layout_of_enum<hir_ty[f58a0abe133f1c00]::layout::RustcFieldIdx, hir_ty[f58a0abe133f1c00]::layout::RustcEnumVariantIdx, &&ra_ap_rustc_abi[6a9deacac8faccbd]::LayoutData<hir_ty[f58a0abe133f1c00]::layout::RustcFieldIdx, hir_ty[f58a0abe133f1c00]::layout::RustcEnumVariantIdx>, <hir_ty[f58a0abe133f1c00]::layout::adt::_::layout_of_adt_query_Configuration_ as salsa[8774cceebe7971b6]::function::Configuration>::execute::inner_::{closure#4}, core[7aff35c028b048a4]::iter::adapters::filter_map::FilterMap<core[7aff35c028b048a4]::iter::adapters::map::Map<core[7aff35c028b048a4]::iter::adapters::enumerate::Enumerate<core[7aff35c028b048a4]::slice::iter::Iter<ra_ap_rustc_index[6e6194786c499247]::vec::IndexVec<hir_ty[f58a0abe133f1c00]::layout::RustcFieldIdx, &&ra_ap_rustc_abi[6a9deacac8faccbd]::LayoutData<hir_ty[f58a0abe133f1c00]::layout::RustcFieldIdx, hir_ty[f58a0abe133f1c00]::layout::RustcEnumVariantIdx>>>>, <ra_ap_rustc_index[6e6194786c499247]::slice::IndexSlice<hir_ty[f58a0abe133f1c00]::layout::RustcEnumVariantIdx, ra_ap_rustc_index[6e6194786c499247]::vec::IndexVec<hir_ty[f58a0abe133f1c00]::layout::RustcFieldIdx, &&ra_ap_rustc_abi[6a9deacac8faccbd]::LayoutData<hir_ty[f58a0abe133f1c00]::layout::RustcFieldIdx, hir_ty[f58a0abe133f1c00]::layout::RustcEnumVariantIdx>>>>::iter_enumerated::{closure#0}>, <hir_ty[f58a0abe133f1c00]::layout::adt::_::layout_of_adt_query_Configuration_ as salsa[8774cceebe7971b6]::function::Configuration>::execute::inner_::{closure#5}>>::{closure#2}> as core[7aff35c028b048a4]::iter::traits::iterator::Iterator>::next
  17:     0x55c777cacc80 - <ra_ap_rustc_abi[6a9deacac8faccbd]::layout::LayoutCalculator<&ra_ap_rustc_abi[6a9deacac8faccbd]::TargetDataLayout>>::layout_of_struct_or_enum::<hir_ty[f58a0abe133f1c00]::layout::RustcFieldIdx, hir_ty[f58a0abe133f1c00]::layout::RustcEnumVariantIdx, &&ra_ap_rustc_abi[6a9deacac8faccbd]::LayoutData<hir_ty[f58a0abe133f1c00]::layout::RustcFieldIdx, hir_ty[f58a0abe133f1c00]::layout::RustcEnumVariantIdx>, <hir_ty[f58a0abe133f1c00]::layout::adt::_::layout_of_adt_query_Configuration_ as salsa[8774cceebe7971b6]::function::Configuration>::execute::inner_::{closure#4}, core[7aff35c028b048a4]::iter::adapters::filter_map::FilterMap<core[7aff35c028b048a4]::iter::adapters::map::Map<core[7aff35c028b048a4]::iter::adapters::enumerate::Enumerate<core[7aff35c028b048a4]::slice::iter::Iter<ra_ap_rustc_index[6e6194786c499247]::vec::IndexVec<hir_ty[f58a0abe133f1c00]::layout::RustcFieldIdx, &&ra_ap_rustc_abi[6a9deacac8faccbd]::LayoutData<hir_ty[f58a0abe133f1c00]::layout::RustcFieldIdx, hir_ty[f58a0abe133f1c00]::layout::RustcEnumVariantIdx>>>>, <ra_ap_rustc_index[6e6194786c499247]::slice::IndexSlice<hir_ty[f58a0abe133f1c00]::layout::RustcEnumVariantIdx, ra_ap_rustc_index[6e6194786c499247]::vec::IndexVec<hir_ty[f58a0abe133f1c00]::layout::RustcFieldIdx, &&ra_ap_rustc_abi[6a9deacac8faccbd]::LayoutData<hir_ty[f58a0abe133f1c00]::layout::RustcFieldIdx, hir_ty[f58a0abe133f1c00]::layout::RustcEnumVariantIdx>>>>::iter_enumerated::{closure#0}>, <hir_ty[f58a0abe133f1c00]::layout::adt::_::layout_of_adt_query_Configuration_ as salsa[8774cceebe7971b6]::function::Configuration>::execute::inner_::{closure#5}>>
  18:     0x55c77808a101 - <hir_ty[f58a0abe133f1c00]::layout::adt::_::layout_of_adt_query_Configuration_ as salsa[8774cceebe7971b6]::function::Configuration>::execute
  19:     0x55c777e98196 - <salsa[8774cceebe7971b6]::function::IngredientImpl<hir_ty[f58a0abe133f1c00]::layout::adt::_::layout_of_adt_query_Configuration_>>::execute
  20:     0x55c778015305 - hir_ty[f58a0abe133f1c00]::layout::adt::layout_of_adt_query
  21:     0x55c778c5a6b7 - <rust_analyzer[f1820004a41e425c]::cli::flags::AnalysisStats>::run::{closure#3}
  22:     0x55c778cb6762 - <rust_analyzer[f1820004a41e425c]::cli::flags::AnalysisStats>::run
  23:     0x55c778ef5fd6 - rust_analyzer[c4fd19d1c3329aa5]::main
  24:     0x55c778ef2373 - std[74eb2aff46e51e81]::sys::backtrace::__rust_begin_short_backtrace::<fn() -> core[7aff35c028b048a4]::result::Result<std[74eb2aff46e51e81]::process::ExitCode, anyhow[f3ff20ce718c24c8]::Error>, core[7aff35c028b048a4]::result::Result<std[74eb2aff46e51e81]::process::ExitCode, anyhow[f3ff20ce718c24c8]::Error>>
  25:     0x55c778ef40d2 - std[74eb2aff46e51e81]::rt::lang_start::<core[7aff35c028b048a4]::result::Result<std[74eb2aff46e51e81]::process::ExitCode, anyhow[f3ff20ce718c24c8]::Error>>::{closure#0}
  26:     0x7f7fcd503553 - std[74eb2aff46e51e81]::rt::lang_start_internal
  27:     0x55c778f0cb68 - main
  28:     0x7f7fc6a27741 - <unknown>
  29:     0x7f7fc6a27879 - __libc_start_main
  30:     0x55c7777f0ed9 - <unknown>
  31:                0x0 - <unknown>

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the panic with the enum snippet and rust-analyzer analysis-stats . --run-all-ide-things. Start in src/tools/rust-analyzer/crates/hir-ty/src/mir/eval.rs at IntValue::checked_add, then trace the enum discriminant evaluation shown in the backtrace. Done means the command handles this input without panicking.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
compilers
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
65/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.