Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rollup of 8 pull requests #139085

Merged
merged 74 commits into from
Mar 29, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
6de7fd1
Resolve more FIXMEs
tiif Feb 26, 2025
292256e
Preparing for merge from rustc
Feb 26, 2025
81401ca
Merge from rustc
Feb 26, 2025
530b35b
fmt
Feb 26, 2025
3669123
Merge pull request #4211 from rust-lang/rustup-2025-02-26
oli-obk Feb 26, 2025
88a8309
Merge pull request #4210 from tiif/small-fix-2
oli-obk Feb 26, 2025
410b09f
Update ui test
oli-obk Feb 26, 2025
ef2d539
Merge pull request #4213 from oli-obk/push-oqrnvmlnzsnw
RalfJung Feb 26, 2025
ac2ddc1
before_terminator: add some minor clarifying comments
RalfJung Feb 27, 2025
d775aa2
Merge pull request #4215 from RalfJung/before_terminator
RalfJung Feb 27, 2025
33b78f2
Preparing for merge from rustc
Mar 2, 2025
2cf69da
Merge from rustc
Mar 2, 2025
c40d30e
clippy
RalfJung Mar 2, 2025
b7eeaf1
Merge pull request #4216 from rust-lang/rustup-2025-03-02
RalfJung Mar 2, 2025
f6fc17a
Add an anchor to directly link to the -Zmiri-tree-borrows docs
shepmaster Mar 3, 2025
1d7cd1e
Merge pull request #4217 from shepmaster/tree-borrows-anchor
RalfJung Mar 3, 2025
2ff1050
Use size_of from the prelude instead of imported
thaliaarchi Mar 5, 2025
14cfc3a
Merge pull request #4219 from thaliaarchi/use-prelude-size-of
RalfJung Mar 5, 2025
95a6570
Preparing for merge from rustc
Mar 6, 2025
f80cac7
Merge from rustc
Mar 6, 2025
b178f22
Merge pull request #4220 from rust-lang/rustup-2025-03-06
RalfJung Mar 6, 2025
726c8d4
Fix tier 2 sysroots job
saethlin Mar 5, 2025
b709bde
Update documentation about nextest
saethlin Mar 7, 2025
ccccf40
Merge pull request #4218 from saethlin/tier-2-sysroots
saethlin Mar 7, 2025
7c3979e
Merge pull request #4221 from saethlin/nextest-parallelism
saethlin Mar 7, 2025
7e3daf4
Preparing for merge from rustc
Mar 7, 2025
245aad1
Merge from rustc
Mar 7, 2025
a3ea86e
Merge pull request #4222 from rust-lang/rustup-2025-03-07
saethlin Mar 7, 2025
5cf0c95
Show interpreter backtrace error on Ctrl+C
Stypox Mar 7, 2025
5533da2
Merge pull request #4223 from Stypox/ctrl-c-backtrace
RalfJung Mar 7, 2025
5889b95
Preparing for merge from rustc
Mar 11, 2025
4f2a03c
Merge from rustc
Mar 11, 2025
fe5235e
Merge pull request #4224 from rust-lang/rustup-2025-03-11
RalfJung Mar 11, 2025
0346e92
alloc_addresses: use MemoryKind instead of tcx query to determine glo…
RalfJung Mar 12, 2025
82dfa03
added check_shim_abi
geetanshjuneja Mar 12, 2025
a004c12
Merge pull request #4225 from RalfJung/alloc_addresses
RalfJung Mar 12, 2025
3d01217
Merge pull request #4185 from geetanshjuneja/abi_check
RalfJung Mar 12, 2025
18299e4
Preparing for merge from rustc
Mar 14, 2025
51fd358
Merge from rustc
Mar 14, 2025
0b643df
Merge pull request #4226 from rust-lang/rustup-2025-03-14
saethlin Mar 14, 2025
ebc5552
Preparing for merge from rustc
Mar 15, 2025
39df7ee
Merge from rustc
Mar 15, 2025
b724fab
Merge pull request #4227 from rust-lang/rustup-2025-03-15
saethlin Mar 15, 2025
642634c
Preparing for merge from rustc
Mar 16, 2025
17ae00d
Merge from rustc
Mar 16, 2025
ea2a2bd
Merge pull request #4229 from rust-lang/rustup-2025-03-16
saethlin Mar 16, 2025
c2c50c6
Preparing for merge from rustc
Mar 20, 2025
a6324ba
Merge from rustc
Mar 20, 2025
08e79dd
Merge pull request #4233 from rust-lang/rustup-2025-03-20
RalfJung Mar 20, 2025
38e7bb0
catch_unwind: do not permit catch function to unwind
RalfJung Mar 21, 2025
3a0ef6b
Merge pull request #4235 from RalfJung/catch_unwind
RalfJung Mar 21, 2025
29f022c
Preparing for merge from rustc
RalfJung Mar 21, 2025
f24ea85
Merge from rustc
RalfJung Mar 21, 2025
40bb7d1
Merge pull request #4236 from RalfJung/rustup
RalfJung Mar 21, 2025
c845ff0
run a few more concurrency tests on aarch64-linux-android
RalfJung Mar 27, 2025
ab8836f
Merge pull request #4240 from RalfJung/aarch64-linux-android
RalfJung Mar 27, 2025
c414760
Put pin!() tests in the right file.
m-ou-se Mar 28, 2025
024c8c3
cache mangle_internal_symbol results
RalfJung Mar 28, 2025
0f41852
Fix formatting nit in process.rs
barafael Mar 28, 2025
a8616f2
Merge pull request #4241 from RalfJung/mangle_internal_symbol_cache
RalfJung Mar 28, 2025
7310925
update lockfile
RalfJung Mar 28, 2025
074edbd
std: Explain range follows standard half-open range in `offset`
xizheyin Mar 28, 2025
9055765
`io::Take`: avoid new `BorrowedBuf` creation in some case
a1phyr Mar 28, 2025
dabee5d
Do not treat lifetimes from parent items as influencing child items
oli-obk Mar 28, 2025
7a295d1
Fix TAIT & ATPIT feature gating in the presence of anon consts
fmease Mar 28, 2025
e6a2c29
tracking autodiff files via triagebot.toml
ZuseZ4 Mar 28, 2025
e82557e
Rollup merge of #138976 - xizheyin:issue-138969, r=RalfJung
matthiaskrgr Mar 28, 2025
3060c77
Rollup merge of #139052 - m-ou-se:pin-macro-tests, r=joboet
matthiaskrgr Mar 28, 2025
660e863
Rollup merge of #139058 - barafael:patch-1, r=joboet
matthiaskrgr Mar 28, 2025
52aed95
Rollup merge of #139063 - fmease:fix-tait-atpit-gating, r=oli-obk
matthiaskrgr Mar 28, 2025
b669931
Rollup merge of #139065 - RalfJung:miri-sync, r=RalfJung
matthiaskrgr Mar 28, 2025
7c0a14f
Rollup merge of #139069 - a1phyr:better_take, r=joboet
matthiaskrgr Mar 28, 2025
3e968c7
Rollup merge of #139075 - oli-obk:resolver-item-lifetime, r=compiler-…
matthiaskrgr Mar 28, 2025
20f2655
Rollup merge of #139079 - EnzymeAD:autodfff-triagebot, r=Noratrieb
matthiaskrgr Mar 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 2 additions & 28 deletions Cargo.lock
Original file line number Diff line number Diff line change
Expand Up @@ -535,7 +535,7 @@ dependencies = [
"termize",
"tokio",
"toml 0.7.8",
"ui_test 0.29.2",
"ui_test",
"walkdir",
]

