auto-reduced (treereduce-rust):
fn main() {
if let &Some(Some(x)) = &Some(&mut Some(0)) {}
}
original:
fn main(e: &mut &&mut Foo) {
if let &Some(Some(x)) = &Some(&mut Some(0)) {
let _: &u32 = x;
}
if let Some(&x) = Some(&mut 0) {
let _: u32 = x;
}
}
Version information
rustc 1.86.0-dev
binary: rustc
commit-hash: unknown
commit-date: unknown
host: x86_64-unknown-linux-gnu
release: 1.86.0-dev
LLVM version: 19.1.7
Possibly related line of code:
|
def_br: ByRef, |
|
adjust_mode: AdjustMode, |
|
max_ref_mutbl: MutblCap, |
|
) -> (Ty<'tcx>, ByRef, MutblCap) { |
|
#[cfg(debug_assertions)] |
|
if def_br == ByRef::Yes(Mutability::Mut) && max_ref_mutbl != MutblCap::Mut { |
|
span_bug!(pat.span, "Pattern mutability cap violated!"); |
|
} |
|
match adjust_mode { |
|
AdjustMode::Pass => (expected, def_br, max_ref_mutbl), |
|
AdjustMode::Reset => (expected, ByRef::No, MutblCap::Mut), |
|
AdjustMode::Peel => self.peel_off_references(pat, expected, def_br, max_ref_mutbl), |
|
} |
auto-reduced (treereduce-rust):
original:
Version information
Possibly related line of code:
rust/compiler/rustc_hir_typeck/src/pat.rs
Lines 423 to 435 in fdd1a3b