From 40167f0638e853222df3c405f312b3fa41ed665f Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Thu, 16 Oct 2025 19:56:23 +0300 Subject: [PATCH 01/29] Update toolchain to `2025-04-04` --- rust-toolchain.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 859da512..714747b5 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "nightly-2025-01-10" +channel = "nightly-2025-04-04" components = ["clippy", "rustfmt", "rustc-dev", "rust-src", "rust-std", "llvm-tools-preview"] From 5c9af37bc5e2a8bc66d917f632573a2c22e4e792 Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Thu, 16 Oct 2025 19:06:07 +0300 Subject: [PATCH 02/29] Replace `rustc_target::abi` with `rustc_abi` --- checker/src/block_visitor.rs | 18 ++++++++---------- checker/src/call_visitor.rs | 4 ++-- checker/src/type_visitor.rs | 2 +- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/checker/src/block_visitor.rs b/checker/src/block_visitor.rs index 73892481..04aa71e6 100644 --- a/checker/src/block_visitor.rs +++ b/checker/src/block_visitor.rs @@ -11,6 +11,7 @@ use std::rc::Rc; use log_derive::*; use mirai_annotations::*; +use rustc_abi::{FieldIdx, Primitive, TagEncoding, VariantIdx, Variants}; use rustc_hir::def_id::DefId; use rustc_index::{Idx, IndexVec}; use rustc_middle::mir; @@ -24,7 +25,6 @@ use rustc_middle::ty::{ }; use rustc_middle::ty::{GenericArg, GenericArgsRef}; use rustc_span::source_map::Spanned; -use rustc_target::abi::{FieldIdx, Primitive, TagEncoding, VariantIdx, Variants}; use rustc_trait_selection::infer::TyCtxtInferExt; use crate::abstract_value::{self, AbstractValue, AbstractValueTrait, BOTTOM}; @@ -208,7 +208,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com fn visit_set_discriminant( &mut self, place: &mir::Place<'tcx>, - variant_index: rustc_target::abi::VariantIdx, + variant_index: rustc_abi::VariantIdx, ) { let target_path = Path::new_discriminant(self.visit_rh_place(place)); let ty = self @@ -3028,10 +3028,8 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com // The Rust compiler should ensure this. assume!(alloc_len > offset_bytes); let size = alloc_len - offset_bytes; - let range = alloc_range( - ptr.into_parts().1, - rustc_target::abi::Size::from_bytes(size), - ); + let range = + alloc_range(ptr.into_parts().1, rustc_abi::Size::from_bytes(size)); let bytes = if size > 0 && alloc.inner().provenance().range_empty(range, &self.bv.tcx) { @@ -3046,8 +3044,8 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com Some(GlobalAlloc::Memory(alloc)) => { let size = alloc.inner().len() as u64; let range = alloc_range( - rustc_target::abi::Size::from_bytes(0), - rustc_target::abi::Size::from_bytes(size), + rustc_abi::Size::from_bytes(0), + rustc_abi::Size::from_bytes(size), ); bytes = alloc .inner() @@ -3193,12 +3191,12 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com // Used only for `&[u8]` and `&str` ConstValue::Slice { data, meta } => { - let size = rustc_target::abi::Size::from_bytes(meta); + let size = rustc_abi::Size::from_bytes(meta); let bytes = data .inner() .get_bytes_strip_provenance( &self.bv.tcx, - alloc_range(rustc_target::abi::Size::ZERO, size), + alloc_range(rustc_abi::Size::ZERO, size), ) .unwrap(); let slice = &bytes[0..]; diff --git a/checker/src/call_visitor.rs b/checker/src/call_visitor.rs index a9ba433f..8882db8f 100644 --- a/checker/src/call_visitor.rs +++ b/checker/src/call_visitor.rs @@ -12,11 +12,11 @@ use std::{f16, f64}; use log_derive::*; use mirai_annotations::*; +use rustc_abi::VariantIdx; use rustc_hir::def_id::DefId; use rustc_middle::mir; use rustc_middle::ty::ConstKind; use rustc_middle::ty::{GenericArg, GenericArgKind, GenericArgsRef, Ty, TyKind, UintTy}; -use rustc_target::abi::VariantIdx; use crate::abstract_value::{AbstractValue, AbstractValueTrait}; use crate::block_visitor::BlockVisitor; @@ -218,7 +218,7 @@ impl<'call, 'block, 'analysis, 'compilation, 'tcx> .skip_binder() .fn_sig(tcx) .abi(); - let resolved_instance = if abi == rustc_target::spec::abi::Abi::Rust { + let resolved_instance = if abi == rustc_abi::ExternAbi::Rust { Some(rustc_middle::ty::Instance::try_resolve( tcx, typing_env, diff --git a/checker/src/type_visitor.rs b/checker/src/type_visitor.rs index 85834138..557433d5 100644 --- a/checker/src/type_visitor.rs +++ b/checker/src/type_visitor.rs @@ -12,6 +12,7 @@ use std::rc::Rc; use log_derive::*; use mirai_annotations::*; +use rustc_abi::VariantIdx; use rustc_hir::def_id::DefId; use rustc_index::Idx; use rustc_middle::mir; @@ -20,7 +21,6 @@ use rustc_middle::ty::{ ExistentialTraitRef, FnSig, GenericArg, GenericArgKind, GenericArgs, GenericArgsRef, ParamTy, Ty, TyCtxt, TyKind, }; -use rustc_target::abi::VariantIdx; use crate::abstract_value::AbstractValue; use crate::constant_domain::ConstantDomain; From efc5e7c6c09be2b6101934270e337a72ade9b728 Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Thu, 16 Oct 2025 20:23:49 +0300 Subject: [PATCH 03/29] Update unified fp intrinsics See https://github.com/rust-lang/rust/pull/136543 --- checker/src/call_visitor.rs | 12 ++++-------- checker/src/constant_domain.rs | 32 ++++---------------------------- checker/src/expression.rs | 14 +++----------- checker/src/known_names.rs | 32 ++++++++------------------------ 4 files changed, 19 insertions(+), 71 deletions(-) diff --git a/checker/src/call_visitor.rs b/checker/src/call_visitor.rs index 8882db8f..fc1ec1b1 100644 --- a/checker/src/call_visitor.rs +++ b/checker/src/call_visitor.rs @@ -1146,14 +1146,10 @@ impl<'call, 'block, 'analysis, 'compilation, 'tcx> | KnownNames::StdIntrinsicsLogf32 | KnownNames::StdIntrinsicsLogf64 | KnownNames::StdIntrinsicsLogf128 - | KnownNames::StdIntrinsicsNearbyintf16 - | KnownNames::StdIntrinsicsNearbyintf32 - | KnownNames::StdIntrinsicsNearbyintf64 - | KnownNames::StdIntrinsicsNearbyintf128 - | KnownNames::StdIntrinsicsRintf16 - | KnownNames::StdIntrinsicsRintf32 - | KnownNames::StdIntrinsicsRintf64 - | KnownNames::StdIntrinsicsRintf128 + | KnownNames::StdIntrinsicsRoundTiesEvenf16 + | KnownNames::StdIntrinsicsRoundTiesEvenf32 + | KnownNames::StdIntrinsicsRoundTiesEvenf64 + | KnownNames::StdIntrinsicsRoundTiesEvenf128 | KnownNames::StdIntrinsicsRoundf16 | KnownNames::StdIntrinsicsRoundf32 | KnownNames::StdIntrinsicsRoundf64 diff --git a/checker/src/constant_domain.rs b/checker/src/constant_domain.rs index 5942348d..1197c990 100644 --- a/checker/src/constant_domain.rs +++ b/checker/src/constant_domain.rs @@ -862,14 +862,8 @@ impl ConstantDomain { KnownNames::StdIntrinsicsLog10f16 => val.log10(), KnownNames::StdIntrinsicsLog2f16 => val.log2(), KnownNames::StdIntrinsicsLogf16 => val.ln(), - KnownNames::StdIntrinsicsNearbyintf16 => unsafe { - std::intrinsics::nearbyintf16(val) - }, - KnownNames::StdIntrinsicsRintf16 => unsafe { - std::intrinsics::rintf16(val) - }, KnownNames::StdIntrinsicsRoundf16 => val.round(), - KnownNames::StdIntrinsicsRevenf16 => f16::round_ties_even(val), + KnownNames::StdIntrinsicsRoundTiesEvenf16 => f16::round_ties_even(val), KnownNames::StdIntrinsicsSinf16 => val.sin(), KnownNames::StdIntrinsicsSqrtf16 => val.sqrt(), KnownNames::StdIntrinsicsTruncf16 => val.trunc(), @@ -891,14 +885,8 @@ impl ConstantDomain { KnownNames::StdIntrinsicsLog10f32 => val.log10(), KnownNames::StdIntrinsicsLog2f32 => val.log2(), KnownNames::StdIntrinsicsLogf32 => val.ln(), - KnownNames::StdIntrinsicsNearbyintf32 => unsafe { - std::intrinsics::nearbyintf32(val) - }, - KnownNames::StdIntrinsicsRintf32 => unsafe { - std::intrinsics::rintf32(val) - }, KnownNames::StdIntrinsicsRoundf32 => val.round(), - KnownNames::StdIntrinsicsRevenf32 => f32::round_ties_even(val), + KnownNames::StdIntrinsicsRoundTiesEvenf32 => f32::round_ties_even(val), KnownNames::StdIntrinsicsSinf32 => val.sin(), KnownNames::StdIntrinsicsSqrtf32 => val.sqrt(), KnownNames::StdIntrinsicsTruncf32 => val.trunc(), @@ -920,14 +908,8 @@ impl ConstantDomain { KnownNames::StdIntrinsicsLog10f64 => val.log10(), KnownNames::StdIntrinsicsLog2f64 => val.log2(), KnownNames::StdIntrinsicsLogf64 => val.ln(), - KnownNames::StdIntrinsicsNearbyintf64 => unsafe { - std::intrinsics::nearbyintf64(val) - }, - KnownNames::StdIntrinsicsRintf64 => unsafe { - std::intrinsics::rintf64(val) - }, KnownNames::StdIntrinsicsRoundf64 => val.round(), - KnownNames::StdIntrinsicsRevenf64 => f64::round_ties_even(val), + KnownNames::StdIntrinsicsRoundTiesEvenf64 => f64::round_ties_even(val), KnownNames::StdIntrinsicsSinf64 => val.sin(), KnownNames::StdIntrinsicsSqrtf64 => val.sqrt(), KnownNames::StdIntrinsicsTruncf64 => val.trunc(), @@ -949,14 +931,8 @@ impl ConstantDomain { // KnownNames::StdIntrinsicsLog10f128 => val.log10(), // KnownNames::StdIntrinsicsLog2f128 => val.log2(), // KnownNames::StdIntrinsicsLogf128 => val.ln(), - // KnownNames::StdIntrinsicsNearbyintf128 => unsafe { - // std::intrinsics::nearbyintf128(val) - // }, - // KnownNames::StdIntrinsicsRintf128 => unsafe { - // std::intrinsics::rintf128(val) - // }, // KnownNames::StdIntrinsicsRoundf128 => val.round(), - // KnownNames::StdIntrinsicsRevenf128 => f128::round_ties_even(val), + // KnownNames::StdIntrinsicsRoundTiesEvenf128 => f128::round_ties_even(val), // KnownNames::StdIntrinsicsSinf128 => val.sin(), // KnownNames::StdIntrinsicsSqrtf128 => val.sqrt(), // KnownNames::StdIntrinsicsTruncf128 => val.trunc(), diff --git a/checker/src/expression.rs b/checker/src/expression.rs index 031e8ea9..1bc3e835 100644 --- a/checker/src/expression.rs +++ b/checker/src/expression.rs @@ -1099,10 +1099,8 @@ impl Expression { | KnownNames::StdIntrinsicsLog10f16 | KnownNames::StdIntrinsicsLog2f16 | KnownNames::StdIntrinsicsLogf16 - | KnownNames::StdIntrinsicsNearbyintf16 - | KnownNames::StdIntrinsicsRintf16 | KnownNames::StdIntrinsicsRoundf16 - | KnownNames::StdIntrinsicsRevenf16 + | KnownNames::StdIntrinsicsRoundTiesEvenf16 | KnownNames::StdIntrinsicsSinf16 | KnownNames::StdIntrinsicsSqrtf16 | KnownNames::StdIntrinsicsTruncf16 => ExpressionType::F16, @@ -1115,10 +1113,8 @@ impl Expression { | KnownNames::StdIntrinsicsLog10f32 | KnownNames::StdIntrinsicsLog2f32 | KnownNames::StdIntrinsicsLogf32 - | KnownNames::StdIntrinsicsNearbyintf32 - | KnownNames::StdIntrinsicsRintf32 | KnownNames::StdIntrinsicsRoundf32 - | KnownNames::StdIntrinsicsRevenf32 + | KnownNames::StdIntrinsicsRoundTiesEvenf32 | KnownNames::StdIntrinsicsSinf32 | KnownNames::StdIntrinsicsSqrtf32 | KnownNames::StdIntrinsicsTruncf32 => ExpressionType::F32, @@ -1131,10 +1127,8 @@ impl Expression { | KnownNames::StdIntrinsicsLog10f64 | KnownNames::StdIntrinsicsLog2f64 | KnownNames::StdIntrinsicsLogf64 - | KnownNames::StdIntrinsicsNearbyintf64 - | KnownNames::StdIntrinsicsRintf64 | KnownNames::StdIntrinsicsRoundf64 - | KnownNames::StdIntrinsicsRevenf64 + | KnownNames::StdIntrinsicsRoundTiesEvenf64 | KnownNames::StdIntrinsicsSinf64 | KnownNames::StdIntrinsicsSqrtf64 | KnownNames::StdIntrinsicsTruncf64 => ExpressionType::F64, @@ -1147,8 +1141,6 @@ impl Expression { // | KnownNames::StdIntrinsicsLog10f128 // | KnownNames::StdIntrinsicsLog2f128 // | KnownNames::StdIntrinsicsLogf128 - // | KnownNames::StdIntrinsicsNearbyintf128 - // | KnownNames::StdIntrinsicsRintf128 // | KnownNames::StdIntrinsicsRoundf128 // | KnownNames::StdIntrinsicsRevenf128 // | KnownNames::StdIntrinsicsSinf128 diff --git a/checker/src/known_names.rs b/checker/src/known_names.rs index 31269668..b7401af1 100644 --- a/checker/src/known_names.rs +++ b/checker/src/known_names.rs @@ -110,10 +110,6 @@ pub enum KnownNames { StdIntrinsicsMinnumf64, StdIntrinsicsMinnumf128, StdIntrinsicsMulWithOverflow, - StdIntrinsicsNearbyintf16, - StdIntrinsicsNearbyintf32, - StdIntrinsicsNearbyintf64, - StdIntrinsicsNearbyintf128, StdIntrinsicsNeedsDrop, StdIntrinsicsOffset, StdIntrinsicsPowf16, @@ -126,18 +122,14 @@ pub enum KnownNames { StdIntrinsicsPowif128, StdIntrinsicsPrefAlignOfVal, StdIntrinsicsRawEq, - StdIntrinsicsRintf16, - StdIntrinsicsRintf32, - StdIntrinsicsRintf64, - StdIntrinsicsRintf128, StdIntrinsicsRoundf16, StdIntrinsicsRoundf32, StdIntrinsicsRoundf64, StdIntrinsicsRoundf128, - StdIntrinsicsRevenf16, - StdIntrinsicsRevenf32, - StdIntrinsicsRevenf64, - StdIntrinsicsRevenf128, + StdIntrinsicsRoundTiesEvenf16, + StdIntrinsicsRoundTiesEvenf32, + StdIntrinsicsRoundTiesEvenf64, + StdIntrinsicsRoundTiesEvenf128, StdIntrinsicsSinf16, StdIntrinsicsSinf32, StdIntrinsicsSinf64, @@ -408,10 +400,6 @@ fn known_name_for_intrinsics_namespace( "minnumf64" => KnownNames::StdIntrinsicsMinnumf64, "minnumf128" => KnownNames::StdIntrinsicsMinnumf128, "mul_with_overflow" => KnownNames::StdIntrinsicsMulWithOverflow, - "nearbyintf16" => KnownNames::StdIntrinsicsNearbyintf16, - "nearbyintf32" => KnownNames::StdIntrinsicsNearbyintf32, - "nearbyintf64" => KnownNames::StdIntrinsicsNearbyintf64, - "nearbyintf128" => KnownNames::StdIntrinsicsNearbyintf128, "needs_drop" => KnownNames::StdIntrinsicsNeedsDrop, "offset" => KnownNames::StdIntrinsicsOffset, "powf16" => KnownNames::StdIntrinsicsPowf16, @@ -424,18 +412,14 @@ fn known_name_for_intrinsics_namespace( "powif128" => KnownNames::StdIntrinsicsPowif128, "pref_align_of_val" => KnownNames::StdIntrinsicsPrefAlignOfVal, "raw_eq" => KnownNames::StdIntrinsicsRawEq, - "rintf16" => KnownNames::StdIntrinsicsRintf16, - "rintf32" => KnownNames::StdIntrinsicsRintf32, - "rintf64" => KnownNames::StdIntrinsicsRintf64, - "rintf128" => KnownNames::StdIntrinsicsRintf128, "roundf16" => KnownNames::StdIntrinsicsRoundf16, "roundf32" => KnownNames::StdIntrinsicsRoundf32, "roundf64" => KnownNames::StdIntrinsicsRoundf64, "roundf128" => KnownNames::StdIntrinsicsRoundf128, - "roundevenf16" => KnownNames::StdIntrinsicsRevenf16, - "roundevenf32" => KnownNames::StdIntrinsicsRevenf32, - "roundevenf64" => KnownNames::StdIntrinsicsRevenf64, - "roundevenf128" => KnownNames::StdIntrinsicsRevenf128, + "round_ties_even_f16" => KnownNames::StdIntrinsicsRoundTiesEvenf16, + "round_ties_even_f32" => KnownNames::StdIntrinsicsRoundTiesEvenf32, + "round_ties_even_f64" => KnownNames::StdIntrinsicsRoundTiesEvenf64, + "round_ties_even_f128" => KnownNames::StdIntrinsicsRoundTiesEvenf128, "sinf16" => KnownNames::StdIntrinsicsSinf16, "sinf32" => KnownNames::StdIntrinsicsSinf32, "sinf64" => KnownNames::StdIntrinsicsSinf64, From 37a142ac8e113757736e9d03bd3d1f6b7a3fcf81 Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Fri, 17 Oct 2025 02:09:10 +0300 Subject: [PATCH 04/29] Update const value and val tree patterns --- checker/src/block_visitor.rs | 61 +++++++++++++++++++----------------- checker/src/call_visitor.rs | 2 +- 2 files changed, 34 insertions(+), 29 deletions(-) diff --git a/checker/src/block_visitor.rs b/checker/src/block_visitor.rs index 04aa71e6..31a6642f 100644 --- a/checker/src/block_visitor.rs +++ b/checker/src/block_visitor.rs @@ -21,7 +21,7 @@ use rustc_middle::ty::adjustment::PointerCoercion; use rustc_middle::ty::TypingMode; use rustc_middle::ty::{ Const, CoroutineArgsExt, FloatTy, IntTy, ParamConst, ScalarInt, Ty, TyKind, UintTy, ValTree, - VariantDef, + ValTreeKind, VariantDef, }; use rustc_middle::ty::{GenericArg, GenericArgsRef}; use rustc_span::source_map::Spanned; @@ -2867,21 +2867,25 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com self.bv.current_span ); } - // ZSTs, integers, `bool`, `char` and small structs are represented as scalars. - // See the `ScalarInt` documentation for how `ScalarInt` guarantees that equal values - // of these types have the same representation. - rustc_middle::ty::ConstKind::Value(lty, ValTree::Leaf(scalar_int)) => { - let (data, size) = Self::get_scalar_int_data(scalar_int); - self.get_constant_value_from_scalar(*lty, data, size) - } - // The fields of any kind of aggregate. Structs, tuples and arrays are represented by - // listing their fields' values in order. - // Enums are represented by storing their discriminant as a field, followed by all - // the fields of the variant. - rustc_middle::ty::ConstKind::Value(lty, val_tree) => { - let (heap_block, heap_path) = self.get_heap_block_and_path(*lty, val_tree); - self.deserialize_val_tree(val_tree, heap_path, *lty); - heap_block + rustc_middle::ty::ConstKind::Value(rustc_middle::ty::Value { ty, valtree }) => { + match **valtree { + // ZSTs, integers, `bool`, `char` and small structs are represented as scalars. + // See the `ScalarInt` documentation for how `ScalarInt` guarantees that equal values + // of these types have the same representation. + ValTreeKind::Leaf(scalar_int) => { + let (data, size) = Self::get_scalar_int_data(scalar_int); + self.get_constant_value_from_scalar(*ty, data, size) + } + // The fields of any kind of aggregate. Structs, tuples and arrays are represented by + // listing their fields' values in order. + // Enums are represented by storing their discriminant as a field, followed by all + // the fields of the variant. + ValTreeKind::Branch(_) => { + let (heap_block, heap_path) = self.get_heap_block_and_path(*ty, valtree); + self.deserialize_val_tree(valtree, heap_path, *ty); + heap_block + } + } } _ => { debug!("kind {:?}", kind); @@ -2929,24 +2933,25 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com target_path: Rc, ty: Ty<'tcx>, ) { - match val_tree { - ValTree::Leaf(scalar_int) => { + match **val_tree { + ValTreeKind::Leaf(scalar_int) => { let (data, size) = Self::get_scalar_int_data(scalar_int); let const_value = self.get_constant_value_from_scalar(ty, data, size); self.bv.update_value_at(target_path, const_value); } - ValTree::Branch(val_trees) => match ty.kind() { + ValTreeKind::Branch(val_trees) => match ty.kind() { TyKind::Adt(def, args) if def.is_enum() => { let mut val_tree_iter = val_trees.iter(); - let variant_index = - if let Some(ValTree::Leaf(scalar_int)) = val_tree_iter.next() { - self.get_enum_variant_index(scalar_int, ty, &target_path) - } else { - unreachable!( - "serialized enum value without a discriminant value {:?} {:?}", - def, val_trees - ); - }; + let variant_index = if let Some(ValTreeKind::Leaf(scalar_int)) = + val_tree_iter.next().map(|val_tree| **val_tree) + { + self.get_enum_variant_index(scalar_int, ty, &target_path) + } else { + unreachable!( + "serialized enum value without a discriminant value {:?} {:?}", + def, val_trees + ); + }; let variant = &def.variants()[variant_index]; self.deserialize_fields(args, val_tree_iter, target_path, variant); } diff --git a/checker/src/call_visitor.rs b/checker/src/call_visitor.rs index fc1ec1b1..1f3df9d5 100644 --- a/checker/src/call_visitor.rs +++ b/checker/src/call_visitor.rs @@ -3223,7 +3223,7 @@ impl<'call, 'block, 'analysis, 'compilation, 'tcx> }; let is_u128 = |kind: ConstKind| { - if let ConstKind::Value(ty, _) = kind { + if let ConstKind::Value(rustc_middle::ty::Value { ty, .. }) = kind { *ty.kind() == TyKind::Uint(UintTy::U128) } else { false From 4b3cc5643f09806a4dce0af7ceb3e3b8a4bf95e7 Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Fri, 17 Oct 2025 02:20:41 +0300 Subject: [PATCH 05/29] Use new HIR methods --- checker/src/callbacks.rs | 2 +- checker/src/crate_visitor.rs | 2 +- checker/src/utils.rs | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/checker/src/callbacks.rs b/checker/src/callbacks.rs index 71c748ad..3f092884 100644 --- a/checker/src/callbacks.rs +++ b/checker/src/callbacks.rs @@ -130,7 +130,7 @@ impl MiraiCallbacks { #[logfn(TRACE)] fn analyze_with_mirai<'tcx>(&mut self, compiler: &interface::Compiler, tcx: TyCtxt<'tcx>) { if self.options.print_function_names { - for local_def_id in tcx.hir().body_owners() { + for local_def_id in tcx.hir_body_owners() { let def_id = local_def_id.to_def_id(); let span = tcx.def_span(def_id); eprint!("{span:?}: "); diff --git a/checker/src/crate_visitor.rs b/checker/src/crate_visitor.rs index 25530ffa..df91bcb3 100644 --- a/checker/src/crate_visitor.rs +++ b/checker/src/crate_visitor.rs @@ -82,7 +82,7 @@ impl<'compilation> CrateVisitor<'compilation, '_> { // Analyze all functions that are whitelisted or public let building_standard_summaries = std::env::var("MIRAI_START_FRESH").is_ok(); - for local_def_id in self.tcx.hir().body_owners() { + for local_def_id in self.tcx.hir_body_owners() { let def_id = local_def_id.to_def_id(); let name = utils::summary_key_str(self.tcx, def_id); if let Some(selections) = &selected_functions { diff --git a/checker/src/utils.rs b/checker/src/utils.rs index 14304102..d10780e9 100644 --- a/checker/src/utils.rs +++ b/checker/src/utils.rs @@ -92,7 +92,7 @@ pub fn contains_function<'tcx>(ty: Ty<'tcx>, tcx: TyCtxt<'tcx>) -> bool { pub fn is_public(def_id: DefId, tcx: TyCtxt<'_>) -> bool { use rustc_hir::def_id::LocalDefId; - if tcx.hir().get_if_local(def_id).is_some() { + if tcx.hir_get_if_local(def_id).is_some() { let def_id = def_id.expect_local(); match tcx .resolutions(()) @@ -117,7 +117,7 @@ pub fn is_public(def_id: DefId, tcx: TyCtxt<'_>) -> bool { .is_public() } Node::ImplItem(..) => { - let parent_def_id: LocalDefId = tcx.hir().get_parent_item(hir_id).def_id; + let parent_def_id: LocalDefId = tcx.hir_get_parent_item(hir_id).def_id; match tcx.hir_node_by_def_id(parent_def_id) { Node::Item(rustc_hir::Item { kind: From 1200a96fa56c953b0b274dfc8c812ea53f7f5dd6 Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Fri, 17 Oct 2025 02:55:41 +0300 Subject: [PATCH 06/29] Handle optional type names in `DefPathData` --- checker/src/known_names.rs | 17 +++++++++++++++-- checker/src/utils.rs | 30 ++++++++++++++++++------------ 2 files changed, 33 insertions(+), 14 deletions(-) diff --git a/checker/src/known_names.rs b/checker/src/known_names.rs index b7401af1..3a8e72ba 100644 --- a/checker/src/known_names.rs +++ b/checker/src/known_names.rs @@ -6,6 +6,7 @@ use rustc_hir::def_id::DefId; use rustc_hir::definitions::{DefPathData, DisambiguatedDefPathData}; use rustc_middle::ty::TyCtxt; +use rustc_span::Symbol; use std::collections::HashMap; @@ -240,10 +241,22 @@ fn known_name_for_mirai_annotations( // Convenience macro for matching a single terminal path segment to a given item name, // and returning the given `KnownName` (in case of a successful match). macro_rules! known_name_for_terminal_from_ns { + ($path_segments: expr, DefPathData::TypeNs, $item_name: literal, $known_name: expr) => { + known_name_for_terminal_from_ns!($path_segments, DefPathData::TypeNs, |name: &Option< + Symbol, + >| { + (name.as_ref().filter(|name| name.as_str() == $item_name)).map(|_| $known_name) + }) + }; ($path_segments: expr, $ns_variant: path, $item_name: literal, $known_name: expr) => { + known_name_for_terminal_from_ns!($path_segments, $ns_variant, |name: &Symbol| { + (name.as_str() == $item_name).then_some($known_name) + }) + }; + ($path_segments: expr, $ns_variant: path, $transformer: expr) => { match $path_segments { [only_segment] => match &only_segment.data { - $ns_variant(name) => (name.as_str() == $item_name).then_some($known_name), + $ns_variant(name) => $transformer(name), _ => None, }, _ => None, @@ -550,7 +563,7 @@ fn name_from_type_ns( def_path_data: &rustc_hir::definitions::DisambiguatedDefPathData, ) -> Option<&str> { match &def_path_data.data { - DefPathData::TypeNs(name) => Some(name.as_str()), + DefPathData::TypeNs(name) => name.as_ref().map(Symbol::as_str), _ => None, } } diff --git a/checker/src/utils.rs b/checker/src/utils.rs index d10780e9..5cfa54ba 100644 --- a/checker/src/utils.rs +++ b/checker/src/utils.rs @@ -3,22 +3,25 @@ // This source code is licensed under the MIT license found in the // LICENSE file in the root directory of this source tree. +use rustc_hir::{ + def::DefKind, + def_id::DefId, + definitions::{DefPathData, DisambiguatedDefPathData}, + Node, +}; +use rustc_middle::ty::{ + self, + print::{FmtPrinter, Printer}, + FloatTy, GenericArgKind, GenericArgsRef, IntTy, Ty, TyCtxt, TyKind, UintTy, +}; +use rustc_span::Symbol; + use std::io::Write; use std::rc::Rc; use log::debug; use log_derive::{logfn, logfn_inputs}; - use mirai_annotations::assume_unreachable; -use rustc_hir::def::DefKind; -use rustc_hir::def_id::DefId; -use rustc_hir::definitions::{DefPathData, DisambiguatedDefPathData}; -use rustc_hir::Node; -use rustc_middle::ty; -use rustc_middle::ty::print::{FmtPrinter, Printer}; -use rustc_middle::ty::{ - FloatTy, GenericArgKind, GenericArgsRef, IntTy, Ty, TyCtxt, TyKind, UintTy, -}; /// Returns the location of the rust system binaries that are associated with this build of Mirai. /// The location is obtained by looking at the contents of the environmental variables that were @@ -419,7 +422,7 @@ pub fn is_foreign_contract(tcx: TyCtxt<'_>, def_id: DefId) -> bool { .. }) = &tcx.def_path(def_id).data.first() { - name.as_str() == "foreign_contracts" + name.is_some_and(|name| name.as_str() == "foreign_contracts") } else { false } @@ -429,7 +432,10 @@ pub fn is_foreign_contract(tcx: TyCtxt<'_>, def_id: DefId) -> bool { fn push_component_name(component_data: DefPathData, target: &mut String) { use DefPathData::*; match component_data { - TypeNs(name) | ValueNs(name) | MacroNs(name) | LifetimeNs(name) => { + TypeNs(name) => { + target.push_str(name.as_ref().map(Symbol::as_str).unwrap_or("RPITIT")); + } + ValueNs(name) | MacroNs(name) | LifetimeNs(name) => { target.push_str(name.as_str()); } _ => target.push_str(match component_data { From c32a3454ab579e4c542b0873163646c8bf57035c Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Fri, 17 Oct 2025 03:30:27 +0300 Subject: [PATCH 07/29] Add null pointer dereference assertion message --- checker/src/block_visitor.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/checker/src/block_visitor.rs b/checker/src/block_visitor.rs index 31a6642f..9d08c99f 100644 --- a/checker/src/block_visitor.rs +++ b/checker/src/block_visitor.rs @@ -1659,6 +1659,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com ResumedAfterPanic(CoroutineKind::Desugared(CoroutineDesugaring::Gen, _)) => { "`gen fn` should just keep returning `None` after panicking" } + NullPointerDereference => "null pointer dereference", } } } From 854bb0180fa0ba0cc8bde6884384e76b7531b619 Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Fri, 17 Oct 2025 04:24:24 +0300 Subject: [PATCH 08/29] Handle `NullOp::ContractChecks` --- checker/src/block_visitor.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/checker/src/block_visitor.rs b/checker/src/block_visitor.rs index 9d08c99f..7cdd1cea 100644 --- a/checker/src/block_visitor.rs +++ b/checker/src/block_visitor.rs @@ -2475,6 +2475,17 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com let val = self.bv.tcx.sess.opts.debug_assertions; Rc::new(val.into()) } + mir::NullOp::ContractChecks => { + let val = self + .bv + .tcx + .sess + .opts + .unstable_opts + .contract_checks + .unwrap_or(false); + Rc::new(val.into()) + } }; self.bv.update_value_at(path, value); } From 1955b66e9a524f91732878619467a7f33bd28eee Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Fri, 17 Oct 2025 04:35:11 +0300 Subject: [PATCH 09/29] Use new `rustc` entrypoint --- checker/src/main.rs | 4 +--- checker/tests/integration_tests.rs | 3 +-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/checker/src/main.rs b/checker/src/main.rs index ea906853..19af8571 100644 --- a/checker/src/main.rs +++ b/checker/src/main.rs @@ -134,9 +134,7 @@ fn main() { "rustc_command_line_arguments {:?}", rustc_command_line_arguments ); - let compiler = - rustc_driver::RunCompiler::new(&rustc_command_line_arguments, &mut callbacks); - compiler.run() + rustc_driver::run_compiler(&rustc_command_line_arguments, &mut callbacks) }); let exit_code = match result { Ok(_) => rustc_driver::EXIT_SUCCESS, diff --git a/checker/tests/integration_tests.rs b/checker/tests/integration_tests.rs index 1092ae04..3c9d8408 100644 --- a/checker/tests/integration_tests.rs +++ b/checker/tests/integration_tests.rs @@ -303,8 +303,7 @@ fn invoke_driver( let mut call_backs = callbacks::MiraiCallbacks::test_runner(options); let result = std::panic::catch_unwind(move || { - let compiler = rustc_driver::RunCompiler::new(&command_line_arguments, &mut call_backs); - compiler.run() + rustc_driver::run_compiler(&command_line_arguments, &mut call_backs) }); match result { Ok(_) => 0, From ad8fbc756c1cdf43dcf5aeb17869e0c487668a5b Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Fri, 17 Oct 2025 03:40:41 +0300 Subject: [PATCH 10/29] Handle `Rvalue::Len` --- checker/src/block_visitor.rs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/checker/src/block_visitor.rs b/checker/src/block_visitor.rs index 7cdd1cea..07baea5d 100644 --- a/checker/src/block_visitor.rs +++ b/checker/src/block_visitor.rs @@ -1734,6 +1734,9 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com mir::Rvalue::ThreadLocalRef(def_id) => { self.visit_thread_local_ref(path, *def_id); } + mir::Rvalue::Len(place) => { + self.visit_len(path, place); + } mir::Rvalue::Cast(cast_kind, operand, ty) => { let specialized_ty = self .type_visitor() @@ -2026,6 +2029,36 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com self.bv.update_value_at(path, value); } + /// path = array or slice (i.e. `[T]`, not `&[T]`) length as `usize`. + #[logfn_inputs(TRACE)] + fn visit_len(&mut self, path: Rc, place: &mir::Place<'tcx>) { + let source_type = self + .type_visitor() + .get_rustc_place_type(place, self.bv.current_span); + let value = match source_type.kind() { + TyKind::Array(_, len) => { + let len = self.bv.get_array_length(len); + self.get_u128_const_val(len as u128) + } + TyKind::Slice(_) => { + // For slices, the length is stored as the metadata for the place. + let slice_path = self.visit_rh_place(place); + self.bv.lookup_path_and_refine_result( + Path::new_length(slice_path), + self.bv.tcx.types.usize, + ) + } + _ => { + // This operation is "ill-formed for places of other types". + assume_unreachable!( + "length operation on non array or slice type {:?}", + source_type + ); + } + }; + self.bv.update_value_at(path, value); + } + /// Accessing a thread local static. This is inherently a runtime operation, even if llvm /// treats it as an access to a static. This `Rvalue` yields a reference to the thread local /// static. From 74ac81c2f6a4ec1f930fa70c3e218fde7ccc4578 Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Thu, 16 Oct 2025 22:07:15 +0300 Subject: [PATCH 11/29] Handle unsafe binder types - Handle `Rvalue::WrapUnsafeBinder` - Handle `ProjectionElem::UnwrapUnsafeBinder` --- checker/src/block_visitor.rs | 25 +++++++++++++++++++++++++ checker/src/type_visitor.rs | 1 + 2 files changed, 26 insertions(+) diff --git a/checker/src/block_visitor.rs b/checker/src/block_visitor.rs index 07baea5d..48b77ff6 100644 --- a/checker/src/block_visitor.rs +++ b/checker/src/block_visitor.rs @@ -1771,6 +1771,9 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com mir::Rvalue::CopyForDeref(place) => { self.visit_used_copy(path, place); } + mir::Rvalue::WrapUnsafeBinder(operand, ty) => { + self.visit_wrap_unsafe_binder(path, operand, *ty); + } } } @@ -4202,6 +4205,11 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com continue; } mir::ProjectionElem::Subslice { .. } => {} + mir::ProjectionElem::UnwrapUnsafeBinder(inner_ty) => { + ty = self + .type_visitor() + .specialize_type(*inner_ty, &self.type_visitor().generic_argument_map); + } } result = Path::new_qualified(result, Rc::new(selector)); self.type_visitor_mut() @@ -4289,6 +4297,23 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com // Dummy selector that will be ignored by caller. PathSelector::Deref } + mir::ProjectionElem::UnwrapUnsafeBinder(_) => PathSelector::Field(0), } } + + /// Wrap the operand in an unsafe binder and assign to path. + #[logfn_inputs(TRACE)] + fn visit_wrap_unsafe_binder( + &mut self, + path: Rc, + operand: &mir::Operand<'tcx>, + ty: rustc_middle::ty::Ty<'tcx>, + ) { + // Essentially modeled as a aggregate value with a single field. + // See https://github.com/rust-lang/rust/pull/130514 + let inner_path = Path::new_field(path, 0); + self.type_visitor_mut() + .set_path_rustc_type(inner_path.clone(), ty); + self.visit_use(inner_path, operand); + } } diff --git a/checker/src/type_visitor.rs b/checker/src/type_visitor.rs index 557433d5..2bfc04d9 100644 --- a/checker/src/type_visitor.rs +++ b/checker/src/type_visitor.rs @@ -964,6 +964,7 @@ impl<'tcx> TypeVisitor<'tcx> { } base_ty } + mir::ProjectionElem::UnwrapUnsafeBinder(ty) => *ty, }) } From 2194555afeb9a1f8703582ea82a1d72b03fc4d53 Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Thu, 16 Oct 2025 20:49:20 +0300 Subject: [PATCH 12/29] Fix `FieldIdx` and `VariantIdx` type inference issues --- checker/src/block_visitor.rs | 10 +++++----- checker/src/type_visitor.rs | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/checker/src/block_visitor.rs b/checker/src/block_visitor.rs index 48b77ff6..e886f34e 100644 --- a/checker/src/block_visitor.rs +++ b/checker/src/block_visitor.rs @@ -2637,7 +2637,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com let field_ty = field.ty(self.bv.tcx, args); self.type_visitor_mut() .set_path_rustc_type(field_path.clone(), field_ty); - self.visit_use(field_path, &operands[0usize.into()]); + self.visit_use(field_path, &operands[FieldIdx::ZERO]); return; } if variant_def.fields.is_empty() { @@ -2649,7 +2649,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com let field_ty = field.ty(self.bv.tcx, args); self.type_visitor_mut() .set_path_rustc_type(field_path.clone(), field_ty); - if let Some(operand) = operands.get(i.into()) { + if let Some(operand) = operands.get::(i.into()) { self.visit_use(field_path, operand); } else { debug!( @@ -2697,9 +2697,9 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com let pointer_type = Ty::new_ptr(self.bv.tcx, *ty, *mutbl); self.type_visitor_mut() .set_path_rustc_type(thin_pointer_path.clone(), pointer_type); - self.visit_use(thin_pointer_path, &operands[0usize.into()]); + self.visit_use(thin_pointer_path, &operands[FieldIdx::ZERO]); let metadata_path = Path::new_field(path, 1); - self.visit_use(metadata_path, &operands[1usize.into()]); + self.visit_use(metadata_path, &operands[FieldIdx::from_usize(1)]); } } } @@ -4233,7 +4233,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com if def.is_union() { let variants = &def.variants(); assume!(variants.len() == 1); // only enums have more than one variant - let variant = &variants[0usize.into()]; + let variant = &variants[VariantIdx::ZERO]; return PathSelector::UnionField { case_index: field.index(), num_cases: variant.fields.len(), diff --git a/checker/src/type_visitor.rs b/checker/src/type_visitor.rs index 2bfc04d9..39b2a04b 100644 --- a/checker/src/type_visitor.rs +++ b/checker/src/type_visitor.rs @@ -12,7 +12,7 @@ use std::rc::Rc; use log_derive::*; use mirai_annotations::*; -use rustc_abi::VariantIdx; +use rustc_abi::{FieldIdx, VariantIdx}; use rustc_hir::def_id::DefId; use rustc_index::Idx; use rustc_middle::mir; @@ -724,7 +724,7 @@ impl<'tcx> TypeVisitor<'tcx> { ) -> Ty<'tcx> { for variant in def.variants().iter() { if ordinal < variant.fields.len() { - let field = &variant.fields[ordinal.into()]; + let field = &variant.fields[FieldIdx::from_usize(ordinal)]; let ft = field.ty(self.tcx, args); trace!("field {:?} type is {:?}", ordinal, ft); return ft; From f2bf3c7ad37b645924273bc74437fc15f639e9ee Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Thu, 16 Oct 2025 20:00:38 +0300 Subject: [PATCH 13/29] Update `Cargo.lock` --- Cargo.lock | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ce8175c6..f4bb4611 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -94,7 +94,7 @@ dependencies = [ "bitflags 2.8.0", "cexpr", "clang-sys", - "itertools 0.13.0", + "itertools", "proc-macro2", "quote", "regex", @@ -474,15 +474,6 @@ dependencies = [ "either", ] -[[package]] -name = "itertools" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" -dependencies = [ - "either", -] - [[package]] name = "itoa" version = "1.0.14" @@ -570,7 +561,7 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "mirai" -version = "1.1.10" +version = "1.1.12" dependencies = [ "bincode", "cargo_metadata", @@ -578,7 +569,7 @@ dependencies = [ "contracts", "env_logger", "fs2", - "itertools 0.14.0", + "itertools", "lazy_static", "log", "log-derive", From 7f0c38da2143965f9a402b64085f0fdda5ccaa16 Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Sat, 18 Oct 2025 03:30:38 +0300 Subject: [PATCH 14/29] Normalize associated types --- checker/src/type_visitor.rs | 51 +++++++++++++++---------------------- 1 file changed, 20 insertions(+), 31 deletions(-) diff --git a/checker/src/type_visitor.rs b/checker/src/type_visitor.rs index 39b2a04b..9ffbe639 100644 --- a/checker/src/type_visitor.rs +++ b/checker/src/type_visitor.rs @@ -1068,41 +1068,30 @@ impl<'tcx> TypeVisitor<'tcx> { let typing_env = self.get_typing_env_for( self.tcx.associated_item(item_def_id).container_id(self.tcx), ); - if let Ok(Some(instance)) = rustc_middle::ty::Instance::try_resolve( - self.tcx, - typing_env, - item_def_id, - specialized_substs, - ) { - let instance_item_def_id = instance.def.def_id(); - if item_def_id == instance_item_def_id { - return Ty::new_projection(self.tcx, projection.def_id, specialized_substs); + let projection_map = + self.get_generic_arguments_map(projection.def_id, projection.args, &[]); + if let Ok(normalized_ty) = self.tcx.try_normalize_erasing_regions(typing_env, ty) { + if ty != normalized_ty { + return self.specialize_type(normalized_ty, &projection_map); } - let item_type = self.tcx.type_of(instance_item_def_id).skip_binder(); - let map = - self.get_generic_arguments_map(instance_item_def_id, instance.args, &[]); - if item_type == ty && map.is_none() { - // Can happen if the projection just adds a life time - item_type - } else { - self.specialize_type(item_type, &map) + } + + let projection_trait = Some(self.tcx.parent(item_def_id)); + if projection_trait == self.tcx.lang_items().pointee_trait() { + assume!(!specialized_substs.is_empty()); + if let GenericArgKind::Type(ty) = specialized_substs[0].unpack() { + return ty.ptr_metadata_ty(self.tcx, |ty| ty); } - } else { - let projection_trait = Some(self.tcx.parent(item_def_id)); - if projection_trait == self.tcx.lang_items().pointee_trait() { - assume!(!specialized_substs.is_empty()); - if let GenericArgKind::Type(ty) = specialized_substs[0].unpack() { - return ty.ptr_metadata_ty(self.tcx, |ty| ty); - } - } else if projection_trait == self.tcx.lang_items().discriminant_kind_trait() { - assume!(!specialized_substs.is_empty()); - if let GenericArgKind::Type(enum_ty) = specialized_substs[0].unpack() { - return enum_ty.discriminant_ty(self.tcx); - } + } else if projection_trait == self.tcx.lang_items().discriminant_kind_trait() { + assume!(!specialized_substs.is_empty()); + if let GenericArgKind::Type(enum_ty) = specialized_substs[0].unpack() { + return enum_ty.discriminant_ty(self.tcx); } - debug!("could not resolve an associated type with concrete type arguments"); - ty } + self.specialize_type( + Ty::new_projection(self.tcx, projection.def_id, specialized_substs), + &projection_map, + ) } else { Ty::new_projection(self.tcx, projection.def_id, specialized_substs) }; From ff1e3dbecdb3a49eab4bf840ac17fb4a0618446e Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Thu, 25 Dec 2025 13:35:29 +0300 Subject: [PATCH 15/29] Normalize field types when transmuting and copying --- checker/src/body_visitor.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/checker/src/body_visitor.rs b/checker/src/body_visitor.rs index 053feecc..b52d4cd4 100644 --- a/checker/src/body_visitor.rs +++ b/checker/src/body_visitor.rs @@ -1816,7 +1816,10 @@ impl<'analysis, 'compilation, 'tcx> BodyVisitor<'analysis, 'compilation, 'tcx> { let variant = def.variants().iter().next().expect("at least one variant"); for (i, field) in variant.fields.iter().enumerate() { let field_path = Path::new_field(path.clone(), i); - let field_ty = field.ty(tcx, args); + let field_ty = self.type_visitor().specialize_type( + field.ty(tcx, args), + &self.type_visitor().generic_argument_map, + ); debug!("field_path: {:?}, field_ty: {:?}", field_path, field_ty); if let TyKind::Adt(def, args) = field_ty.kind() { self.add_leaf_fields_for(field_path, def, args, tcx, accumulator) From cfd18c1a7bb177b978bcce1f4bfc48ac7a1ef73e Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Sun, 28 Dec 2025 17:44:35 +0300 Subject: [PATCH 16/29] Add null pointer dereference analysis --- checker/src/block_visitor.rs | 124 ++++++++++++++++++++++++++++ checker/src/body_visitor.rs | 20 +++-- checker/tests/run-pass/offset.rs | 6 +- checker/tests/run-pass/transmute.rs | 4 +- 4 files changed, 143 insertions(+), 11 deletions(-) diff --git a/checker/src/block_visitor.rs b/checker/src/block_visitor.rs index e886f34e..0656c2bc 100644 --- a/checker/src/block_visitor.rs +++ b/checker/src/block_visitor.rs @@ -2324,6 +2324,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com }; if let Expression::BitAnd { left, right } = &result.expression { if right.expression.is_memory_reference() { + // Handles misaligned pointer checks. let alignment = match &left.expression { Expression::CompileTimeConstant(ConstantDomain::U128(1)) => 2u128, Expression::CompileTimeConstant(ConstantDomain::U128(3)) => 4u128, @@ -2336,6 +2337,12 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com } } } + if let Expression::Equals { left, right } = &result.expression { + // Handles null pointer checks. + if left.is_zero() && self.is_memory_safe_reference(right) { + result = Rc::new(false.into()); + } + } self.bv.update_value_at(path, result); } @@ -2398,6 +2405,123 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com } } + // Checks if abstract value is a memory safe reference + // (i.e. a reference, non-null pointer or smart pointer that wraps a non-null pointer). + #[logfn_inputs(TRACE)] + fn is_memory_safe_reference(&mut self, value: &Rc) -> bool { + match &value.expression { + Expression::Reference(_) => true, + Expression::Cast { + operand, + target_type, + } + | Expression::Transmute { + operand, + target_type, + } if *target_type == ExpressionType::Usize => self.is_memory_safe_reference(operand), + Expression::ConditionalExpression { + consequent, + alternate, + .. + } => { + self.is_memory_safe_reference(consequent) + && self.is_memory_safe_reference(alternate) + } + Expression::Join { left, right } => { + self.is_memory_safe_reference(left) && self.is_memory_safe_reference(right) + } + Expression::WidenedJoin { operand, .. } => self.is_memory_safe_reference(operand), + Expression::InitialParameterValue { path, var_type } + | Expression::Variable { path, var_type } + if *var_type == ExpressionType::ThinPointer => + { + // Expression types don't currently differentiate between references and raw pointers, + // so this checks the path rustc type instead. + if self.is_memory_safe_reference_path(path) { + return true; + } + + // Checks if the presumably raw pointer is derived from a memory safe reference. + let inner_value = self.bv.current_environment.value_at(path); + if inner_value.is_some() && inner_value != Some(value) { + let inner_value = inner_value.unwrap().clone(); + return self.is_memory_safe_reference(&inner_value); + } + false + } + Expression::Offset { .. } => self.bv.try_check_offset(value).unwrap_or(false), + _ => false, + } + } + + // Checks if path is a memory safe reference + // (i.e. either a reference, non-null pointer or smart pointer that wraps a non-null pointer). + #[logfn_inputs(TRACE)] + fn is_memory_safe_reference_path(&mut self, path: &Rc) -> bool { + let ty = self + .bv + .type_visitor() + .get_path_rustc_type(path, self.bv.current_span); + if ty.is_ref() { + return true; + } + + if let Some(ty_def_id) = ty.ty_adt_def().map(|adt_def| adt_def.did()) { + let tcx = self.bv.tcx; + let get_field_type = |def_id: DefId, field_name: &str| { + let ty = tcx.type_of(def_id).skip_binder(); + match ty.kind() { + TyKind::Adt(adt_def, args) => { + let field = adt_def + .all_fields() + .find(|field| field.name.as_str() == field_name); + field.and_then(|field| { + field + .ty(tcx, args) + .ty_adt_def() + .map(|adt_def| adt_def.did()) + }) + } + _ => None, + } + }; + + // Handles `core::ptr::Unique`. + let ptr_unique_def_id = tcx.lang_items().ptr_unique().or_else(|| { + // Fallback to extracting from Box. + self.bv + .tcx + .lang_items() + .owned_box() + .and_then(|def_id| get_field_type(def_id, "0")) + }); + if ptr_unique_def_id == Some(ty_def_id) { + return true; + } + + // Handles `core::ptr::NonNull`. + let ptr_non_null_def_id = + ptr_unique_def_id.and_then(|def_id| get_field_type(def_id, "pointer")); + if ptr_non_null_def_id == Some(ty_def_id) { + return true; + } + } + + // Handles smart pointers that wrap non-null pointers (e.g. `Box`, `Vec` and `String`). + if let PathEnum::QualifiedPath { + qualifier, + selector, + .. + } = &path.value + { + if *selector.as_ref() == PathSelector::Field(0) { + return self.is_memory_safe_reference_path(qualifier); + } + } + + false + } + /// Apply the given binary operator to the two operands, with overflow checking where appropriate /// and assign the result to path. #[logfn_inputs(TRACE)] diff --git a/checker/src/body_visitor.rs b/checker/src/body_visitor.rs index b52d4cd4..393681ff 100644 --- a/checker/src/body_visitor.rs +++ b/checker/src/body_visitor.rs @@ -1102,6 +1102,17 @@ impl<'analysis, 'compilation, 'tcx> BodyVisitor<'analysis, 'compilation, 'tcx> { /// Checks that the offset is either in bounds or one byte past the end of an allocated object. #[logfn_inputs(TRACE)] pub fn check_offset(&mut self, offset: &AbstractValue) { + if let Some(false) = self.try_check_offset(offset) { + let span = self.current_span; + let message = "[MIRAI] effective offset is outside allocated range"; + let warning = self.cv.session.dcx().struct_span_warn(span, message); + self.emit_diagnostic(warning); + } + } + + /// Checks that the offset is either in bounds or one byte past the end of an allocated object. + #[logfn_inputs(TRACE)] + pub fn try_check_offset(&mut self, offset: &AbstractValue) -> Option { if let Expression::Offset { left, right, .. } = &offset.expression { let ge_zero = right.greater_or_equal(Rc::new(ConstantDomain::I128(0).into())); let mut len = left.clone(); @@ -1125,12 +1136,9 @@ impl<'analysis, 'compilation, 'tcx> BodyVisitor<'analysis, 'compilation, 'tcx> { let (in_range_as_bool, entry_cond_as_bool) = self.check_condition_value_and_reachability(&in_range); //todo: eventually give a warning if in_range_as_bool is unknown. For now, that is too noisy. - if entry_cond_as_bool.unwrap_or(true) && !in_range_as_bool.unwrap_or(true) { - let span = self.current_span; - let message = "[MIRAI] effective offset is outside allocated range"; - let warning = self.cv.session.dcx().struct_span_warn(span, message); - self.emit_diagnostic(warning); - } + Some(in_range_as_bool.unwrap_or(true) || !entry_cond_as_bool.unwrap_or(true)) + } else { + None } } diff --git a/checker/tests/run-pass/offset.rs b/checker/tests/run-pass/offset.rs index 8c96e228..361c9065 100644 --- a/checker/tests/run-pass/offset.rs +++ b/checker/tests/run-pass/offset.rs @@ -14,7 +14,7 @@ pub fn t1() -> u8 { unsafe { let a = std::alloc::alloc(std::alloc::Layout::from_size_align(4, 2).unwrap()); let b = std::intrinsics::offset(a, -1isize); //~ effective offset is outside allocated range - *b + *b //~ possible null pointer dereference } } @@ -32,7 +32,7 @@ pub fn t3() -> u8 { let a = std::alloc::alloc(std::alloc::Layout::from_size_align(4, 2).unwrap()); let b = std::intrinsics::arith_offset(a, -2); let c = std::intrinsics::offset(b, 1isize); //~ effective offset is outside allocated range - *c + *c //~ possible null pointer dereference } } @@ -40,7 +40,7 @@ pub fn t4() -> u8 { unsafe { let a = std::alloc::alloc(std::alloc::Layout::from_size_align(4, 2).unwrap()); let b = std::intrinsics::offset(a, 6isize); //~ effective offset is outside allocated range - *b + *b //~ possible null pointer dereference } } diff --git a/checker/tests/run-pass/transmute.rs b/checker/tests/run-pass/transmute.rs index 77b78d86..12061602 100644 --- a/checker/tests/run-pass/transmute.rs +++ b/checker/tests/run-pass/transmute.rs @@ -12,14 +12,14 @@ use mirai_annotations::*; pub unsafe fn t1(ptr: *mut i32) { - *ptr = 123; + *ptr = 123; //~possible null pointer dereference let non_null_ptr = std::ptr::NonNull::new_unchecked(ptr); let ptr2 = std::mem::transmute::, *const i32>(non_null_ptr); verify!(*ptr2 == 123); } pub unsafe fn t2(ptr: *mut i32) { - *ptr = 123; + *ptr = 123; //~possible null pointer dereference let non_null_ptr = std::mem::transmute::<*const i32, std::ptr::NonNull>(ptr); verify!(*non_null_ptr.as_ptr() == 123); } From ca031d339cc66d9f9dfa3f0aa60fab73ce71ffdb Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Mon, 29 Dec 2025 20:39:26 +0300 Subject: [PATCH 17/29] Fix active calls map tracking --- checker/src/body_visitor.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/checker/src/body_visitor.rs b/checker/src/body_visitor.rs index 393681ff..848b44e0 100644 --- a/checker/src/body_visitor.rs +++ b/checker/src/body_visitor.rs @@ -284,6 +284,13 @@ impl<'analysis, 'compilation, 'tcx> BodyVisitor<'analysis, 'compilation, 'tcx> { self.tcx, ); } + } else { + let entry = self.active_calls_map.entry(self.def_id).or_insert(0); + if *entry <= 1 { + self.active_calls_map.remove(&self.def_id); + } else { + *entry -= 1; + } } self.cv .constant_value_cache From 0728ff48a7734edcf569c179c0a381da8c095979 Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Sat, 27 Dec 2025 12:30:55 +0300 Subject: [PATCH 18/29] Add equality expression refinement/simplification for casting and transmuting zero-value integers --- checker/src/abstract_value.rs | 31 ++++++++++++++++++++++++---- checker/tests/run-pass/trait_call.rs | 5 ++--- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/checker/src/abstract_value.rs b/checker/src/abstract_value.rs index 9ee0d149..767459e3 100644 --- a/checker/src/abstract_value.rs +++ b/checker/src/abstract_value.rs @@ -2827,10 +2827,33 @@ impl AbstractValueTrait for Rc { operand, target_type, }, - ) => { - if *val == 0 && *target_type == ExpressionType::ThinPointer { - return self.equals(operand.clone()); - } + ) if *val == 0 && *target_type == ExpressionType::ThinPointer => { + return self.equals(operand.clone()); + } + + // [0 == cast(x, integer)] -> 0 == x + ( + Expression::CompileTimeConstant(ConstantDomain::U128(val)), + Expression::Cast { + operand, + target_type, + }, + ) if *val == 0 && target_type.is_integer() => { + return self.equals(operand.clone()); + } + + // [0 == transmute(x, integer)] -> 0 == x + ( + Expression::CompileTimeConstant(ConstantDomain::U128(val)), + Expression::Transmute { + operand, + target_type, + }, + ) if *val == 0 + && target_type.is_integer() + && target_type.bit_length() == operand.expression.infer_type().bit_length() => + { + return self.equals(operand.clone()); } // [0 == !x] -> x when x is Boolean. Canonicalize it to the latter. diff --git a/checker/tests/run-pass/trait_call.rs b/checker/tests/run-pass/trait_call.rs index c49f0bc4..314e4b76 100644 --- a/checker/tests/run-pass/trait_call.rs +++ b/checker/tests/run-pass/trait_call.rs @@ -47,7 +47,7 @@ pub fn t1() { let foo = Foo { bx: Box::new(bar) as Box, }; - let bi = foo.bx.bar(); //~ the called function did not resolve to an implementation with a MIR body + let bi = foo.bx.bar(); verify!(bi == 1); } @@ -89,8 +89,7 @@ pub fn t4a() -> i32 { } fn t4c(foo: Foo) -> i32 { - // todo: fix this - foo.bx.bar() //~ the called function did not resolve to an implementation with a MIR body + foo.bx.bar() } impl Clone for Box { From 09284f812cc194a6260fffc8bd977e980d763fae Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Mon, 29 Dec 2025 21:21:35 +0300 Subject: [PATCH 19/29] tests: Update call graphs --- checker/tests/call_graph/fnptr.rs | 2 +- checker/tests/call_graph/fnptr_clean.rs | 2 +- checker/tests/call_graph/fnptr_deduplicate.rs | 2 +- checker/tests/call_graph/fnptr_dom.rs | 2 +- checker/tests/call_graph/fnptr_dom_loop.rs | 2 +- checker/tests/call_graph/fnptr_dom_loop_souffle.rs | 2 +- checker/tests/call_graph/fnptr_fold.rs | 8 ++++---- checker/tests/call_graph/fnptr_loop.rs | 2 +- checker/tests/call_graph/fnptr_slice.rs | 2 +- checker/tests/call_graph/generic.rs | 2 +- checker/tests/call_graph/static_deduplicate.rs | 6 +++--- checker/tests/call_graph/static_fold.rs | 6 +++--- checker/tests/call_graph/trait.rs | 2 +- 13 files changed, 20 insertions(+), 20 deletions(-) diff --git a/checker/tests/call_graph/fnptr.rs b/checker/tests/call_graph/fnptr.rs index 6063ebf5..7e7af2a5 100644 --- a/checker/tests/call_graph/fnptr.rs +++ b/checker/tests/call_graph/fnptr.rs @@ -69,7 +69,7 @@ commit; ], "callables": [ { - "name": "/fnptr/fn1(u32,&'^0.Named(DefId(0:7 ~ fnptr[bde8]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", + "name": "/fnptr/fn1(u32,&'^0.Named(DefId(0:7 ~ fnptr[7735]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", "file_index": 0, "first_line": 9, "local": true diff --git a/checker/tests/call_graph/fnptr_clean.rs b/checker/tests/call_graph/fnptr_clean.rs index 32ea4d45..093bde3a 100644 --- a/checker/tests/call_graph/fnptr_clean.rs +++ b/checker/tests/call_graph/fnptr_clean.rs @@ -74,7 +74,7 @@ commit; ], "callables": [ { - "name": "/fnptr_clean/fn1(u32,&'^0.Named(DefId(0:8 ~ fnptr_clean[9455]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", + "name": "/fnptr_clean/fn1(u32,&'^0.Named(DefId(0:8 ~ fnptr_clean[4e55]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", "file_index": 0, "first_line": 14, "local": true diff --git a/checker/tests/call_graph/fnptr_deduplicate.rs b/checker/tests/call_graph/fnptr_deduplicate.rs index bf637f47..17f00996 100644 --- a/checker/tests/call_graph/fnptr_deduplicate.rs +++ b/checker/tests/call_graph/fnptr_deduplicate.rs @@ -66,7 +66,7 @@ commit; ], "callables": [ { - "name": "/fnptr_deduplicate/fn1(u32,&'^0.Named(DefId(0:7 ~ fnptr_deduplicate[e242]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", + "name": "/fnptr_deduplicate/fn1(u32,&'^0.Named(DefId(0:7 ~ fnptr_deduplicate[2a2a]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", "file_index": 0, "first_line": 10, "local": true diff --git a/checker/tests/call_graph/fnptr_dom.rs b/checker/tests/call_graph/fnptr_dom.rs index ffbee64c..90bc7024 100644 --- a/checker/tests/call_graph/fnptr_dom.rs +++ b/checker/tests/call_graph/fnptr_dom.rs @@ -71,7 +71,7 @@ commit; ], "callables": [ { - "name": "/fnptr_dom/fn1(u32,&'^0.Named(DefId(0:7 ~ fnptr_dom[0574]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] },&'^1.Named(DefId(0:8 ~ fnptr_dom[0574]::fn1::'_#1), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", + "name": "/fnptr_dom/fn1(u32,&'^0.Named(DefId(0:7 ~ fnptr_dom[2f4a]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] },&'^1.Named(DefId(0:8 ~ fnptr_dom[2f4a]::fn1::'_#1), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", "file_index": 0, "first_line": 9, "local": true diff --git a/checker/tests/call_graph/fnptr_dom_loop.rs b/checker/tests/call_graph/fnptr_dom_loop.rs index 98773005..656a663f 100644 --- a/checker/tests/call_graph/fnptr_dom_loop.rs +++ b/checker/tests/call_graph/fnptr_dom_loop.rs @@ -85,7 +85,7 @@ commit; ], "callables": [ { - "name": "/fnptr_dom_loop/fn1(u32,&'^0.Named(DefId(0:8 ~ fnptr_dom_loop[74da]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] },&'^1.Named(DefId(0:9 ~ fnptr_dom_loop[74da]::fn1::'_#1), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", + "name": "/fnptr_dom_loop/fn1(u32,&'^0.Named(DefId(0:8 ~ fnptr_dom_loop[55c2]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] },&'^1.Named(DefId(0:9 ~ fnptr_dom_loop[55c2]::fn1::'_#1), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", "file_index": 0, "first_line": 9, "local": true diff --git a/checker/tests/call_graph/fnptr_dom_loop_souffle.rs b/checker/tests/call_graph/fnptr_dom_loop_souffle.rs index b692b734..678465fd 100644 --- a/checker/tests/call_graph/fnptr_dom_loop_souffle.rs +++ b/checker/tests/call_graph/fnptr_dom_loop_souffle.rs @@ -82,7 +82,7 @@ digraph { ], "callables": [ { - "name": "/fnptr_dom_loop_souffle/fn1(u32,&'^0.Named(DefId(0:8 ~ fnptr_dom_loop_souffle[3113]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] },&'^1.Named(DefId(0:9 ~ fnptr_dom_loop_souffle[3113]::fn1::'_#1), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", + "name": "/fnptr_dom_loop_souffle/fn1(u32,&'^0.Named(DefId(0:8 ~ fnptr_dom_loop_souffle[cc73]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] },&'^1.Named(DefId(0:9 ~ fnptr_dom_loop_souffle[cc73]::fn1::'_#1), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", "file_index": 0, "first_line": 10, "local": true diff --git a/checker/tests/call_graph/fnptr_fold.rs b/checker/tests/call_graph/fnptr_fold.rs index 4e202b49..37e5f8e3 100644 --- a/checker/tests/call_graph/fnptr_fold.rs +++ b/checker/tests/call_graph/fnptr_fold.rs @@ -73,7 +73,7 @@ commit; ], "callables": [ { - "name": "/fnptr_fold/fn1(u32,&'^0.Named(DefId(0:7 ~ fnptr_fold[7f17]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", + "name": "/fnptr_fold/fn1(u32,&'^0.Named(DefId(0:7 ~ fnptr_fold[0e9f]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", "file_index": 0, "first_line": 10, "local": true @@ -97,15 +97,15 @@ commit; "local": true }, { - "name": "/std/std::io::_print(std::fmt::Arguments<'^0.Named(DefId(1:14103 ~ std[8b2b]::io::stdio::_print::'_), \"'_\")>)->()", + "name": "/std/std::io::_print(std::fmt::Arguments<'^0.Named(DefId(1:14194 ~ std[139b]::io::stdio::_print::'_), \"'_\")>)->()", "file_index": 1, - "first_line": 1232, + "first_line": 1274, "local": false }, { "name": "/core/std::fmt::Arguments::<'a>::new_const(&'a/#0 [&'static str; N/#1])->std::fmt::Arguments<'a/#0>", "file_index": 2, - "first_line": 591, + "first_line": 630, "local": true } ], diff --git a/checker/tests/call_graph/fnptr_loop.rs b/checker/tests/call_graph/fnptr_loop.rs index 119b616f..d19fc902 100644 --- a/checker/tests/call_graph/fnptr_loop.rs +++ b/checker/tests/call_graph/fnptr_loop.rs @@ -82,7 +82,7 @@ commit; "local": true }, { - "name": "/fnptr_loop/fn2(u32,&'^0.Named(DefId(0:7 ~ fnptr_loop[39bd]::fn2::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", + "name": "/fnptr_loop/fn2(u32,&'^0.Named(DefId(0:7 ~ fnptr_loop[c511]::fn2::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", "file_index": 0, "first_line": 12, "local": true diff --git a/checker/tests/call_graph/fnptr_slice.rs b/checker/tests/call_graph/fnptr_slice.rs index 06659479..3f69861e 100644 --- a/checker/tests/call_graph/fnptr_slice.rs +++ b/checker/tests/call_graph/fnptr_slice.rs @@ -62,7 +62,7 @@ commit; ], "callables": [ { - "name": "/fnptr_slice/fn1(u32,&'^0.Named(DefId(0:7 ~ fnptr_slice[1b4f]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", + "name": "/fnptr_slice/fn1(u32,&'^0.Named(DefId(0:7 ~ fnptr_slice[cd9e]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", "file_index": 0, "first_line": 10, "local": true diff --git a/checker/tests/call_graph/generic.rs b/checker/tests/call_graph/generic.rs index 2e3ae26e..850a2181 100644 --- a/checker/tests/call_graph/generic.rs +++ b/checker/tests/call_graph/generic.rs @@ -74,7 +74,7 @@ commit; "local": true }, { - "name": "/generic/Gen::::bar(&'^0.Named(DefId(0:12 ~ generic[fc3c]::{impl#0}::bar::'_), \"'_\") Gen,T/#0)->()", + "name": "/generic/Gen::::bar(&'^0.Named(DefId(0:12 ~ generic[1adc]::{impl#0}::bar::'_), \"'_\") Gen,T/#0)->()", "file_index": 0, "first_line": 14, "local": true diff --git a/checker/tests/call_graph/static_deduplicate.rs b/checker/tests/call_graph/static_deduplicate.rs index 4edd79cd..d18f4884 100644 --- a/checker/tests/call_graph/static_deduplicate.rs +++ b/checker/tests/call_graph/static_deduplicate.rs @@ -66,19 +66,19 @@ commit; ], "callables": [ { - "name": "/static_deduplicate/fn1(u32,&'^0.Named(DefId(0:7 ~ static_deduplicate[de51]::fn1::'_), \"'_\") str)->(u32, &'^0.Named(DefId(0:7 ~ static_deduplicate[de51]::fn1::'_), \"'_\") str)", + "name": "/static_deduplicate/fn1(u32,&'^0.Named(DefId(0:7 ~ static_deduplicate[f24b]::fn1::'_), \"'_\") str)->(u32, &'^0.Named(DefId(0:7 ~ static_deduplicate[f24b]::fn1::'_), \"'_\") str)", "file_index": 0, "first_line": 10, "local": true }, { - "name": "/static_deduplicate/fn2(u32,&'^0.Named(DefId(0:8 ~ static_deduplicate[de51]::fn2::'_), \"'_\") str)->(u32, &'^0.Named(DefId(0:8 ~ static_deduplicate[de51]::fn2::'_), \"'_\") str)", + "name": "/static_deduplicate/fn2(u32,&'^0.Named(DefId(0:8 ~ static_deduplicate[f24b]::fn2::'_), \"'_\") str)->(u32, &'^0.Named(DefId(0:8 ~ static_deduplicate[f24b]::fn2::'_), \"'_\") str)", "file_index": 0, "first_line": 13, "local": true }, { - "name": "/static_deduplicate/fn3(u32,&'^0.Named(DefId(0:9 ~ static_deduplicate[de51]::fn3::'_), \"'_\") str)->(u32, &'^0.Named(DefId(0:9 ~ static_deduplicate[de51]::fn3::'_), \"'_\") str)", + "name": "/static_deduplicate/fn3(u32,&'^0.Named(DefId(0:9 ~ static_deduplicate[f24b]::fn3::'_), \"'_\") str)->(u32, &'^0.Named(DefId(0:9 ~ static_deduplicate[f24b]::fn3::'_), \"'_\") str)", "file_index": 0, "first_line": 16, "local": true diff --git a/checker/tests/call_graph/static_fold.rs b/checker/tests/call_graph/static_fold.rs index dcc9d278..667dff72 100644 --- a/checker/tests/call_graph/static_fold.rs +++ b/checker/tests/call_graph/static_fold.rs @@ -93,15 +93,15 @@ commit; "local": true }, { - "name": "/std/std::io::_print(std::fmt::Arguments<'^0.Named(DefId(1:14103 ~ std[8b2b]::io::stdio::_print::'_), \"'_\")>)->()", + "name": "/std/std::io::_print(std::fmt::Arguments<'^0.Named(DefId(1:14194 ~ std[139b]::io::stdio::_print::'_), \"'_\")>)->()", "file_index": 1, - "first_line": 1232, + "first_line": 1274, "local": false }, { "name": "/core/std::fmt::Arguments::<'a>::new_const(&'a/#0 [&'static str; N/#1])->std::fmt::Arguments<'a/#0>", "file_index": 2, - "first_line": 591, + "first_line": 630, "local": false } ], diff --git a/checker/tests/call_graph/trait.rs b/checker/tests/call_graph/trait.rs index 09ffcdf9..53d8a25d 100644 --- a/checker/tests/call_graph/trait.rs +++ b/checker/tests/call_graph/trait.rs @@ -74,7 +74,7 @@ commit; "local": true }, { - "name": "/trait/::bar(&'^0.Named(DefId(0:13 ~ trait[51f9]::{impl#0}::bar::'_), \"'_\") Bar)->i32", + "name": "/trait/::bar(&'^0.Named(DefId(0:13 ~ trait[88ec]::{impl#0}::bar::'_), \"'_\") Bar)->i32", "file_index": 0, "first_line": 14, "local": true From af5a356f6a3028f46ecc19fa2a345ba4128b7342 Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Mon, 29 Dec 2025 21:45:07 +0300 Subject: [PATCH 20/29] Rebuild summary store --- binaries/summary_store.tar | Bin 3665920 -> 4893184 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/binaries/summary_store.tar b/binaries/summary_store.tar index a1c9150fccfe15437f0df8f3c738a407cc6e888d..68bae2938a73e64f88413dd9bd1825b31985bf8a 100644 GIT binary patch literal 4893184 zcmeEv3A|iYegAzS3G*iVPJo05iY$Ri-Zs1h1VacAganfypyFlT%zb$Sv%JibynqN& zYiR|ywuoX?s@A_+YFk8Gi>+JhTK5G(5UsRowIz$BQIY@o&As2b=iPT^=GLFP8EJBUa29sr6dG*M7+i9DCjSp5_-8*9#;hR+jj5LckkT%@~t~}ZN74SHP349e5u3=y?n`wKXA)s(Z66N-|V+!U5c_h z_UD+v)wq(p7-)yLoc^lljjWQEOmSRd$w7tTF21O7zC-{Lb^fZRI`uW@KM~!-$~nC* zF}7^Jdh?cTyRVllj(VEEs>OZoqQ`$w>GchDi@R#ucKyn&+x5+t?%ujn-*xqs+jdKq zOg+zE)sj#8Wi}hlu!f#px8#?;T;F!db^4aA+gZte%lxCi`t`3OzuwIXHLqv`1?fTO zHDC|9ULC4SlC76qwzWc(E4N;{TiP<3zO(oUt^nL(c0^z2>utfYRh?xJ~V{4-OnJyic(^fmTU3NLAt|UoYlQn*L z&DBpvkInuRtH2p`D^O$>W@#dy&XtbMeyeSfE@TiuNKAjV_-845H=F$dwC?y&WYf>y z`r!AManFDyC$ML9m2<^JDP0^(8>zmDf|1PUQfV@mdq&Ln8gpvoQp~*7*{f0^kt`M0 z7YoVtW6Twl-jlPR#tOwv@u5uv{hRvOZ8%O9p^G{Vh4OY4-cy`=zH{yyetiFed#Pdc z9DhMIn#!PS75f7bYYCAXBBEVu0?rq-;q$GCCfoW z#mgp9o5{;WWAuetnjNNoIEDRDoSDMU#D|S|)~nn*WrP(~r5%-7kCqXN%r25+x=2ot zpI4bdnUvp^##o8&bn(y4C+2_j^C$2A@UGuH`cwqv)7v>G{p7TFUwrzBkiDS#8|4SB zzn~Xo`mzx}fDS?R33TPo^q%n&h>lJ{7=%IiqL=JH`sLeCSdPlj`|aPk?hEh#tNVV1 zPN8@77j)++a3^YO+8ON64MQDYNoD^-UxGQocy|98$q?}+Bu0Op+OgSLG}lFec4 zEgP|I+qdoBw)slkrJJ*sP^~{QHWx1YW=2}SX z*I7Ga$;3p0&EXu-^ZSg#SSG(;#^?0NZM(I|vE#pD+B@~#rddsk%qXXutVhC?5D2`s z^|`2S?oMW(#wm?DS;AjLNLG~&iTDIg)%eO=qYOHG)CR0}sya6|5AuKkhOjeF7}i12 zA2wIeb_{GTvpta@nCC(2u6(xsjY9kdF1Yy$o! zIY1d^ZOs3G9K1&uaS&GC8e1RN(j{*6G4!HLnnpSd{i?h*jBA7J9A0q+kuN%m&ldvf z6gU~i023h(<*l)(D5GhqGlH^m(0M^yInEBII^!?sx+`yu*^BVjNKVq%^t(u=w^-*6 z>u!$$CDQ|-r=|C^enQ5Hv0~etcSnvquFa}wwMI^i-cDL>=55u7TBO#hwZJm$tJZx% zW0?1<9+A{LusM*6+w`^UDNVBcn(6)Mz4L!L{L;wTSgz62XvK4O*6eqD{i=^duVbKm z;#9w|wd0_&*T7GWet*`da?yidWCgrzY5~>l2G+W7%OS1rOzeL-n@ixA;P1AgR5H*n zW4o;qnb`KN*B&fZI}J^CwL%5s60iX7$koeu1bJW;R|Q#^y zWVT-ZwbM}-{v9O?x-Q7?7hiqi=dmCE@C6NMVnm7xRVEvT97LmF#xk%{_06j#oP6 zDOSjfsw7M2_SkKSjTQ1)y<8d_VT3Cd5BMo-^G8#|(Ysh#7mLfX#BDS`$#y1PoS&o~ z6Nw;IX^Y+c_(hrx+g56g0?AE__}WX??7AcRhpavq)vXUrn2>5Hk2JF~zyIU!9f=%y zvpEi5WL5~1Wob5-6}%d&Ay^GK`jjfIY$mCQmbITtO7tX|EdW08+qFv9yIVa>dL05L zt?Na)+>fG}iD`pSXhG!hyVw2x7BB+Wb59Y`$Q}I z<0O*0*u-~gjZ*9-|1aWW*t6x%^(AMEqluPg)X32}ogTH9T pSDh7Io|M=vcx<& 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%0DU0LQN0rFcGc4_ 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 MLIXkrZD`>C14H*m&;S4c delta 199755 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 IujHh%#$$f_*Yt*^nV{*JK2&trTwT%v|#Ap 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 From 9a656353632baeed0f4fddad8409b8116863d159 Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Tue, 23 Dec 2025 16:11:33 +0300 Subject: [PATCH 21/29] Update toolchain to `2025-05-09` --- rust-toolchain.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 714747b5..c5ac22b5 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "nightly-2025-04-04" +channel = "nightly-2025-05-09" components = ["clippy", "rustfmt", "rustc-dev", "rust-src", "rust-std", "llvm-tools-preview"] From e6a0590abca8d503b969111c2a0c9153c3bbca9b Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Tue, 23 Dec 2025 16:10:43 +0300 Subject: [PATCH 22/29] revert: Handle optional type names in `DefPathData` --- checker/src/known_names.rs | 17 ++--------------- checker/src/utils.rs | 30 ++++++++++++------------------ 2 files changed, 14 insertions(+), 33 deletions(-) diff --git a/checker/src/known_names.rs b/checker/src/known_names.rs index 3a8e72ba..b7401af1 100644 --- a/checker/src/known_names.rs +++ b/checker/src/known_names.rs @@ -6,7 +6,6 @@ use rustc_hir::def_id::DefId; use rustc_hir::definitions::{DefPathData, DisambiguatedDefPathData}; use rustc_middle::ty::TyCtxt; -use rustc_span::Symbol; use std::collections::HashMap; @@ -241,22 +240,10 @@ fn known_name_for_mirai_annotations( // Convenience macro for matching a single terminal path segment to a given item name, // and returning the given `KnownName` (in case of a successful match). macro_rules! known_name_for_terminal_from_ns { - ($path_segments: expr, DefPathData::TypeNs, $item_name: literal, $known_name: expr) => { - known_name_for_terminal_from_ns!($path_segments, DefPathData::TypeNs, |name: &Option< - Symbol, - >| { - (name.as_ref().filter(|name| name.as_str() == $item_name)).map(|_| $known_name) - }) - }; ($path_segments: expr, $ns_variant: path, $item_name: literal, $known_name: expr) => { - known_name_for_terminal_from_ns!($path_segments, $ns_variant, |name: &Symbol| { - (name.as_str() == $item_name).then_some($known_name) - }) - }; - ($path_segments: expr, $ns_variant: path, $transformer: expr) => { match $path_segments { [only_segment] => match &only_segment.data { - $ns_variant(name) => $transformer(name), + $ns_variant(name) => (name.as_str() == $item_name).then_some($known_name), _ => None, }, _ => None, @@ -563,7 +550,7 @@ fn name_from_type_ns( def_path_data: &rustc_hir::definitions::DisambiguatedDefPathData, ) -> Option<&str> { match &def_path_data.data { - DefPathData::TypeNs(name) => name.as_ref().map(Symbol::as_str), + DefPathData::TypeNs(name) => Some(name.as_str()), _ => None, } } diff --git a/checker/src/utils.rs b/checker/src/utils.rs index 5cfa54ba..d10780e9 100644 --- a/checker/src/utils.rs +++ b/checker/src/utils.rs @@ -3,25 +3,22 @@ // This source code is licensed under the MIT license found in the // LICENSE file in the root directory of this source tree. -use rustc_hir::{ - def::DefKind, - def_id::DefId, - definitions::{DefPathData, DisambiguatedDefPathData}, - Node, -}; -use rustc_middle::ty::{ - self, - print::{FmtPrinter, Printer}, - FloatTy, GenericArgKind, GenericArgsRef, IntTy, Ty, TyCtxt, TyKind, UintTy, -}; -use rustc_span::Symbol; - use std::io::Write; use std::rc::Rc; use log::debug; use log_derive::{logfn, logfn_inputs}; + use mirai_annotations::assume_unreachable; +use rustc_hir::def::DefKind; +use rustc_hir::def_id::DefId; +use rustc_hir::definitions::{DefPathData, DisambiguatedDefPathData}; +use rustc_hir::Node; +use rustc_middle::ty; +use rustc_middle::ty::print::{FmtPrinter, Printer}; +use rustc_middle::ty::{ + FloatTy, GenericArgKind, GenericArgsRef, IntTy, Ty, TyCtxt, TyKind, UintTy, +}; /// Returns the location of the rust system binaries that are associated with this build of Mirai. /// The location is obtained by looking at the contents of the environmental variables that were @@ -422,7 +419,7 @@ pub fn is_foreign_contract(tcx: TyCtxt<'_>, def_id: DefId) -> bool { .. }) = &tcx.def_path(def_id).data.first() { - name.is_some_and(|name| name.as_str() == "foreign_contracts") + name.as_str() == "foreign_contracts" } else { false } @@ -432,10 +429,7 @@ pub fn is_foreign_contract(tcx: TyCtxt<'_>, def_id: DefId) -> bool { fn push_component_name(component_data: DefPathData, target: &mut String) { use DefPathData::*; match component_data { - TypeNs(name) => { - target.push_str(name.as_ref().map(Symbol::as_str).unwrap_or("RPITIT")); - } - ValueNs(name) | MacroNs(name) | LifetimeNs(name) => { + TypeNs(name) | ValueNs(name) | MacroNs(name) | LifetimeNs(name) => { target.push_str(name.as_str()); } _ => target.push_str(match component_data { From b4b43ecb1a2c827a79cb51fcbf299443074b8422 Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Wed, 24 Dec 2025 11:20:41 +0300 Subject: [PATCH 23/29] Handle `AssertKind::ResumedAfterDrop` --- checker/src/block_visitor.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/checker/src/block_visitor.rs b/checker/src/block_visitor.rs index 0656c2bc..3ac8d770 100644 --- a/checker/src/block_visitor.rs +++ b/checker/src/block_visitor.rs @@ -1659,6 +1659,16 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com ResumedAfterPanic(CoroutineKind::Desugared(CoroutineDesugaring::Gen, _)) => { "`gen fn` should just keep returning `None` after panicking" } + ResumedAfterDrop(CoroutineKind::Coroutine(_)) => "coroutine resumed after drop", + ResumedAfterDrop(CoroutineKind::Desugared(CoroutineDesugaring::Async, _)) => { + "`async fn` resumed after drop" + } + ResumedAfterDrop(CoroutineKind::Desugared(CoroutineDesugaring::AsyncGen, _)) => { + "`async gen fn` resumed after drop" + } + ResumedAfterDrop(CoroutineKind::Desugared(CoroutineDesugaring::Gen, _)) => { + "`gen fn` should just keep returning `None` after drop" + } NullPointerDereference => "null pointer dereference", } } From c54e6ca23842cfe5ae1b46cc783b6ccca1b235d5 Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Wed, 24 Dec 2025 11:23:53 +0300 Subject: [PATCH 24/29] Update `TerminatorKind::Drop` --- checker/src/block_visitor.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/checker/src/block_visitor.rs b/checker/src/block_visitor.rs index 3ac8d770..2c97c90b 100644 --- a/checker/src/block_visitor.rs +++ b/checker/src/block_visitor.rs @@ -300,6 +300,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com target, unwind, replace, + .. } => self.visit_drop(place, *target, *unwind, *replace), mir::TerminatorKind::Call { func, From e32133877081a24e5a3b05ed36ba0419128b0ba3 Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Tue, 30 Dec 2025 09:02:03 +0300 Subject: [PATCH 25/29] Update `Cargo.lock` --- Cargo.lock | 554 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 313 insertions(+), 241 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f4bb4611..94036858 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,18 +4,18 @@ version = 4 [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] [[package]] name = "anstream" -version = "0.6.18" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", "anstyle-parse", @@ -28,54 +28,48 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.10" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" [[package]] name = "anstyle-parse" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.2" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys", + "windows-sys 0.61.2", ] [[package]] name = "anstyle-wincon" -version = "3.0.7" +version = "3.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", - "once_cell", - "windows-sys", + "once_cell_polyfill", + "windows-sys 0.61.2", ] [[package]] name = "archery" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae2ed21cd55021f05707a807a5fc85695dafb98832921f6cfa06db67ca5b869" +checksum = "70e0a5f99dfebb87bb342d0f53bb92c81842e100bbb915223e38349580e5441d" dependencies = [ "triomphe", ] -[[package]] -name = "autocfg" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" - [[package]] name = "bincode" version = "1.3.3" @@ -91,16 +85,16 @@ version = "0.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.10.0", "cexpr", "clang-sys", - "itertools", + "itertools 0.13.0", "proc-macro2", "quote", "regex", "rustc-hash", "shlex", - "syn 2.0.98", + "syn 2.0.111", ] [[package]] @@ -111,9 +105,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.8.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" [[package]] name = "byteorder" @@ -123,27 +117,28 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "camino" -version = "1.1.9" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48" dependencies = [ - "serde", + "serde_core", ] [[package]] name = "cargo-platform" -version = "0.1.9" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +checksum = "87a0c0e6148f11f01f32650a2ea02d532b2ad4e81d8bd41e6e565b5adc5e6082" dependencies = [ "serde", + "serde_core", ] [[package]] name = "cargo_metadata" -version = "0.19.1" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8769706aad5d996120af43197bf46ef6ad0fda35216b4505f926a365a232d924" +checksum = "ef987d17b0a113becdd19d3d0022d04d7ef41f9efe4f3fb63ac44ba61df3ade9" dependencies = [ "camino", "cargo-platform", @@ -155,10 +150,11 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.12" +version = "1.2.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "755717a7de9ec452bf7f3f1a3099085deabd7f2962b861dae91ecd7a365903d2" +checksum = "7a0aeaff4ff1a90589618835a598e545176939b97874f7abc7851caa0618f203" dependencies = [ + "find-msvc-tools", "shlex", ] @@ -173,9 +169,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "clang-sys" @@ -190,18 +186,18 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.28" +version = "4.5.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e77c3243bd94243c03672cb5154667347c457ca271254724f9f393aee1c05ff" +checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.5.27" +version = "4.5.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b26884eb4b57140e4d2d93652abfa49498b938b3c9179f9fc487b0acc3edad7" +checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00" dependencies = [ "anstream", "anstyle", @@ -211,41 +207,41 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" [[package]] name = "cmake" -version = "0.1.53" +version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e24a03c8b52922d68a1589ad61032f2c1aa5a8158d2aa0d93c6e9534944bbad6" +checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d" dependencies = [ "cc", ] [[package]] name = "colorchoice" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "contracts" -version = "0.6.3" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1d1429e3bd78171c65aa010eabcdf8f863ba3254728dbfb0ad4b1545beac15c" +checksum = "008eb94d541da40512913ef5e0707c3fb0e7280ba1af13f062461e46dd96ef7e" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.111", ] [[package]] name = "crc32fast" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if", ] @@ -312,15 +308,15 @@ dependencies = [ [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "env_filter" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" +checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2" dependencies = [ "log", "regex", @@ -328,31 +324,31 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.6" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcaee3d8e3cfc3fd92428d477bc97fc29ec8716d180c0d74c643bb26166660e0" +checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f" dependencies = [ "anstream", "anstyle", "env_filter", - "humantime", + "jiff", "log", ] [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.10" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.61.2", ] [[package]] @@ -363,16 +359,22 @@ checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "filetime" -version = "0.2.25" +version = "0.2.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" +checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed" dependencies = [ "cfg-if", "libc", "libredox", - "windows-sys", + "windows-sys 0.60.2", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645cbb3a84e60b7531617d5ae4e57f7e27308f6445f5abf653209ea76dec8dff" + [[package]] name = "fixedbitset" version = "0.5.7" @@ -385,6 +387,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + [[package]] name = "fs2" version = "0.4.3" @@ -406,33 +414,36 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.3.1" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "libc", - "wasi", - "windows-targets", + "r-efi", + "wasip2", ] [[package]] name = "glob" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash", +] [[package]] -name = "humantime" -version = "2.1.0" +name = "hashbrown" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" [[package]] name = "ident_case" @@ -442,12 +453,12 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "indexmap" -version = "2.7.1" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" +checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.16.1", ] [[package]] @@ -461,9 +472,9 @@ dependencies = [ [[package]] name = "is_terminal_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itertools" @@ -474,11 +485,44 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + [[package]] name = "itoa" -version = "1.0.14" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" + +[[package]] +name = "jiff" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a87d9b8105c23642f50cbbae03d1f75d8422c5cb98ce7ee9271f7ff7505be6b8" +dependencies = [ + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde_core", +] + +[[package]] +name = "jiff-static" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b787bebb543f8969132630c51fd0afab173a86c6abae56ff3b9e5e3e3f9f6e58" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] [[package]] name = "lazy_static" @@ -488,52 +532,51 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.169" +version = "0.2.178" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" +checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" [[package]] name = "libloading" -version = "0.8.6" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-targets", + "windows-link", ] [[package]] name = "libredox" -version = "0.1.3" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.10.0", "libc", - "redox_syscall 0.5.8", + "redox_syscall 0.7.0", ] [[package]] name = "linux-raw-sys" -version = "0.4.15" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.25" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "log-derive" @@ -549,9 +592,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "minimal-lexical" @@ -569,7 +612,7 @@ dependencies = [ "contracts", "env_logger", "fs2", - "itertools", + "itertools 0.14.0", "lazy_static", "log", "log-derive", @@ -614,9 +657,15 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.3" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "parking_lot" @@ -645,56 +694,78 @@ dependencies = [ [[package]] name = "petgraph" -version = "0.7.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" +checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" dependencies = [ "fixedbitset", + "hashbrown 0.15.5", "indexmap", + "serde", ] [[package]] name = "pkg-config" -version = "0.3.31" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "portable-atomic" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy 0.7.35", + "zerocopy", ] [[package]] name = "proc-macro2" -version = "1.0.93" +version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" +checksum = "9695f8df41bb4f3d222c95a67532365f569318332d03d5f3f67f37b20e6ebdf0" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.38" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "rand" -version = "0.9.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha", "rand_core", - "zerocopy 0.8.17", ] [[package]] @@ -709,19 +780,18 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.9.0" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b08f3c9802962f7e1b25113931d94f43ed9725bebc59db9d0c3e9a23b67e15ff" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ "getrandom", - "zerocopy 0.8.17", ] [[package]] name = "rayon" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" dependencies = [ "either", "rayon-core", @@ -729,9 +799,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -748,18 +818,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.8" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" +checksum = "49f3fe0889e69e2ae9e41f4d6c4c0181701d00e4697b356fb1f74173a5e0ee27" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.10.0", ] [[package]] name = "regex" -version = "1.11.1" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ "aho-corasick", "memchr", @@ -769,9 +839,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" dependencies = [ "aho-corasick", "memchr", @@ -780,15 +850,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.5" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" [[package]] name = "rpds" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0e15515d3ce3313324d842629ea4905c25a13f81953eadb88f85516f59290a4" +checksum = "9e75f485e819d4d3015e6c0d55d02a4fd3db47c1993d9e603e0361fba2bffb34" dependencies = [ "archery", "serde", @@ -802,29 +872,23 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc_tools_util" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3316159ab19e19d1065ecc49278e87f767a9dae9fae80348d2b4d4fa4ae02d4d" +checksum = "a3b75158011a63889ba12084cf1224baad7bcad50f6ee7c842f772b74aa148ed" [[package]] name = "rustix" -version = "0.38.44" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys", - "windows-sys", + "windows-sys 0.61.2", ] -[[package]] -name = "ryu" -version = "1.0.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" - [[package]] name = "same-file" version = "1.0.6" @@ -842,43 +906,55 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "semver" -version = "1.0.25" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" dependencies = [ "serde", + "serde_core", ] [[package]] name = "serde" -version = "1.0.217" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.217" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.111", ] [[package]] name = "serde_json" -version = "1.0.138" +version = "1.0.148" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" +checksum = "3084b546a1dd6289475996f182a22aba973866ea8e8b02c51d9f46b1336a22da" dependencies = [ "itoa", "memchr", - "ryu", "serde", + "serde_core", + "zmij", ] [[package]] @@ -923,9 +999,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.2" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "strsim" @@ -952,9 +1028,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.98" +version = "2.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" +checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" dependencies = [ "proc-macro2", "quote", @@ -977,9 +1053,9 @@ dependencies = [ [[package]] name = "tar" -version = "0.4.43" +version = "0.4.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" +checksum = "1d863878d212c87a19c1a610eb53bb01fe12951c0501cf5a0d65f724914a667a" dependencies = [ "filetime", "libc", @@ -988,36 +1064,35 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.16.0" +version = "3.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91" +checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" dependencies = [ - "cfg-if", "fastrand", "getrandom", "once_cell", "rustix", - "windows-sys", + "windows-sys 0.61.2", ] [[package]] name = "thiserror" -version = "2.0.11" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.11" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.111", ] [[package]] @@ -1037,15 +1112,15 @@ dependencies = [ [[package]] name = "triomphe" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef8f7726da4807b58ea5c96fdc122f80702030edc33b35aff9190a51148ccc85" +checksum = "dd69c5aa8f924c7519d6372789a74eac5b94fb0f8fcf0d4a97eb0bfc3e785f39" [[package]] name = "unicode-ident" -version = "1.0.16" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" [[package]] name = "untrustworthy_inputs" @@ -1084,12 +1159,12 @@ dependencies = [ ] [[package]] -name = "wasi" -version = "0.13.3+wasi-0.2.2" +name = "wasip2" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ - "wit-bindgen-rt", + "wit-bindgen", ] [[package]] @@ -1110,11 +1185,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys", + "windows-sys 0.61.2", ] [[package]] @@ -1123,21 +1198,37 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + [[package]] name = "windows-sys" -version = "0.59.0" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ "windows-targets", ] +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-targets" -version = "0.52.6" +version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ + "windows-link", "windows_aarch64_gnullvm", "windows_aarch64_msvc", "windows_i686_gnu", @@ -1150,69 +1241,65 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.6" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" [[package]] name = "windows_aarch64_msvc" -version = "0.52.6" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" [[package]] name = "windows_i686_gnu" -version = "0.52.6" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" [[package]] name = "windows_i686_gnullvm" -version = "0.52.6" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" [[package]] name = "windows_i686_msvc" -version = "0.52.6" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" [[package]] name = "windows_x86_64_gnu" -version = "0.52.6" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.6" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" [[package]] name = "windows_x86_64_msvc" -version = "0.52.6" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] -name = "wit-bindgen-rt" -version = "0.33.0" +name = "wit-bindgen" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" -dependencies = [ - "bitflags 2.8.0", -] +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "xattr" -version = "1.4.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e105d177a3871454f754b33bb0ee637ecaaac997446375fd3e5d43a2ed00c909" +checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" dependencies = [ "libc", - "linux-raw-sys", "rustix", ] @@ -1229,41 +1316,26 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.35" +version = "0.8.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3" dependencies = [ - "byteorder", - "zerocopy-derive 0.7.35", -] - -[[package]] -name = "zerocopy" -version = "0.8.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa91407dacce3a68c56de03abe2760159582b846c6a4acd2f456618087f12713" -dependencies = [ - "zerocopy-derive 0.8.17", + "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.35" +version = "0.8.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.111", ] [[package]] -name = "zerocopy-derive" -version = "0.8.17" +name = "zmij" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06718a168365cad3d5ff0bb133aad346959a2074bd4a85c121255a11304a8626" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] +checksum = "e9747e91771f56fd7893e1164abd78febd14a670ceec257caad15e051de35f06" From 15341901e2bdb598603e008001660a21fed11611 Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Tue, 30 Dec 2025 09:19:38 +0300 Subject: [PATCH 26/29] clippy --- checker/src/abstract_value.rs | 25 +++-- checker/src/block_visitor.rs | 100 ++++++++------------ checker/src/body_visitor.rs | 48 ++++------ checker/src/call_visitor.rs | 26 +++-- checker/src/callbacks.rs | 2 +- checker/src/constant_domain.rs | 6 +- checker/src/crate_visitor.rs | 26 ++--- checker/src/environment.rs | 2 +- checker/src/fixed_point_visitor.rs | 7 +- checker/src/main.rs | 9 +- checker/src/summaries.rs | 11 +-- checker/src/type_visitor.rs | 37 ++++---- checker/src/utils.rs | 4 +- checker/src/z3_solver.rs | 62 +++++------- checker/tests/integration_tests.rs | 2 +- standard_contracts/src/foreign_contracts.rs | 2 +- 16 files changed, 149 insertions(+), 220 deletions(-) diff --git a/checker/src/abstract_value.rs b/checker/src/abstract_value.rs index 767459e3..c73488b3 100644 --- a/checker/src/abstract_value.rs +++ b/checker/src/abstract_value.rs @@ -197,11 +197,11 @@ impl AbstractValue { // The overall expression is going to overflow, so pre-compute the simpler domains from // the larger expression and then replace its expression with TOP. if left.expression_size < right.expression_size { - debug!("binary expression right operand abstracted: {:?}", right); + debug!("binary expression right operand abstracted: {right:?}"); right = AbstractValue::make_from(right.expression.clone(), u64::MAX); expression_size = left.expression_size + 1; } else { - debug!("binary expression left operand abstracted: {:?}", left); + debug!("binary expression left operand abstracted: {left:?}"); left = AbstractValue::make_from(left.expression.clone(), u64::MAX); expression_size = right.expression_size + 1; } @@ -228,11 +228,11 @@ impl AbstractValue { // The overall expression is going to overflow, so pre-compute the simpler domains from // the larger expression and then replace its expression with TOP. if left.expression_size < right.expression_size { - debug!("binary expression right operand abstracted: {:?}", right); + debug!("binary expression right operand abstracted: {right:?}"); right = AbstractValue::make_from(right.expression.clone(), u64::MAX); expression_size = left.expression_size + 1; } else { - debug!("binary expression left operand abstracted: {:?}", left); + debug!("binary expression left operand abstracted: {left:?}"); left = AbstractValue::make_from(left.expression.clone(), u64::MAX); expression_size = right.expression_size + 1; } @@ -668,7 +668,7 @@ impl AbstractValue { pub fn make_from(expression: Expression, expression_size: u64) -> Rc { if expression_size > k_limits::MAX_EXPRESSION_SIZE { if expression_size < u64::MAX { - debug!("expression abstracted: {:?}", expression); + debug!("expression abstracted: {expression:?}"); } // If the expression gets too large, refining it gets expensive and composing it // into other expressions leads to exponential growth. We therefore need to abstract @@ -1737,7 +1737,7 @@ impl AbstractValueTrait for Rc { if let Some(trimmed) = self .trim_prefix_conjuncts(k_limits::MAX_EXPRESSION_SIZE - other.expression_size) { - debug!("and expression prefix trimmed, self: {:?}", self); + debug!("and expression prefix trimmed, self: {self:?}"); trimmed_self = trimmed; } else { return other; @@ -2024,7 +2024,6 @@ impl AbstractValueTrait for Rc { /// Returns an element that is "self.cmp(other)". #[logfn_inputs(TRACE)] - #[must_use] fn compare(&self, other: Self) -> Self { let zero = Rc::new(ConstantDomain::I128(0).into()); let one = Rc::new(ConstantDomain::I128(1).into()); @@ -2456,8 +2455,7 @@ impl AbstractValueTrait for Rc { && !(consequent.is_top() || alternate.is_top()) { debug!( - "conditional with mismatched types {:?}: {:?} {:?}: {:?}", - consequent_type, consequent, alternate_type, alternate + "conditional with mismatched types {consequent_type:?}: {consequent:?} {alternate_type:?}: {alternate:?}" ); return Rc::new(TOP); } @@ -2467,7 +2465,7 @@ impl AbstractValueTrait for Rc { .expression_size .saturating_add(consequent.expression_size); if condition_plus_consequent < k_limits::MAX_EXPRESSION_SIZE - 1 { - debug!("alternate abstracted: {:?}", alternate); + debug!("alternate abstracted: {alternate:?}"); alternate = AbstractValue::make_from(alternate.expression.clone(), u64::MAX); expression_size = condition_plus_consequent + 1; } else { @@ -2475,7 +2473,7 @@ impl AbstractValueTrait for Rc { .expression_size .saturating_add(alternate.expression_size); if condition_plus_alternate < k_limits::MAX_EXPRESSION_SIZE - 1 { - debug!("consequent abstracted: {:?}", consequent); + debug!("consequent abstracted: {consequent:?}"); consequent = AbstractValue::make_from(consequent.expression.clone(), u64::MAX); expression_size = condition_plus_alternate + 1; } else { @@ -2483,7 +2481,7 @@ impl AbstractValueTrait for Rc { .expression_size .saturating_add(alternate.expression_size); if consequent_plus_alternate < k_limits::MAX_EXPRESSION_SIZE - 1 { - debug!("condition abstracted: {:?}", condition); + debug!("condition abstracted: {condition:?}"); condition = AbstractValue::make_from(condition.expression.clone(), u64::MAX); expression_size = consequent_plus_alternate + 1; @@ -6881,8 +6879,7 @@ impl AbstractValueTrait for Rc { return self.clone(); } info!( - "replacing embedded path root of {:?}, old_root {:?}, new_root {:?}", - self, old_root, new_root + "replacing embedded path root of {self:?}, old_root {old_root:?}, new_root {new_root:?}" ); self.clone() } diff --git a/checker/src/block_visitor.rs b/checker/src/block_visitor.rs index 2c97c90b..d47d81db 100644 --- a/checker/src/block_visitor.rs +++ b/checker/src/block_visitor.rs @@ -497,7 +497,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com ty = self .type_visitor() .get_rustc_place_type(place, self.bv.current_span); - debug!("ty {:?}", ty); + debug!("ty {ty:?}"); } self.type_visitor_mut() .set_path_rustc_type(path.clone(), ty); @@ -607,9 +607,9 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com // a million local variables. self.bv.fresh_variable_offset += 1_000_000; - trace!("source location {:?}", fn_span); + trace!("source location {fn_span:?}"); trace!("call stack {:?}", self.bv.active_calls_map); - trace!("visit_call {:?} {:?}", func, args); + trace!("visit_call {func:?} {args:?}"); trace!( "self.generic_argument_map {:?}", self.type_visitor().generic_argument_map @@ -1845,10 +1845,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com .type_visitor() .get_path_rustc_type(&rpath, self.bv.current_span); if utils::is_concrete(source_type.kind()) { - debug!( - "changing {:?} from {:?} to {:?}", - target_path, target_type, source_type - ); + debug!("changing {target_path:?} from {target_type:?} to {source_type:?}"); self.type_visitor_mut() .set_path_rustc_type(target_path.clone(), source_type); } @@ -1874,10 +1871,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com .type_visitor() .get_path_rustc_type(&rpath, self.bv.current_span); if utils::is_concrete(source_type.kind()) { - debug!( - "changing {:?} from {:?} to {:?}", - target_path, target_type, source_type - ); + debug!("changing {target_path:?} from {target_type:?} to {source_type:?}"); self.type_visitor_mut() .set_path_rustc_type(target_path.clone(), source_type); } @@ -2144,7 +2138,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com .type_visitor() .get_path_rustc_type(&source_path, self.bv.current_span); if utils::is_concrete(source_type.kind()) { - debug!("changing {:?} from {:?} to {:?}", path, ty, source_type); + debug!("changing {path:?} from {ty:?} to {source_type:?}"); self.type_visitor_mut() .set_path_rustc_type(path.clone(), source_type); } @@ -2386,7 +2380,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com { return *alignment >= desired_alignment; } - debug!("{:?}", alignment); + debug!("{alignment:?}"); } } false @@ -2401,7 +2395,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com .bv .type_visitor() .get_path_rustc_type(path, self.bv.current_span); - debug!("{:?}", ty); + debug!("{ty:?}"); let (_, type_alignment) = self.bv.type_visitor().get_type_size_and_alignment(ty); type_alignment >= desired_alignment @@ -2787,10 +2781,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com if let Some(operand) = operands.get::(i.into()) { self.visit_use(field_path, operand); } else { - debug!( - "variant has more fields than was serialized {:?}", - variant_def - ); + debug!("variant has more fields than was serialized {variant_def:?}"); } } } @@ -2959,8 +2950,8 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com None => { if !args.is_empty() { let typing_env = rustc_middle::ty::TypingEnv::fully_monomorphized(); - trace!("devirtualize resolving def_id {:?}: {:?}", def_id, def_ty); - trace!("args {:?}", args); + trace!("devirtualize resolving def_id {def_id:?}: {def_ty:?}"); + trace!("args {args:?}"); if let Ok(Some(instance)) = rustc_middle::ty::Instance::try_resolve( self.bv.tcx, typing_env, @@ -2969,8 +2960,8 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com ) { def_id = instance.def.def_id(); args = instance.args; - trace!("resolved it to {:?}", def_id); - trace!("resolved args {:?}", args); + trace!("resolved it to {def_id:?}"); + trace!("resolved args {args:?}"); self.bv.cv.generic_args_cache.insert(def_id, args); } } @@ -3071,7 +3062,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com } } _ => { - debug!("kind {:?}", kind); + debug!("kind {kind:?}"); Rc::new(ConstantDomain::Unimplemented.into()) } } @@ -3105,7 +3096,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com if let Some(val_tree) = val_tree_iter.next() { self.deserialize_val_tree(val_tree, field_path, field_ty); } else { - debug!("variant has more fields than was serialized {:?}", variant); + debug!("variant has more fields than was serialized {variant:?}"); } } } @@ -3139,7 +3130,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com self.deserialize_fields(args, val_tree_iter, target_path, variant); } TyKind::Adt(def, _) if def.is_union() => { - debug!("Did not expect to a serialized union value {:?}", def); + debug!("Did not expect to a serialized union value {def:?}"); } TyKind::Adt(def, args) => { let val_tree_iter = val_trees.iter(); @@ -3153,7 +3144,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com if let Some(val_tree) = val_tree_iter.next() { self.deserialize_val_tree(val_tree, field_path, field_ty); } else { - debug!("tuple has more fields than was serialized {:?}", ty); + debug!("tuple has more fields than was serialized {ty:?}"); } } } @@ -3171,12 +3162,12 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com if let Some(val_tree) = val_tree_iter.next() { self.deserialize_val_tree(val_tree, elem_path, *elem_type); } else { - debug!("array has more elements than was serialized {:?}", ty); + debug!("array has more elements than was serialized {ty:?}"); } } } _ => { - debug!("did not expect a value tree branch for this type {:?}", ty); + debug!("did not expect a value tree branch for this type {ty:?}"); } }, } @@ -3284,8 +3275,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com debug!("span: {:?}", self.bv.current_span); debug!("type kind {:?}", lty.kind()); debug!( - "constant value did not serialize correctly {:?}", - val + "constant value did not serialize correctly {val:?}" ); } AbstractValue::make_reference(heap_path) @@ -3313,7 +3303,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com if !bytes_left_to_deserialize.is_empty() { debug!("span: {:?}", self.bv.current_span); debug!("type kind {:?}", lty.kind()); - debug!("constant value did not serialize correctly {:?}", val); + debug!("constant value did not serialize correctly {val:?}"); } heap_val } @@ -3459,7 +3449,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com if !bytes_left_to_deserialize.is_empty() { debug!("span: {:?}", self.bv.current_span); debug!("type kind {:?}", lty.kind()); - debug!("constant value did not serialize correctly {:?}", val); + debug!("constant value did not serialize correctly {val:?}"); } heap_val } @@ -3480,11 +3470,11 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com .set_path_rustc_type(target_path.clone(), ty); match ty.kind() { TyKind::Adt(def, args) if def.is_enum() => { - trace!("deserializing {:?} {:?}", def, args); + trace!("deserializing {def:?} {args:?}"); trace!("def.repr() {:?}", def.repr()); let mut bytes_left_to_deserialize = bytes; if let Ok(enum_ty_layout) = self.type_visitor().layout_of(ty) { - trace!("enum_ty_layout {:?}", enum_ty_layout); + trace!("enum_ty_layout {enum_ty_layout:?}"); let len = enum_ty_layout.size.bytes_usize(); let tag_length; let data = if len == 0 { @@ -3520,10 +3510,10 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com self.bv.update_value_at(discr_path, discr_data); if discr_has_data { let variant = &def.variants()[discr_index]; - trace!("deserializing variant {:?}", variant); + trace!("deserializing variant {variant:?}"); for (i, field) in variant.fields.iter().enumerate() { - trace!("deserializing field({}) {:?}", i, field); - trace!("bytes_left_deserialize {:?}", bytes_left_to_deserialize); + trace!("deserializing field({i}) {field:?}"); + trace!("bytes_left_deserialize {bytes_left_to_deserialize:?}"); let field_path = Path::new_field(target_path.clone(), i); let field_ty = field.ty(self.bv.tcx, args); trace!( @@ -3541,14 +3531,14 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com bytes_left_to_deserialize } TyKind::Adt(def, args) => { - trace!("deserializing {:?} {:?}", def, args); + trace!("deserializing {def:?} {args:?}"); let mut bytes_left_to_deserialize = bytes; for variant in def.variants().iter() { - trace!("deserializing variant {:?}", variant); + trace!("deserializing variant {variant:?}"); bytes_left_to_deserialize = bytes; for (i, field) in variant.fields.iter().enumerate() { - trace!("deserializing field({}) {:?}", i, field); - trace!("bytes_left_deserialize {:?}", bytes_left_to_deserialize); + trace!("deserializing field({i}) {field:?}"); + trace!("bytes_left_deserialize {bytes_left_to_deserialize:?}"); let field_path = Path::new_field(target_path.clone(), i); let field_ty = field.ty(self.bv.tcx, args); trace!( @@ -3827,12 +3817,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com // Get the structure of the discriminant tag let (discr_signed, discr_bits, discr_index, discr_has_data) = self.get_discriminator_info(data, &ty_and_layout); - trace!( - "discr tag {:?} index {:?} dataful {:?}", - discr_bits, - discr_index, - discr_has_data - ); + trace!("discr tag {discr_bits:?} index {discr_index:?} dataful {discr_has_data:?}"); let discr_path = Path::new_discriminant(target_path.clone()); let discr_data = if discr_signed { self.get_i128_const_val(discr_bits as i128) @@ -3849,7 +3834,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com variant_def.ident(self.bv.tcx) }; let name_str = name.as_str(); - trace!("discr name {:?}", name_str); + trace!("discr name {name_str:?}"); // Obtains the path to store the data. For example, for Option, // the path should be `(x as Some).0`. @@ -3890,9 +3875,9 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com trace!("enum_ty_layout.ty {:?}", enum_ty_layout.ty); let discr_ty = enum_ty_layout.ty.discriminant_ty(self.bv.tcx); - trace!("discr_ty {:?}", discr_ty); + trace!("discr_ty {discr_ty:?}"); let discr_ty_layout = self.type_visitor().layout_of(discr_ty).unwrap(); - trace!("discr_ty_layout {:?}", discr_ty_layout); + trace!("discr_ty_layout {discr_ty_layout:?}"); match enum_ty_layout.variants { Variants::Empty => { discr_signed = false; @@ -3974,21 +3959,21 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com // For example, `Option<(usize, &T)>` is represented such that // `None` has a null pointer for the second tuple field, and // `Some` is the identity function (with a non-null reference). - trace!("untagged_variant {:?}", untagged_variant); - trace!("niche_start {:?}", niche_start); + trace!("untagged_variant {untagged_variant:?}"); + trace!("niche_start {niche_start:?}"); let variants_start = niche_variants.start().as_u32(); let variants_end = niche_variants.end().as_u32(); let variant = if data >= niche_start && variants_end >= variants_start && (data - niche_start) <= (variants_end - variants_start).into() { - trace!("data {:?}", data); + trace!("data {data:?}"); discr_has_data = false; let variant_index_relative = (data - niche_start) as u32; let variant_index = variants_start + variant_index_relative; VariantIdx::from_u32(variant_index) } else { - trace!("data {:?}", data); + trace!("data {data:?}"); discr_has_data = true; let fields = &variants[untagged_variant].fields; checked_assume!( @@ -4098,10 +4083,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com if !bytes_left_to_deserialize.is_empty() { debug!("span: {:?}", self.bv.current_span); debug!("type kind {:?}", ty.kind()); - debug!( - "constant value did not serialize correctly {:?} {:?}", - data, size - ); + debug!("constant value did not serialize correctly {data:?} {size:?}"); } return heap_val; } @@ -4159,7 +4141,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com ty = self .type_visitor() .get_rustc_place_type(place, self.bv.current_span); - debug!("ty {:?}", ty); + debug!("ty {ty:?}"); } else if ty.is_ptr_sized_integral() { let place_ty = self .type_visitor() diff --git a/checker/src/body_visitor.rs b/checker/src/body_visitor.rs index 848b44e0..8b587d7d 100644 --- a/checker/src/body_visitor.rs +++ b/checker/src/body_visitor.rs @@ -347,7 +347,7 @@ impl<'analysis, 'compilation, 'tcx> BodyVisitor<'analysis, 'compilation, 'tcx> { // unlikely that the end user of the diagnostic will be able to anything about it. if let [span] = &diagnostic_builder.span.primary_spans() { if span.in_derive_expansion() { - info!("derive macro has warning: {:?}", diagnostic_builder); + info!("derive macro has warning: {diagnostic_builder:?}"); diagnostic_builder.cancel(); return; } @@ -1180,7 +1180,7 @@ impl<'analysis, 'compilation, 'tcx> BodyVisitor<'analysis, 'compilation, 'tcx> { .iter() .filter(|(p, _)| (*p) == *source_path || p.is_rooted_by(source_path)) { - trace!("effect {:?} {:?}", path, value); + trace!("effect {path:?} {value:?}"); let dummy_root = Path::new_local(999_999, 0); let refined_dummy_root = Path::new_local(self.fresh_variable_offset + 999_999, 0); let mut tpath = path @@ -1193,7 +1193,7 @@ impl<'analysis, 'compilation, 'tcx> BodyVisitor<'analysis, 'compilation, 'tcx> { self.fresh_variable_offset, ) .replace_root(&refined_dummy_root, target_path.clone()); - trace!("parameter refined tpath {:?}", tpath); + trace!("parameter refined tpath {tpath:?}"); check_for_early_return!(self); match &tpath.value { PathEnum::PhantomData => { @@ -1228,7 +1228,7 @@ impl<'analysis, 'compilation, 'tcx> BodyVisitor<'analysis, 'compilation, 'tcx> { pre_environment, self.fresh_variable_offset, ); - trace!("refined effect {:?} {:?}", tpath, rvalue); + trace!("refined effect {tpath:?} {rvalue:?}"); check_for_early_return!(self); let rtype = rvalue.expression.infer_type(); match &rvalue.expression { @@ -1835,7 +1835,7 @@ impl<'analysis, 'compilation, 'tcx> BodyVisitor<'analysis, 'compilation, 'tcx> { field.ty(tcx, args), &self.type_visitor().generic_argument_map, ); - debug!("field_path: {:?}, field_ty: {:?}", field_path, field_ty); + debug!("field_path: {field_path:?}, field_ty: {field_ty:?}"); if let TyKind::Adt(def, args) = field_ty.kind() { self.add_leaf_fields_for(field_path, def, args, tcx, accumulator) } else if self.type_visitor().is_slice_pointer(field_ty.kind()) { @@ -2181,10 +2181,7 @@ impl<'analysis, 'compilation, 'tcx> BodyVisitor<'analysis, 'compilation, 'tcx> { F: Fn(&mut Self, Rc, Rc, Ty<'tcx>), { trace!( - "try_expand_source_pattern(target_path {:?}, source_path {:?}, root_rustc_ty {:?},)", - target_path, - source_path, - root_rustc_ty + "try_expand_source_pattern(target_path {target_path:?}, source_path {source_path:?}, root_rustc_ty {root_rustc_ty:?},)" ); if let PathEnum::QualifiedPath { ref qualifier, @@ -2269,10 +2266,7 @@ impl<'analysis, 'compilation, 'tcx> BodyVisitor<'analysis, 'compilation, 'tcx> { F: Fn(&mut Self, Rc, Rc, Ty<'tcx>), { trace!( - "expand_slice(target_path {:?}, source_path {:?}, root_rustc_type {:?},)", - target_path, - source_path, - root_rustc_type + "expand_slice(target_path {target_path:?}, source_path {source_path:?}, root_rustc_type {root_rustc_type:?},)" ); let mut elem_ty = self.type_visitor().get_element_type(root_rustc_type); if elem_ty == root_rustc_type { @@ -2298,10 +2292,7 @@ impl<'analysis, 'compilation, 'tcx> BodyVisitor<'analysis, 'compilation, 'tcx> { let indexed_target = Path::new_index(target_path.clone(), target_index_val) .canonicalize(&self.current_environment); trace!( - "indexed_target {:?} indexed_source {:?} elem_ty {:?}", - indexed_target, - indexed_source, - elem_ty + "indexed_target {indexed_target:?} indexed_source {indexed_source:?} elem_ty {elem_ty:?}" ); update(self, indexed_target, indexed_source, elem_ty); } @@ -2323,11 +2314,7 @@ impl<'analysis, 'compilation, 'tcx> BodyVisitor<'analysis, 'compilation, 'tcx> { F: Fn(&mut Self, Rc, Rc, Ty<'tcx>), { debug!( - "conditionally_expand_slice(target_path {:?}, source_path {:?}, count {:?} root_rustc_type {:?},)", - target_path, - source_path, - count, - root_rustc_type + "conditionally_expand_slice(target_path {target_path:?}, source_path {source_path:?}, count {count:?} root_rustc_type {root_rustc_type:?},)" ); let mut elem_ty = self.type_visitor().get_element_type(root_rustc_type); if elem_ty == root_rustc_type { @@ -2400,10 +2387,7 @@ impl<'analysis, 'compilation, 'tcx> BodyVisitor<'analysis, 'compilation, 'tcx> { F: Fn(&mut Self, Rc, Rc, Ty<'tcx>), { trace!( - "try_expand_target_pattern(target_path {:?}, source_path {:?}, root_rustc_type {:?},)", - target_path, - source_path, - root_rustc_type + "try_expand_target_pattern(target_path {target_path:?}, source_path {source_path:?}, root_rustc_type {root_rustc_type:?},)" ); if let PathEnum::QualifiedPath { ref qualifier, @@ -2484,7 +2468,7 @@ impl<'analysis, 'compilation, 'tcx> BodyVisitor<'analysis, 'compilation, 'tcx> { ) where F: Fn(&mut Self, Rc, Rc), { - trace!("non_patterned_copy_or_move_elements(target_path {:?}, source_path {:?}, root_rustc_type {:?})", target_path, source_path, root_rustc_type); + trace!("non_patterned_copy_or_move_elements(target_path {target_path:?}, source_path {source_path:?}, root_rustc_type {root_rustc_type:?})"); let value = self.lookup_path_and_refine_result(source_path.clone(), root_rustc_type); if let Expression::Variable { path, .. } = &value.expression { if path.eq(&source_path) { @@ -2557,11 +2541,11 @@ impl<'analysis, 'compilation, 'tcx> BodyVisitor<'analysis, 'compilation, 'tcx> { .replace_root(&source_path, target_path.clone()) .canonicalize(&env); if move_elements && !path.contains_deref() { - trace!("moving child {:?} to {:?}", value, qualified_path); + trace!("moving child {value:?} to {qualified_path:?}"); self.current_environment.value_map = self.current_environment.value_map.remove(path); } else { - trace!("copying child {:?} to {:?}", value, qualified_path); + trace!("copying child {value:?} to {qualified_path:?}"); }; update(self, qualified_path, value.clone()); no_children = false; @@ -2586,11 +2570,11 @@ impl<'analysis, 'compilation, 'tcx> BodyVisitor<'analysis, 'compilation, 'tcx> { if target_type != ExpressionType::NonPrimitive || no_children { // Just copy/move (rpath, value) itself. if move_elements { - trace!("moving {:?} to {:?}", value, target_path); + trace!("moving {value:?} to {target_path:?}"); self.current_environment.value_map = self.current_environment.value_map.remove(&source_path); } else { - trace!("copying {:?} to {:?}", value, target_path); + trace!("copying {value:?} to {target_path:?}"); } update(self, target_path, value); } @@ -2965,7 +2949,7 @@ impl<'analysis, 'compilation, 'tcx> BodyVisitor<'analysis, 'compilation, 'tcx> { ) where F: Fn(Rc) -> Rc, { - trace!("propagate_tag_to_tag_fields(root_path: {:?})", root_path); + trace!("propagate_tag_to_tag_fields(root_path: {root_path:?})"); let old_value_map = self.current_environment.value_map.clone(); for (path, val) in old_value_map diff --git a/checker/src/call_visitor.rs b/checker/src/call_visitor.rs index 1f3df9d5..7c444fee 100644 --- a/checker/src/call_visitor.rs +++ b/checker/src/call_visitor.rs @@ -204,7 +204,7 @@ impl<'call, 'block, 'analysis, 'compilation, 'tcx> tcx.type_of(self.callee_def_id).skip_binder() ); trace!("devirtualize resolving func_ref {:?}", self.callee_func_ref,); - trace!("gen_args {:?}", gen_args); + trace!("gen_args {gen_args:?}"); if let Some(arg0_ty) = gen_args.types().next() { if matches!(arg0_ty.kind(), TyKind::Dynamic(..)) { // Instance::resolve panics if it can't find a vtable entry for the given def_id @@ -245,9 +245,7 @@ impl<'call, 'block, 'analysis, 'compilation, 'tcx> .type_visitor() .specialize_type(resolved_ty, &resolved_map); trace!( - "devirtualize resolved def_id {:?}: {:?}", - resolved_def_id, - specialized_resolved_ty + "devirtualize resolved def_id {resolved_def_id:?}: {specialized_resolved_ty:?}" ); let func_const = self .block_visitor @@ -1395,7 +1393,7 @@ impl<'call, 'block, 'analysis, 'compilation, 'tcx> .already_reported_errors_for_call_to .insert(callee.clone()) { - debug!("unknown callee {:?}", callee); + debug!("unknown callee {callee:?}"); self.block_visitor.report_missing_summary(); } } @@ -1435,7 +1433,7 @@ impl<'call, 'block, 'analysis, 'compilation, 'tcx> if let Some(tag) = self.extract_tag_kind_and_propagation_set() { let (source_path, source_rustc_type) = self.deref_tag_source(); - trace!("MiraiAddTag: tagging {:?} with {:?}", source_path, tag); + trace!("MiraiAddTag: tagging {source_path:?} with {tag:?}"); // Check if the tagged value has a pointer type (e.g., a reference). // Emit an warning message if so. @@ -1588,7 +1586,7 @@ impl<'call, 'block, 'analysis, 'compilation, 'tcx> if tag.is_propagated_by(TagPropagation::SubComponent) { let mut path_prefix = &tag_field_path; while let PathEnum::QualifiedPath { qualifier, .. } = &path_prefix.value { - debug!("qualifier {:?}", qualifier); + debug!("qualifier {qualifier:?}"); path_prefix = qualifier; let path_prefix_rustc_type = self @@ -2605,9 +2603,9 @@ impl<'call, 'block, 'analysis, 'compilation, 'tcx> "unhandled call to write_bytes at {:?}", self.block_visitor.bv.current_span ); - info!("elem_type {:?}", elem_type); + info!("elem_type {elem_type:?}"); info!("dest {:?}", self.actual_args[0]); - info!("dest_type {:?}", dest_type); + info!("dest_type {dest_type:?}"); info!("val {:?}", self.actual_args[1]); info!("count {:?}", self.actual_args[2]); } @@ -2699,7 +2697,7 @@ impl<'call, 'block, 'analysis, 'compilation, 'tcx> #[logfn_inputs(TRACE)] pub fn transfer_and_refine_into_current_environment(&mut self, function_summary: &Summary) { debug!("def_id {:?}", self.callee_def_id); - debug!("summary {:?}", function_summary); + debug!("summary {function_summary:?}"); debug!("pre env {:?}", self.block_visitor.bv.current_environment); debug!( "target {:?} arguments {:?}", @@ -2793,7 +2791,7 @@ impl<'call, 'block, 'analysis, 'compilation, 'tcx> if refined_condition.is_bottom() { // The precondition has no value, assume it is unreachable after all. - debug!("precondition refines to BOTTOM {:?}", precondition); + debug!("precondition refines to BOTTOM {precondition:?}"); continue; } @@ -3118,9 +3116,9 @@ impl<'call, 'block, 'analysis, 'compilation, 'tcx> &self.block_visitor.bv.current_environment, self.block_visitor.bv.fresh_variable_offset, ); - trace!("refined post condition {:?}", refined_post_condition); + trace!("refined post condition {refined_post_condition:?}"); exit_condition = exit_condition.and(refined_post_condition); - trace!("post exit conditions {:?}", exit_condition); + trace!("post exit conditions {exit_condition:?}"); } } @@ -3206,7 +3204,7 @@ impl<'call, 'block, 'analysis, 'compilation, 'tcx> // The tag type should be a generic ADT whose first parameter is a constant. let tag_adt_def; let tag_substs_ref = match tag_rustc_type.kind() { - TyKind::Adt(adt_def, substs_ref) if substs_ref.len() > 0 => { + TyKind::Adt(adt_def, substs_ref) if !substs_ref.is_empty() => { tag_adt_def = adt_def; substs_ref } diff --git a/checker/src/callbacks.rs b/checker/src/callbacks.rs index 3f092884..a58c95cd 100644 --- a/checker/src/callbacks.rs +++ b/checker/src/callbacks.rs @@ -144,7 +144,7 @@ impl MiraiCallbacks { output_dir } else { let temp_dir = TempDir::new().expect("failed to create a temp dir"); - String::from(temp_dir.into_path().to_str().expect("valid string")) + String::from(temp_dir.keep().to_str().expect("valid string")) }; info!( "storing summaries for {} at {}/.summary_store.sled", diff --git a/checker/src/constant_domain.rs b/checker/src/constant_domain.rs index 1197c990..6aa70dfb 100644 --- a/checker/src/constant_domain.rs +++ b/checker/src/constant_domain.rs @@ -762,7 +762,7 @@ impl ConstantDomain { _ => assume_unreachable!("invalid bit length for intrinsic {:?}", name), }, _ => { - debug!("invalid argument {:?} for intrinsic {:?}", self, name); + debug!("invalid argument {self:?} for intrinsic {name:?}"); ConstantDomain::Bottom } } @@ -825,7 +825,7 @@ impl ConstantDomain { _ => assume_unreachable!("invalid bit length for intrinsic {:?}", name), }, _ => { - debug!("invalid argument {:?} for intrinsic {:?}", self, name); + debug!("invalid argument {self:?} for intrinsic {name:?}"); ConstantDomain::Bottom } } @@ -1417,7 +1417,7 @@ impl ConstantDomain { if let ConstantDomain::U128(val) = self_as_u128 { match target_type { ExpressionType::Char => unsafe { - ConstantDomain::Char(std::mem::transmute::(val as u32)) + ConstantDomain::Char(char::from_u32_unchecked(val as u32)) }, ExpressionType::U8 => ConstantDomain::U128((val as u8) as u128), ExpressionType::U16 => ConstantDomain::U128((val as u16) as u128), diff --git a/checker/src/crate_visitor.rs b/checker/src/crate_visitor.rs index df91bcb3..526b956b 100644 --- a/checker/src/crate_visitor.rs +++ b/checker/src/crate_visitor.rs @@ -88,39 +88,33 @@ impl<'compilation> CrateVisitor<'compilation, '_> { if let Some(selections) = &selected_functions { if !self.included_in(selections.as_ref(), name.as_ref(), def_id) { if self.options.single_func.is_none() { - debug!( - "skipping function {} as it is not selected for analysis", - name - ); + debug!("skipping function {name} as it is not selected for analysis",); } continue; } - info!("analyzing selected function {}", name); + info!("analyzing selected function {name}"); } else if !building_standard_summaries { if !utils::is_public(def_id, self.tcx) && def_id != entry_fn_def_id { - debug!("skipping function {} as it is not public", name); + debug!("skipping function {name} as it is not public"); continue; } else if self .tcx .generics_of(def_id) .requires_monomorphization(self.tcx) { - debug!("skipping function {} as it is generic", name); + debug!("skipping function {name} as it is generic"); continue; } else if self.tcx.is_const_fn(def_id) { - debug!("skipping function {} as it is a constant function", name); + debug!("skipping function {name} as it is a constant function"); continue; } else if utils::is_higher_order_function(def_id, self.tcx) { - debug!( - "skipping function {} as it is a higher order function", - name - ); + debug!("skipping function {name} as it is a higher order function"); continue; } else { - info!("analyzing function {}", name); + info!("analyzing function {name}"); } } else { - info!("analyzing function {}", name); + info!("analyzing function {name}"); } self.call_graph.add_croot(def_id); self.analyze_body(def_id); @@ -145,7 +139,7 @@ impl<'compilation> CrateVisitor<'compilation, '_> { if fns.is_empty() { info!("Could not extract any tests from main entry point"); } else { - info!("analyzing functions: {:?}", fns); + info!("analyzing functions: {fns:?}"); } Some(fns) } else { @@ -252,7 +246,7 @@ impl<'compilation> CrateVisitor<'compilation, '_> { db.cancel(); } } - print!("{}, analyzed, {}", self.file_name, num_diags); + print!("{}, analyzed, {num_diags}", self.file_name); } else if self.test_run { let mut expected_errors = expected_errors::ExpectedErrors::new(self.file_name); let mut diags = vec![]; diff --git a/checker/src/environment.rs b/checker/src/environment.rs index 194e90a0..881ca6b0 100644 --- a/checker/src/environment.rs +++ b/checker/src/environment.rs @@ -622,7 +622,7 @@ impl Environment { for (path, val1) in value_map1.iter().filter(|(_, v)| !v.is_bottom()) { if let Some(val2) = value_map2.get(path) { if !(val1.subset(val2)) { - trace!("self at {:?} is {:?} other is {:?}", path, val1, val2); + trace!("self at {path:?} is {val1:?} other is {val2:?}"); return false; } } diff --git a/checker/src/fixed_point_visitor.rs b/checker/src/fixed_point_visitor.rs index afdc5f9c..67dd23cd 100644 --- a/checker/src/fixed_point_visitor.rs +++ b/checker/src/fixed_point_visitor.rs @@ -268,10 +268,7 @@ impl<'fixed, 'analysis, 'compilation, 'tcx> if let Some(pred_exit_condition) = pred_state.exit_conditions.get(&bb) { if pred_exit_condition.as_bool_if_known().unwrap_or(true) { trace!( - "pred {:?} exits on condition {:?} with {:?}", - pred_bb, - pred_exit_condition, - pred_state + "pred {pred_bb:?} exits on condition {pred_exit_condition:?} with {pred_state:?}" ); Some((pred_state.clone(), pred_exit_condition.clone())) } else { @@ -319,7 +316,7 @@ impl<'fixed, 'analysis, 'compilation, 'tcx> .map(|(_, c)| c.clone()) .reduce(|c1, c2| c1.or(c2)) .unwrap(); - trace!("entry_condition {:?}", entry_condition); + trace!("entry_condition {entry_condition:?}"); let mut state = predecessor_states_and_conditions .into_iter() .reduce(|(state1, cond1), (state2, cond2)| { diff --git a/checker/src/main.rs b/checker/src/main.rs index 19af8571..456c669c 100644 --- a/checker/src/main.rs +++ b/checker/src/main.rs @@ -52,7 +52,7 @@ fn main() { &early_error_handler, false, ); - info!("MIRAI options from environment: {:?}", options); + info!("MIRAI options from environment: {options:?}"); // Let arguments supplied on the command line override the environment variable. let mut args = env::args_os() @@ -73,7 +73,7 @@ fn main() { } let mut rustc_command_line_arguments = options.parse(&args[1..], &early_error_handler, false); - info!("MIRAI options modified by command line: {:?}", options); + info!("MIRAI options modified by command line: {options:?}"); rustc_driver::install_ice_hook(rustc_driver::DEFAULT_BUG_REPORT_URL, |_| ()); let result = rustc_driver::catch_fatal_errors(|| { @@ -130,10 +130,7 @@ fn main() { } let mut callbacks = callbacks::MiraiCallbacks::new(options); - debug!( - "rustc_command_line_arguments {:?}", - rustc_command_line_arguments - ); + debug!("rustc_command_line_arguments {rustc_command_line_arguments:?}"); rustc_driver::run_compiler(&rustc_command_line_arguments, &mut callbacks) }); let exit_code = match result { diff --git a/checker/src/summaries.rs b/checker/src/summaries.rs index cbb2fcae..73f1e3de 100644 --- a/checker/src/summaries.rs +++ b/checker/src/summaries.rs @@ -226,12 +226,7 @@ pub fn summarize( return_type_index: usize, tcx: TyCtxt<'_>, ) -> Summary { - trace!( - "summarize env {:?} pre {:?} post {:?}", - exit_environment, - preconditions, - post_condition, - ); + trace!("summarize env {exit_environment:?} pre {preconditions:?} post {post_condition:?}"); let mut preconditions: Vec = add_provenance(preconditions, tcx); let mut side_effects = if let Some(exit_environment) = exit_environment { extract_side_effects(exit_environment, argument_count) @@ -448,12 +443,12 @@ impl<'tcx> SummaryCache<'tcx> { if result.is_ok() { break; } - debug!("opening db failed {:?}", result); + debug!("opening db failed {result:?}"); let num_millis = rng.random_range(100..200); thread::sleep(Duration::from_millis(num_millis)); } let db = result.unwrap_or_else(|err| { - debug!("{} ", err); + debug!("{err} "); assume_unreachable!(); }); SummaryCache { diff --git a/checker/src/type_visitor.rs b/checker/src/type_visitor.rs index 9ffbe639..601f70c2 100644 --- a/checker/src/type_visitor.rs +++ b/checker/src/type_visitor.rs @@ -475,7 +475,7 @@ impl<'tcx> TypeVisitor<'tcx> { let map = self.get_generic_arguments_map(*def_id, args, &[]); t = self.specialize_type(self.tcx.type_of(*def_id).skip_binder(), &map); trace!("opaque type_of {:?}", t.kind()); - trace!("opaque type_of {:?}", t); + trace!("opaque type_of {t:?}"); } match t.kind() { TyKind::Adt(def, args) => { @@ -501,7 +501,7 @@ impl<'tcx> TypeVisitor<'tcx> { let closure_substs = args.as_closure(); return *closure_substs.upvar_tys().get(*ordinal).unwrap_or_else( || { - info!("closure field not found {:?} {:?}", def_id, ordinal); + info!("closure field not found {def_id:?} {ordinal:?}"); &self.tcx.types.never }, ); @@ -512,7 +512,7 @@ impl<'tcx> TypeVisitor<'tcx> { if let Some(field_tys) = tuple_types.nth(*ordinal) { return Ty::new_tup_from_iter(self.tcx, field_tys); } - info!("generator field not found {:?} {:?}", def_id, ordinal); + info!("generator field not found {def_id:?} {ordinal:?}"); return self.tcx.types.never; } TyKind::Ref(_, t, _) if matches!(t.kind(), TyKind::Closure(..)) => { @@ -528,8 +528,7 @@ impl<'tcx> TypeVisitor<'tcx> { .get(*ordinal) .unwrap_or_else(|| { info!( - "closure field not found {:?} {:?}", - def_id, ordinal + "closure field not found {def_id:?} {ordinal:?}" ); &self.tcx.types.never }); @@ -657,15 +656,15 @@ impl<'tcx> TypeVisitor<'tcx> { } _ => {} } - info!("current span is {:?}", current_span); + info!("current span is {current_span:?}"); info!( "cache key is {:?}", utils::summary_key_str(self.tcx, self.def_id) ); - info!("path is {:?}", path); - info!("t is {:?}", t); - info!("qualifier is {:?}", qualifier); - info!("selector is {:?}", selector); + info!("path is {path:?}"); + info!("t is {t:?}"); + info!("qualifier is {qualifier:?}"); + info!("selector is {selector:?}"); self.tcx.types.never } PathEnum::StaticVariable { def_id, .. } => { @@ -726,11 +725,11 @@ impl<'tcx> TypeVisitor<'tcx> { if ordinal < variant.fields.len() { let field = &variant.fields[FieldIdx::from_usize(ordinal)]; let ft = field.ty(self.tcx, args); - trace!("field {:?} type is {:?}", ordinal, ft); + trace!("field {ordinal:?} type is {ft:?}"); return ft; } } - debug!("adt def does not have a field with ordinal {}", ordinal); + debug!("adt def does not have a field with ordinal {ordinal}"); self.tcx.types.never } @@ -798,7 +797,7 @@ impl<'tcx> TypeVisitor<'tcx> { } map.insert(param_def.name, specialized_gen_arg); } else { - debug!("unmapped generic param def {:?}", param_def); + debug!("unmapped generic param def {param_def:?}"); } self.tcx.mk_param_from_def(param_def) // not used }); @@ -905,8 +904,7 @@ impl<'tcx> TypeVisitor<'tcx> { TyKind::Ref(_, ty, _) => *ty, _ => { info!( - "bad deref projection span: {:?}\nelem: {:?} type: {:?}", - current_span, projection_elem, base_ty + "bad deref projection span: {current_span:?}\nelem: {projection_elem:?} type: {base_ty:?}" ); self.tcx.types.never } @@ -923,8 +921,7 @@ impl<'tcx> TypeVisitor<'tcx> { TyKind::Slice(ty) => *ty, _ => { debug!( - "span: {:?}\nelem: {:?} type: {:?}", - current_span, projection_elem, base_ty + "span: {current_span:?}\nelem: {projection_elem:?} type: {base_ty:?}" ); assume_unreachable!(); } @@ -954,13 +951,11 @@ impl<'tcx> TypeVisitor<'tcx> { return Ty::new_tup_from_iter(self.tcx, field_tys); } debug!( - "illegally down casting to index {} of {:?} at {:?}", + "illegally down casting to index {} of {base_ty:?} at {current_span:?}", ordinal.index(), - base_ty, - current_span ); } else { - info!("unexpected type for downcast {:?}", base_ty); + info!("unexpected type for downcast {base_ty:?}"); } base_ty } diff --git a/checker/src/utils.rs b/checker/src/utils.rs index d10780e9..e5589623 100644 --- a/checker/src/utils.rs +++ b/checker/src/utils.rs @@ -344,7 +344,7 @@ fn append_mangled_type<'tcx>(str: &mut String, ty: Ty<'tcx>, tcx: TyCtxt<'tcx>) } _ => { //todo: add cases as the need arises, meanwhile make the need obvious. - debug!("{:?}", ty); + debug!("{ty:?}"); debug!("{:?}", ty.kind()); write!(str, "default formatted {ty:?}").expect("enough space"); } @@ -401,7 +401,7 @@ pub fn summary_key_str(tcx: TyCtxt<'_>, def_id: DefId) -> Rc { | DefKind::Union | DefKind::Enum | DefKind::Variant - | DefKind::TyAlias { .. } + | DefKind::TyAlias | DefKind::Impl { .. }, ) { name.push('_'); diff --git a/checker/src/z3_solver.rs b/checker/src/z3_solver.rs index 5b7f85c0..3fa94e71 100644 --- a/checker/src/z3_solver.rs +++ b/checker/src/z3_solver.rs @@ -360,7 +360,7 @@ impl Z3Solver { } Expression::Join { left, right, .. } => self.general_join(left, right), _ => unsafe { - debug!("uninterpreted expression: {:?}", expression); + debug!("uninterpreted expression: {expression:?}"); let sym = self.get_symbol_for(expression); let sort = self.get_sort_for(expression.infer_type()); z3_sys::Z3_mk_const(self.z3_context, sym, sort) @@ -382,7 +382,7 @@ impl Z3Solver { let left_ast = self.get_as_bool_z3_ast(&left.expression); let right_ast = self.get_as_bool_z3_ast(&right.expression); unsafe { - let tmp = vec![left_ast, right_ast]; + let tmp = [left_ast, right_ast]; operation(self.z3_context, 2, tmp.as_ptr()) } } @@ -480,7 +480,7 @@ impl Z3Solver { let (lf, left_ast) = self.get_as_numeric_z3_ast(&left.expression); let (rf, right_ast) = self.get_as_numeric_z3_ast(&right.expression); if lf != rf { - warn!("can't encode {:?} relational op {:?}", left, right); + warn!("can't encode {left:?} relational op {right:?}"); return self .general_variable(&Path::get_as_path(left.clone()), ExpressionType::Bool); } @@ -524,7 +524,7 @@ impl Z3Solver { let (lf, left_ast) = self.get_as_numeric_z3_ast(&left.expression); let (rf, right_ast) = self.get_as_numeric_z3_ast(&right.expression); if lf != rf { - warn!("can't encode {:?} != {:?}", left, right); + warn!("can't encode {left:?} != {right:?}"); return self .general_variable(&Path::get_as_path(left.clone()), ExpressionType::Bool); } @@ -534,7 +534,7 @@ impl Z3Solver { let r = z3_sys::Z3_mk_fpa_is_nan(self.z3_context, right_ast); let eq = z3_sys::Z3_mk_fpa_eq(self.z3_context, left_ast, right_ast); let ne = z3_sys::Z3_mk_not(self.z3_context, eq); - let tmp = vec![l, r, ne]; + let tmp = [l, r, ne]; z3_sys::Z3_mk_or(self.z3_context, 3, tmp.as_ptr()) } else { z3_sys::Z3_mk_not( @@ -613,10 +613,7 @@ impl Z3Solver { F: FnOnce(&Expression) -> z3_sys::Z3_ast + Copy, { trace!( - "general_switch(discriminator {:?}, cases: {:?}, default {:?})", - discriminator, - cases, - default + "general_switch(discriminator {discriminator:?}, cases: {cases:?}, default {default:?})" ); if discriminator.expression.is_bit_vector() { return self.switch_with_bv_discriminator( @@ -1020,7 +1017,7 @@ impl Z3Solver { unsafe { let min_is_le = z3_sys::Z3_mk_le(self.z3_context, min_ast, operand_ast); let max_is_ge = z3_sys::Z3_mk_ge(self.z3_context, max_ast, operand_ast); - let tmp = vec![min_is_le, max_is_ge]; + let tmp = [min_is_le, max_is_ge]; z3_sys::Z3_mk_and(self.z3_context, 2, tmp.as_ptr()) } } @@ -1176,7 +1173,7 @@ impl Z3Solver { }, Expression::WidenedJoin { path, operand } => self.numeric_widen(path, operand), _ => unsafe { - debug!("uninterpreted expression: {:?}", expression); + debug!("uninterpreted expression: {expression:?}"); let sym = self.get_symbol_for(expression); ( false, @@ -1206,7 +1203,7 @@ impl Z3Solver { let (lf, left_ast) = self.get_as_numeric_z3_ast(&left.expression); let (rf, right_ast) = self.get_as_numeric_z3_ast(&right.expression); if lf != rf { - warn!("can't encode {:?} numeric var arg op {:?}", left, right); + warn!("can't encode {left:?} numeric var arg op {right:?}"); let vt = left.expression.infer_type(); return ( vt.is_floating_point_number(), @@ -1220,7 +1217,7 @@ impl Z3Solver { float_op(self.z3_context, self.nearest_even, left_ast, right_ast), ) } else { - let tmp = vec![left_ast, right_ast]; + let tmp = [left_ast, right_ast]; (false, int_op(self.z3_context, 2, tmp.as_ptr())) } } @@ -1242,17 +1239,17 @@ impl Z3Solver { let (rf, right_ast) = self.get_as_numeric_z3_ast(&right.expression); checked_assume!(!(lf || rf)); unsafe { - let tmp = vec![left_ast, right_ast]; + let tmp = [left_ast, right_ast]; let result = int_op(self.z3_context, 2, tmp.as_ptr()); let min_ast = self.get_constant_as_ast(&result_type.min_value()); let min_is_gt = z3_sys::Z3_mk_gt(self.z3_context, min_ast, result); let max_ast = self.get_constant_as_ast(&result_type.max_value()); let max_is_lt = z3_sys::Z3_mk_lt(self.z3_context, max_ast, result); - let tmp = vec![min_is_gt, max_is_lt]; + let tmp = [min_is_gt, max_is_lt]; let result_overflows = z3_sys::Z3_mk_or(self.z3_context, 2, tmp.as_ptr()); let left_in_range = self.get_range_check(left_ast, min_ast, max_ast); let right_in_range = self.get_range_check(right_ast, min_ast, max_ast); - let tmp = vec![left_in_range, right_in_range, result_overflows]; + let tmp = [left_in_range, right_in_range, result_overflows]; (false, z3_sys::Z3_mk_and(self.z3_context, 3, tmp.as_ptr())) } } @@ -1266,7 +1263,7 @@ impl Z3Solver { let (lf, left_ast) = self.get_as_numeric_z3_ast(&left.expression); let (rf, right_ast) = self.get_as_numeric_z3_ast(&right.expression); if lf != rf { - warn!("can't encode {:?} rem {:?}", left, right); + warn!("can't encode {left:?} rem {right:?}"); let vt = left.expression.infer_type(); return ( vt.is_floating_point_number(), @@ -1290,7 +1287,7 @@ impl Z3Solver { (false, { let cond = z3_sys::Z3_mk_lt(self.z3_context, left_ast, self.zero); let rem = z3_sys::Z3_mk_rem(self.z3_context, left_ast, right_ast); - let tmp = vec![self.zero, rem]; + let tmp = [self.zero, rem]; let neg_rem = z3_sys::Z3_mk_sub(self.z3_context, 2, tmp.as_ptr()); z3_sys::Z3_mk_ite(self.z3_context, cond, neg_rem, rem) }) @@ -1319,7 +1316,7 @@ impl Z3Solver { let (lf, left_ast) = self.get_as_numeric_z3_ast(&left.expression); let (rf, right_ast) = self.get_as_numeric_z3_ast(&right.expression); if lf != rf { - warn!("can't encode {:?} numeric op {:?}", left, right); + warn!("can't encode {left:?} numeric op {right:?}"); let vt = left.expression.infer_type(); return ( vt.is_floating_point_number(), @@ -1348,7 +1345,7 @@ impl Z3Solver { let (lf, left_ast) = self.get_as_numeric_z3_ast(&left.expression); let (rf, right_ast) = self.get_as_numeric_z3_ast(&right.expression); if lf != rf { - warn!("can't encode {:?} join {:?}", left, right); + warn!("can't encode {left:?} join {right:?}"); let vt = left.expression.infer_type(); return ( vt.is_floating_point_number(), @@ -1391,13 +1388,13 @@ impl Z3Solver { if result_type.is_signed_integer() { let (fp, neg) = self.numeric_neg(operand); checked_assume!(!fp); // The Rust type system should prevent this - let tmp = vec![neg, self.one]; + let tmp = [neg, self.one]; (false, z3_sys::Z3_mk_sub(self.z3_context, 2, tmp.as_ptr())) } else { let (fp, ast) = self.get_as_numeric_z3_ast(&operand.expression); checked_assume!(!fp); // The Rust type system should prevent this let max_ast = self.get_constant_as_ast(&result_type.max_value()); - let tmp = vec![max_ast, ast]; + let tmp = [max_ast, ast]; (false, z3_sys::Z3_mk_sub(self.z3_context, 2, tmp.as_ptr())) } } @@ -1441,7 +1438,7 @@ impl Z3Solver { } else { self.get_constant_as_ast(&modulo_constant) }; - let args = vec![expr_ast, modulo_ast]; + let args = [expr_ast, modulo_ast]; let complement = z3_sys::Z3_mk_add(self.z3_context, 2, args.as_ptr()); let is_negative = z3_sys::Z3_mk_lt(self.z3_context, expr_ast, self.zero); @@ -1502,8 +1499,7 @@ impl Z3Solver { // target type is not numeric and not a pointer, but the result of the // cast is expected to be numeric. This probably a mistake. info!( - "non numeric cast to {:?} found in numeric context {:?}", - target_type, expression + "non numeric cast to {target_type:?} found in numeric context {expression:?}" ); } self.get_as_numeric_z3_ast(expression) @@ -1558,10 +1554,7 @@ impl Z3Solver { (false, z3_sys::Z3_mk_int(self.z3_context, 1, self.int_sort)) }, _ => unsafe { - debug!( - "non numeric constant in numeric context: {:?}", - const_domain - ); + debug!("non numeric constant in numeric context: {const_domain:?}"); let sym = self.get_symbol_for(const_domain); ( false, @@ -1632,7 +1625,7 @@ impl Z3Solver { checked_assume!(!(lf || rf)); unsafe { let right_power = z3_sys::Z3_mk_power(self.z3_context, self.two, right_ast); - let tmp = vec![left_ast, right_power]; + let tmp = [left_ast, right_power]; (false, z3_sys::Z3_mk_mul(self.z3_context, 2, tmp.as_ptr())) } } @@ -1767,7 +1760,7 @@ impl Z3Solver { | Expression::InitialParameterValue { path, var_type } | Expression::Variable { path, var_type } => { if *var_type != ExpressionType::Bool { - debug!("path {:?}, type {:?}", path, var_type); + debug!("path {path:?}, type {var_type:?}"); } unsafe { let path_symbol = self.get_symbol_for(path); @@ -1977,7 +1970,7 @@ impl Z3Solver { let does_not_overflow = no_overflow(self.z3_context, left_bv, right_bv, is_signed); let overflows = if is_signed { let does_not_underflow = no_underflow(self.z3_context, left_bv, right_bv); - let tmp = vec![does_not_overflow, does_not_underflow]; + let tmp = [does_not_overflow, does_not_underflow]; let stays_in_range = z3_sys::Z3_mk_and(self.z3_context, 2, tmp.as_ptr()); z3_sys::Z3_mk_not(self.z3_context, stays_in_range) } else { @@ -2139,10 +2132,7 @@ impl Z3Solver { F: FnOnce(&Expression) -> z3_sys::Z3_ast + Copy, { trace!( - "switch_with_bv_discriminator(discriminator {:?}, cases: {:?}, default {:?})", - discriminator, - cases, - default + "switch_with_bv_discriminator(discriminator {discriminator:?}, cases: {cases:?}, default {default:?})" ); let ty = discriminator.expression.infer_type(); let num_bits = u32::from(ty.bit_length()); diff --git a/checker/tests/integration_tests.rs b/checker/tests/integration_tests.rs index 3c9d8408..443990e8 100644 --- a/checker/tests/integration_tests.rs +++ b/checker/tests/integration_tests.rs @@ -139,7 +139,7 @@ fn run_directory(directory_path: PathBuf) -> Vec<(String, String)> { continue; } let temp_dir = TempDir::new().expect("failed to create a temp dir"); - let temp_dir_path_buf = temp_dir.into_path(); + let temp_dir_path_buf = temp_dir.keep(); let output_dir_path_buf = temp_dir_path_buf.join(file_name.into_string().unwrap()); fs::create_dir(output_dir_path_buf.as_path()).expect("failed to create test output dir"); files_and_temp_dirs.push(( diff --git a/standard_contracts/src/foreign_contracts.rs b/standard_contracts/src/foreign_contracts.rs index edd90478..0ba39291 100644 --- a/standard_contracts/src/foreign_contracts.rs +++ b/standard_contracts/src/foreign_contracts.rs @@ -1235,7 +1235,7 @@ pub mod core { pub mod implement { pub mod to_bits { pub fn ct_f64_to_u64(ct: f64) -> u64 { - unsafe { std::mem::transmute::(ct) } + f64::to_bits(ct) } } } From 7b80251af6abe7c3691283ea6cec1341054f2f4f Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Tue, 30 Dec 2025 10:52:55 +0300 Subject: [PATCH 27/29] tests: Update call graphs --- checker/tests/call_graph/fnptr.rs | 2 +- checker/tests/call_graph/fnptr_clean.rs | 2 +- checker/tests/call_graph/fnptr_deduplicate.rs | 2 +- checker/tests/call_graph/fnptr_dom.rs | 2 +- checker/tests/call_graph/fnptr_dom_loop.rs | 2 +- checker/tests/call_graph/fnptr_dom_loop_souffle.rs | 2 +- checker/tests/call_graph/fnptr_fold.rs | 10 +++++----- checker/tests/call_graph/fnptr_loop.rs | 2 +- checker/tests/call_graph/fnptr_slice.rs | 2 +- checker/tests/call_graph/generic.rs | 2 +- checker/tests/call_graph/static_deduplicate.rs | 6 +++--- checker/tests/call_graph/static_fold.rs | 8 ++++---- checker/tests/call_graph/trait.rs | 2 +- 13 files changed, 22 insertions(+), 22 deletions(-) diff --git a/checker/tests/call_graph/fnptr.rs b/checker/tests/call_graph/fnptr.rs index 7e7af2a5..a62e5e2b 100644 --- a/checker/tests/call_graph/fnptr.rs +++ b/checker/tests/call_graph/fnptr.rs @@ -69,7 +69,7 @@ commit; ], "callables": [ { - "name": "/fnptr/fn1(u32,&'^0.Named(DefId(0:7 ~ fnptr[7735]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", + "name": "/fnptr/fn1(u32,&'^0.Named(DefId(0:7 ~ fnptr[985e]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", "file_index": 0, "first_line": 9, "local": true diff --git a/checker/tests/call_graph/fnptr_clean.rs b/checker/tests/call_graph/fnptr_clean.rs index 093bde3a..17993fa6 100644 --- a/checker/tests/call_graph/fnptr_clean.rs +++ b/checker/tests/call_graph/fnptr_clean.rs @@ -74,7 +74,7 @@ commit; ], "callables": [ { - "name": "/fnptr_clean/fn1(u32,&'^0.Named(DefId(0:8 ~ fnptr_clean[4e55]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", + "name": "/fnptr_clean/fn1(u32,&'^0.Named(DefId(0:8 ~ fnptr_clean[2ac7]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", "file_index": 0, "first_line": 14, "local": true diff --git a/checker/tests/call_graph/fnptr_deduplicate.rs b/checker/tests/call_graph/fnptr_deduplicate.rs index 17f00996..9f1c4122 100644 --- a/checker/tests/call_graph/fnptr_deduplicate.rs +++ b/checker/tests/call_graph/fnptr_deduplicate.rs @@ -66,7 +66,7 @@ commit; ], "callables": [ { - "name": "/fnptr_deduplicate/fn1(u32,&'^0.Named(DefId(0:7 ~ fnptr_deduplicate[2a2a]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", + "name": "/fnptr_deduplicate/fn1(u32,&'^0.Named(DefId(0:7 ~ fnptr_deduplicate[5ea9]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", "file_index": 0, "first_line": 10, "local": true diff --git a/checker/tests/call_graph/fnptr_dom.rs b/checker/tests/call_graph/fnptr_dom.rs index 90bc7024..b2ca33af 100644 --- a/checker/tests/call_graph/fnptr_dom.rs +++ b/checker/tests/call_graph/fnptr_dom.rs @@ -71,7 +71,7 @@ commit; ], "callables": [ { - "name": "/fnptr_dom/fn1(u32,&'^0.Named(DefId(0:7 ~ fnptr_dom[2f4a]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] },&'^1.Named(DefId(0:8 ~ fnptr_dom[2f4a]::fn1::'_#1), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", + "name": "/fnptr_dom/fn1(u32,&'^0.Named(DefId(0:7 ~ fnptr_dom[7051]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] },&'^1.Named(DefId(0:8 ~ fnptr_dom[7051]::fn1::'_#1), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", "file_index": 0, "first_line": 9, "local": true diff --git a/checker/tests/call_graph/fnptr_dom_loop.rs b/checker/tests/call_graph/fnptr_dom_loop.rs index 656a663f..7bb54184 100644 --- a/checker/tests/call_graph/fnptr_dom_loop.rs +++ b/checker/tests/call_graph/fnptr_dom_loop.rs @@ -85,7 +85,7 @@ commit; ], "callables": [ { - "name": "/fnptr_dom_loop/fn1(u32,&'^0.Named(DefId(0:8 ~ fnptr_dom_loop[55c2]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] },&'^1.Named(DefId(0:9 ~ fnptr_dom_loop[55c2]::fn1::'_#1), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", + "name": "/fnptr_dom_loop/fn1(u32,&'^0.Named(DefId(0:8 ~ fnptr_dom_loop[d0b3]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] },&'^1.Named(DefId(0:9 ~ fnptr_dom_loop[d0b3]::fn1::'_#1), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", "file_index": 0, "first_line": 9, "local": true diff --git a/checker/tests/call_graph/fnptr_dom_loop_souffle.rs b/checker/tests/call_graph/fnptr_dom_loop_souffle.rs index 678465fd..0cdfa392 100644 --- a/checker/tests/call_graph/fnptr_dom_loop_souffle.rs +++ b/checker/tests/call_graph/fnptr_dom_loop_souffle.rs @@ -82,7 +82,7 @@ digraph { ], "callables": [ { - "name": "/fnptr_dom_loop_souffle/fn1(u32,&'^0.Named(DefId(0:8 ~ fnptr_dom_loop_souffle[cc73]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] },&'^1.Named(DefId(0:9 ~ fnptr_dom_loop_souffle[cc73]::fn1::'_#1), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", + "name": "/fnptr_dom_loop_souffle/fn1(u32,&'^0.Named(DefId(0:8 ~ fnptr_dom_loop_souffle[23d6]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] },&'^1.Named(DefId(0:9 ~ fnptr_dom_loop_souffle[23d6]::fn1::'_#1), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", "file_index": 0, "first_line": 10, "local": true diff --git a/checker/tests/call_graph/fnptr_fold.rs b/checker/tests/call_graph/fnptr_fold.rs index 37e5f8e3..c98efc71 100644 --- a/checker/tests/call_graph/fnptr_fold.rs +++ b/checker/tests/call_graph/fnptr_fold.rs @@ -69,11 +69,11 @@ commit; "files": [ "tests/call_graph/fnptr_fold.rs", "/rust/library/std/src/io/stdio.rs", - "/rust/library/core/src/fmt/mod.rs" + "/rust/library/core/src/fmt/rt.rs" ], "callables": [ { - "name": "/fnptr_fold/fn1(u32,&'^0.Named(DefId(0:7 ~ fnptr_fold[0e9f]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", + "name": "/fnptr_fold/fn1(u32,&'^0.Named(DefId(0:7 ~ fnptr_fold[bb33]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", "file_index": 0, "first_line": 10, "local": true @@ -97,15 +97,15 @@ commit; "local": true }, { - "name": "/std/std::io::_print(std::fmt::Arguments<'^0.Named(DefId(1:14194 ~ std[139b]::io::stdio::_print::'_), \"'_\")>)->()", + "name": "/std/std::io::_print(std::fmt::Arguments<'^0.Named(DefId(1:14320 ~ std[8161]::io::stdio::_print::'_), \"'_\")>)->()", "file_index": 1, "first_line": 1274, "local": false }, { - "name": "/core/std::fmt::Arguments::<'a>::new_const(&'a/#0 [&'static str; N/#1])->std::fmt::Arguments<'a/#0>", + "name": "/core/core::fmt::rt::>::new_const(&'a/#0 [&'static str; N/#1])->std::fmt::Arguments<'a/#0>", "file_index": 2, - "first_line": 630, + "first_line": 234, "local": true } ], diff --git a/checker/tests/call_graph/fnptr_loop.rs b/checker/tests/call_graph/fnptr_loop.rs index d19fc902..d665897a 100644 --- a/checker/tests/call_graph/fnptr_loop.rs +++ b/checker/tests/call_graph/fnptr_loop.rs @@ -82,7 +82,7 @@ commit; "local": true }, { - "name": "/fnptr_loop/fn2(u32,&'^0.Named(DefId(0:7 ~ fnptr_loop[c511]::fn2::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", + "name": "/fnptr_loop/fn2(u32,&'^0.Named(DefId(0:7 ~ fnptr_loop[be7d]::fn2::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", "file_index": 0, "first_line": 12, "local": true diff --git a/checker/tests/call_graph/fnptr_slice.rs b/checker/tests/call_graph/fnptr_slice.rs index 3f69861e..9157e9f4 100644 --- a/checker/tests/call_graph/fnptr_slice.rs +++ b/checker/tests/call_graph/fnptr_slice.rs @@ -62,7 +62,7 @@ commit; ], "callables": [ { - "name": "/fnptr_slice/fn1(u32,&'^0.Named(DefId(0:7 ~ fnptr_slice[cd9e]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", + "name": "/fnptr_slice/fn1(u32,&'^0.Named(DefId(0:7 ~ fnptr_slice[404f]::fn1::'_), \"'_\") Binder { value: fn(u32) -> u32, bound_vars: [] })->u32", "file_index": 0, "first_line": 10, "local": true diff --git a/checker/tests/call_graph/generic.rs b/checker/tests/call_graph/generic.rs index 850a2181..531ea9c0 100644 --- a/checker/tests/call_graph/generic.rs +++ b/checker/tests/call_graph/generic.rs @@ -74,7 +74,7 @@ commit; "local": true }, { - "name": "/generic/Gen::::bar(&'^0.Named(DefId(0:12 ~ generic[1adc]::{impl#0}::bar::'_), \"'_\") Gen,T/#0)->()", + "name": "/generic/Gen::::bar(&'^0.Named(DefId(0:12 ~ generic[eded]::{impl#0}::bar::'_), \"'_\") Gen,T/#0)->()", "file_index": 0, "first_line": 14, "local": true diff --git a/checker/tests/call_graph/static_deduplicate.rs b/checker/tests/call_graph/static_deduplicate.rs index d18f4884..67eb16bd 100644 --- a/checker/tests/call_graph/static_deduplicate.rs +++ b/checker/tests/call_graph/static_deduplicate.rs @@ -66,19 +66,19 @@ commit; ], "callables": [ { - "name": "/static_deduplicate/fn1(u32,&'^0.Named(DefId(0:7 ~ static_deduplicate[f24b]::fn1::'_), \"'_\") str)->(u32, &'^0.Named(DefId(0:7 ~ static_deduplicate[f24b]::fn1::'_), \"'_\") str)", + "name": "/static_deduplicate/fn1(u32,&'^0.Named(DefId(0:7 ~ static_deduplicate[b0b6]::fn1::'_), \"'_\") str)->(u32, &'^0.Named(DefId(0:7 ~ static_deduplicate[b0b6]::fn1::'_), \"'_\") str)", "file_index": 0, "first_line": 10, "local": true }, { - "name": "/static_deduplicate/fn2(u32,&'^0.Named(DefId(0:8 ~ static_deduplicate[f24b]::fn2::'_), \"'_\") str)->(u32, &'^0.Named(DefId(0:8 ~ static_deduplicate[f24b]::fn2::'_), \"'_\") str)", + "name": "/static_deduplicate/fn2(u32,&'^0.Named(DefId(0:8 ~ static_deduplicate[b0b6]::fn2::'_), \"'_\") str)->(u32, &'^0.Named(DefId(0:8 ~ static_deduplicate[b0b6]::fn2::'_), \"'_\") str)", "file_index": 0, "first_line": 13, "local": true }, { - "name": "/static_deduplicate/fn3(u32,&'^0.Named(DefId(0:9 ~ static_deduplicate[f24b]::fn3::'_), \"'_\") str)->(u32, &'^0.Named(DefId(0:9 ~ static_deduplicate[f24b]::fn3::'_), \"'_\") str)", + "name": "/static_deduplicate/fn3(u32,&'^0.Named(DefId(0:9 ~ static_deduplicate[b0b6]::fn3::'_), \"'_\") str)->(u32, &'^0.Named(DefId(0:9 ~ static_deduplicate[b0b6]::fn3::'_), \"'_\") str)", "file_index": 0, "first_line": 16, "local": true diff --git a/checker/tests/call_graph/static_fold.rs b/checker/tests/call_graph/static_fold.rs index 667dff72..d75bc622 100644 --- a/checker/tests/call_graph/static_fold.rs +++ b/checker/tests/call_graph/static_fold.rs @@ -65,7 +65,7 @@ commit; "files": [ "tests/call_graph/static_fold.rs", "/rust/library/std/src/io/stdio.rs", - "/rust/library/core/src/fmt/mod.rs" + "/rust/library/core/src/fmt/rt.rs" ], "callables": [ { @@ -93,15 +93,15 @@ commit; "local": true }, { - "name": "/std/std::io::_print(std::fmt::Arguments<'^0.Named(DefId(1:14194 ~ std[139b]::io::stdio::_print::'_), \"'_\")>)->()", + "name": "/std/std::io::_print(std::fmt::Arguments<'^0.Named(DefId(1:14320 ~ std[8161]::io::stdio::_print::'_), \"'_\")>)->()", "file_index": 1, "first_line": 1274, "local": false }, { - "name": "/core/std::fmt::Arguments::<'a>::new_const(&'a/#0 [&'static str; N/#1])->std::fmt::Arguments<'a/#0>", + "name": "/core/core::fmt::rt::>::new_const(&'a/#0 [&'static str; N/#1])->std::fmt::Arguments<'a/#0>", "file_index": 2, - "first_line": 630, + "first_line": 234, "local": false } ], diff --git a/checker/tests/call_graph/trait.rs b/checker/tests/call_graph/trait.rs index 53d8a25d..665d13bf 100644 --- a/checker/tests/call_graph/trait.rs +++ b/checker/tests/call_graph/trait.rs @@ -74,7 +74,7 @@ commit; "local": true }, { - "name": "/trait/::bar(&'^0.Named(DefId(0:13 ~ trait[88ec]::{impl#0}::bar::'_), \"'_\") Bar)->i32", + "name": "/trait/::bar(&'^0.Named(DefId(0:13 ~ trait[99d0]::{impl#0}::bar::'_), \"'_\") Bar)->i32", "file_index": 0, "first_line": 14, "local": true From 3bad7104e551b40ac2b86cf40fa296b8d75bb6f3 Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Tue, 30 Dec 2025 11:10:10 +0300 Subject: [PATCH 28/29] Rebuild summary store --- binaries/summary_store.tar | Bin 4893184 -> 4917760 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/binaries/summary_store.tar b/binaries/summary_store.tar index 68bae2938a73e64f88413dd9bd1825b31985bf8a..fd74ca6aaff52f7bd54d72b6715562062b8408cf 100644 GIT binary patch delta 11825 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 delta 11011 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 From 2b8b71dcc754c626b61e687b48143f54263e8277 Mon Sep 17 00:00:00 2001 From: davidsemakula Date: Wed, 14 Jan 2026 21:30:03 +0300 Subject: [PATCH 29/29] Handle new `DefPathData` variants in `component_name` --- checker/src/utils.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/checker/src/utils.rs b/checker/src/utils.rs index e5589623..0bd1c72e 100644 --- a/checker/src/utils.rs +++ b/checker/src/utils.rs @@ -432,6 +432,14 @@ fn push_component_name(component_data: DefPathData, target: &mut String) { TypeNs(name) | ValueNs(name) | MacroNs(name) | LifetimeNs(name) => { target.push_str(name.as_str()); } + AnonAssocTy(name) => { + target.push_str("anon_assoc_"); + target.push_str(name.as_str()); + } + OpaqueLifetime(name) => { + target.push_str("opaque_"); + target.push_str(name.as_str()); + } _ => target.push_str(match component_data { CrateRoot => "crate_root", Impl => "implement", @@ -442,6 +450,8 @@ fn push_component_name(component_data: DefPathData, target: &mut String) { Ctor => "ctor", AnonConst => "constant", OpaqueTy => "opaque", + SyntheticCoroutineBody => "coroutine", + NestedStatic => "static", _ => assume_unreachable!(), }), };