Expand Down Expand Up @@ -2262,7 +2262,7 @@ dependencies = [
"smallvec",
"tempfile",
"tikv-jemalloc-sys",
"ui_test 0.28.0",
"ui_test",
"windows-sys 0.52.0",
]

Expand Down Expand Up @@ -5508,32 +5508,6 @@ version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971"

[[package]]
name = "ui_test"
version = "0.28.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7484683d60d50ca1d1b6433c3dbf6c5ad71d20387acdcfb16fe79573f3fba576"
dependencies = [
"annotate-snippets 0.11.5",
"anyhow",
"bstr",
"cargo-platform",
"cargo_metadata 0.18.1",
"color-eyre",
"colored",
"comma",
"crossbeam-channel",
"indicatif",
"levenshtein",
"prettydiff",
"regex",
"rustc_version",
"rustfix",
"serde",
"serde_json",
"spanned",
]

[[package]]
name = "ui_test"
version = "0.29.2"
Expand Down
7 changes: 7 additions & 0 deletions compiler/rustc_ast_passes/src/feature_gate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,13 @@ impl<'a> PostExpansionVisitor<'a> {
}
visit::walk_ty(self, ty);
}

fn visit_anon_const(&mut self, _: &ast::AnonConst) -> Self::Result {
// We don't walk the anon const because it crosses a conceptual boundary: We're no
// longer "inside" the original type.
// Brittle: We assume that the callers of `check_impl_trait` will later recurse into
// the items found in the AnonConst to look for nested TyAliases.
}
}
ImplTraitVisitor { vis: self, in_associated_ty }.visit_ty(ty);
}
Expand Down
5 changes: 4 additions & 1 deletion compiler/rustc_resolve/src/late.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1833,14 +1833,17 @@ impl<'a, 'ast, 'ra: 'ast, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {
}
LifetimeRibKind::StaticIfNoLifetimeInScope { lint_id: node_id, emit_lint } => {
let mut lifetimes_in_scope = vec![];
for rib in &self.lifetime_ribs[..i] {
for rib in self.lifetime_ribs[..i].iter().rev() {
lifetimes_in_scope.extend(rib.bindings.iter().map(|(ident, _)| ident.span));
// Consider any anonymous lifetimes, too
if let LifetimeRibKind::AnonymousCreateParameter { binder, .. } = rib.kind
&& let Some(extra) = self.r.extra_lifetime_params_map.get(&binder)
{
lifetimes_in_scope.extend(extra.iter().map(|(ident, _, _)| ident.span));
}
if let LifetimeRibKind::Item = rib.kind {
break;
}
}
if lifetimes_in_scope.is_empty() {
self.record_lifetime_res(
Expand Down
3 changes: 2 additions & 1 deletion library/core/src/ptr/const_ptr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -386,7 +386,8 @@ impl<T: ?Sized> *const T {
/// * If the computed offset is non-zero, then `self` must be [derived from][crate::ptr#provenance] a pointer to some
/// [allocated object], and the entire memory range between `self` and the result must be in
/// bounds of that allocated object. In particular, this range must not "wrap around" the edge
/// of the address space.
/// of the address space. Note that "range" here refers to a half-open range as usual in Rust,
/// i.e., `self..result` for non-negative offsets and `result..self` for negative offsets.
///
/// Allocated objects can never be larger than `isize::MAX` bytes, so if the computed offset
/// stays in bounds of the allocated object, it is guaranteed to satisfy the first requirement.
Expand Down
14 changes: 0 additions & 14 deletions library/coretests/tests/pin.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,6 @@ fn pin_const() {
}

pin_mut_const();

// Check that we accept a Rust 2024 $expr.
std::pin::pin!(const { 1 });
}

#[allow(unused)]
Expand Down Expand Up @@ -84,14 +81,3 @@ mod pin_coerce_unsized {
arg
}
}

#[test]
#[cfg(not(bootstrap))]
fn temp_lifetime() {
// Check that temporary lifetimes work as in Rust 2021.
// Regression test for https://github.com/rust-lang/rust/issues/138596
match std::pin::pin!(foo(&mut 0)) {
_ => {}
}
async fn foo(_: &mut usize) {}
}
17 changes: 17 additions & 0 deletions library/coretests/tests/pin_macro.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,20 @@ fn unsize_coercion() {
let dyn_obj: Pin<&mut dyn Send> = pin!([PhantomPinned; 2]);
stuff(dyn_obj);
}

#[test]
fn rust_2024_expr() {
// Check that we accept a Rust 2024 $expr.
std::pin::pin!(const { 1 });
}

#[test]
#[cfg(not(bootstrap))]
fn temp_lifetime() {
// Check that temporary lifetimes work as in Rust 2021.
// Regression test for https://github.com/rust-lang/rust/issues/138596
match std::pin::pin!(foo(&mut 0)) {
_ => {}
}
async fn foo(_: &mut usize) {}
}
8 changes: 4 additions & 4 deletions library/std/src/io/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2989,11 +2989,11 @@ impl<T: Read> Read for Take<T> {
return Ok(());
}

if self.limit <= buf.capacity() as u64 {
// if we just use an as cast to convert, limit may wrap around on a 32 bit target
let limit = cmp::min(self.limit, usize::MAX as u64) as usize;
if self.limit < buf.capacity() as u64 {
// The condition above guarantees that `self.limit` fits in `usize`.
let limit = self.limit as usize;

let extra_init = cmp::min(limit as usize, buf.init_ref().len());
let extra_init = cmp::min(limit, buf.init_ref().len());

// SAFETY: no uninit data is written to ibuf
let ibuf = unsafe { &mut buf.as_mut()[..limit] };
Expand Down
2 changes: 1 addition & 1 deletion library/std/src/process.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1836,7 +1836,7 @@ impl crate::sealed::Sealed for ExitStatusError {}
/// # if cfg!(unix) {
/// use std::process::{Command, ExitStatusError};
///
/// fn run(cmd: &str) -> Result<(),ExitStatusError> {
/// fn run(cmd: &str) -> Result<(), ExitStatusError> {
/// Command::new(cmd).status().unwrap().exit_ok()?;
/// Ok(())
/// }
Expand Down
1 change: 1 addition & 0 deletions src/tools/miri/.github/workflows/sysroots.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ jobs:
- uses: actions/checkout@v4
- name: Build the sysroots
run: |
rustup toolchain install nightly
cargo install -f rustup-toolchain-install-master
./miri toolchain -c rust-docs # Docs are the only place targets are separated by tier
./miri install
Expand Down
4 changes: 2 additions & 2 deletions src/tools/miri/Cargo.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1079,9 +1079,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"

[[package]]
name = "ui_test"
version = "0.28.0"
version = "0.29.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7484683d60d50ca1d1b6433c3dbf6c5ad71d20387acdcfb16fe79573f3fba576"
checksum = "14bf63f2931a28a04af0bd24c5f850223d29f3a40afae49ed6ce442a65eb8652"
dependencies = [
"annotate-snippets",
"anyhow",
Expand Down
2 changes: 1 addition & 1 deletion src/tools/miri/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ windows-sys = { version = "0.52", features = [
] }

[dev-dependencies]
ui_test = "0.28.0"
ui_test = "0.29.1"
colored = "2"
rustc_version = "0.4"
regex = "1.5.5"
Expand Down
6 changes: 3 additions & 3 deletions src/tools/miri/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -237,8 +237,7 @@ inherent interpreter slowdown and a loss of parallelism.
You can get your test suite's parallelism back by running `cargo miri nextest run -jN`
(note that you will need [`cargo-nextest`](https://nexte.st) installed).
This works because `cargo-nextest` collects a list of all tests then launches a
separate `cargo miri run` for each test. You will need to specify a `-j` or `--test-threads`;
by default `cargo miri nextest run` runs one test at a time. For more details, see the
separate `cargo miri run` for each test. For more information about nextest, see the
[`cargo-nextest` Miri documentation](https://nexte.st/book/miri.html).

Note: This one-test-per-process model means that `cargo miri test` is able to detect data
Expand Down Expand Up @@ -432,7 +431,8 @@ to Miri failing to detect cases of undefined behavior in a program.
* `-Zmiri-track-weak-memory-loads` shows a backtrace when weak memory emulation returns an outdated
value from a load. This can help diagnose problems that disappear under
`-Zmiri-disable-weak-memory-emulation`.
* `-Zmiri-tree-borrows` replaces [Stacked Borrows] with the [Tree Borrows] rules.
* <a name="-Zmiri-tree-borrows"><!-- The playground links here --></a>
`-Zmiri-tree-borrows` replaces [Stacked Borrows] with the [Tree Borrows] rules.
Tree Borrows is even more experimental than Stacked Borrows. While Tree Borrows
is still sound in the sense of catching all aliasing violations that current versions
of the compiler might exploit, it is likely that the eventual final aliasing model
Expand Down
2 changes: 1 addition & 1 deletion src/tools/miri/bench-cargo-miri/mse/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ fn main() {
}

fn read_i16(buffer: &[u8], index: usize) -> i16 {
const SIZE: usize = std::mem::size_of::<i16>();
const SIZE: usize = size_of::<i16>();
let mut bytes: [u8; SIZE] = [0u8; SIZE];
bytes.copy_from_slice(&buffer[(index * SIZE)..(index * SIZE + SIZE)]);
unsafe { std::mem::transmute(bytes) }
Expand Down
2 changes: 1 addition & 1 deletion src/tools/miri/cargo-miri/src/phases.rs
Original file line number Diff line number Diff line change
Expand Up @@ -467,7 +467,7 @@ pub fn phase_rustc(mut args: impl Iterator<Item = String>, phase: RustcPhase) {
if let Some(i) = val.iter().position(|&s| s == "link") {
emit_link_hack = true;
val.remove(i);
if !val.iter().any(|&s| s == "metadata") {
if !val.contains(&"metadata") {
val.push("metadata");
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/tools/miri/ci/ci.sh
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ case $HOST_TARGET in
UNIX="hello panic/panic panic/unwind concurrency/simple atomic libc-mem libc-misc libc-random env num_cpus" # the things that are very similar across all Unixes, and hence easily supported there
TEST_TARGET=x86_64-unknown-freebsd run_tests_minimal $BASIC $UNIX time hashmap random threadname pthread fs libc-pipe
TEST_TARGET=i686-unknown-freebsd run_tests_minimal $BASIC $UNIX time hashmap random threadname pthread fs libc-pipe
TEST_TARGET=aarch64-linux-android run_tests_minimal $BASIC $UNIX time hashmap random sync threadname pthread epoll eventfd
TEST_TARGET=aarch64-linux-android run_tests_minimal $BASIC $UNIX time hashmap random sync concurrency thread epoll eventfd
TEST_TARGET=wasm32-wasip2 run_tests_minimal $BASIC wasm
TEST_TARGET=wasm32-unknown-unknown run_tests_minimal no_std empty_main wasm # this target doesn't really have std
TEST_TARGET=thumbv7em-none-eabihf run_tests_minimal no_std
Expand Down
2 changes: 1 addition & 1 deletion src/tools/miri/rust-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
f5729cfed3c45e061e8a443677fc1d5ef9277df7
4ac032f857b46037b55c1fc0fa702450aad37f43
7 changes: 5 additions & 2 deletions src/tools/miri/src/alloc_addresses/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -170,20 +170,22 @@ trait EvalContextExtPriv<'tcx>: crate::MiriInterpCxExt<'tcx> {
// This ensures the interpreted program and native code have the same view of memory.
let base_ptr = match info.kind {
AllocKind::LiveData => {
if this.tcx.try_get_global_alloc(alloc_id).is_some() {
if memory_kind == MiriMemoryKind::Global.into() {
// For new global allocations, we always pre-allocate the memory to be able use the machine address directly.
let prepared_bytes = MiriAllocBytes::zeroed(info.size, info.align)
.unwrap_or_else(|| {
panic!("Miri ran out of memory: cannot create allocation of {size:?} bytes", size = info.size)
});
let ptr = prepared_bytes.as_ptr();
// Store prepared allocation space to be picked up for use later.
// Store prepared allocation to be picked up for use later.
global_state
.prepared_alloc_bytes
.try_insert(alloc_id, prepared_bytes)
.unwrap();
ptr
} else {
// Non-global allocations are already in memory at this point so
// we can just get a pointer to where their data is stored.
this.get_alloc_bytes_unchecked_raw(alloc_id)?
}
}
Expand Down Expand Up @@ -381,6 +383,7 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
align: Align,
) -> InterpResult<'tcx, MiriAllocBytes> {
let this = self.eval_context_ref();
assert!(this.tcx.try_get_global_alloc(id).is_some());
if this.machine.native_lib.is_some() {
// In native lib mode, MiriAllocBytes for global allocations are handled via `prepared_alloc_bytes`.
// This additional call ensures that some `MiriAllocBytes` are always prepared, just in case
Expand Down
2 changes: 1 addition & 1 deletion src/tools/miri/src/concurrency/thread.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1150,7 +1150,7 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
loop {
if CTRL_C_RECEIVED.load(Relaxed) {
this.machine.handle_abnormal_termination();
std::process::exit(1);
throw_machine_stop!(TerminationInfo::Interrupted);
}
match this.machine.threads.schedule(&this.machine.clock)? {
SchedulingAction::ExecuteStep => {
Expand Down
4 changes: 4 additions & 0 deletions src/tools/miri/src/diagnostics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ pub enum TerminationInfo {
leak_check: bool,
},
Abort(String),
/// Miri was interrupted by a Ctrl+C from the user
Interrupted,
UnsupportedInIsolation(String),
StackedBorrowsUb {
msg: String,
Expand Down Expand Up @@ -63,6 +65,7 @@ impl fmt::Display for TerminationInfo {
match self {
Exit { code, .. } => write!(f, "the evaluated program completed with exit code {code}"),
Abort(msg) => write!(f, "{msg}"),
Interrupted => write!(f, "interpretation was interrupted"),
UnsupportedInIsolation(msg) => write!(f, "{msg}"),
Int2PtrWithStrictProvenance =>
write!(
Expand Down Expand Up @@ -226,6 +229,7 @@ pub fn report_error<'tcx>(
let title = match info {
&Exit { code, leak_check } => return Some((code, leak_check)),
Abort(_) => Some("abnormal termination"),
Interrupted => None,
UnsupportedInIsolation(_) | Int2PtrWithStrictProvenance | UnsupportedForeignItem(_) =>
Some("unsupported operation"),
StackedBorrowsUb { .. } | TreeBorrowsUb { .. } | DataRace { .. } =>
Expand Down
1 change: 0 additions & 1 deletion src/tools/miri/src/eval.rs
Original file line number Diff line number Diff line change
Expand Up @@ -434,7 +434,6 @@ pub fn create_ecx<'tcx>(
/// Evaluates the entry function specified by `entry_id`.
/// Returns `Some(return_code)` if program execution completed.
/// Returns `None` if an evaluation error occurred.
#[expect(clippy::needless_lifetimes)]
pub fn eval_entry<'tcx>(
tcx: TyCtxt<'tcx>,
entry_id: DefId,
Expand Down
Loading
Loading