diff options
| author | Matthias Krüger <476013+matthiaskrgr@users.noreply.github.com> | 2025-09-27 21:26:00 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-27 21:26:00 +0200 |
| commit | a2b77d09d764cba540dfc1ed5b597da3cd6cd34b (patch) | |
| tree | 7a84d04d3e8d0c4d0ed78d978973a079dd0cce5b /compiler/rustc_middle/src/ty | |
| parent | 848009f1541c5df2742f7896a70bfa6241908330 (diff) | |
| parent | c0e0d4b68d38a92c19f42d3003074b5b6e7b65c8 (diff) | |
| download | rust-a2b77d09d764cba540dfc1ed5b597da3cd6cd34b.tar.gz rust-a2b77d09d764cba540dfc1ed5b597da3cd6cd34b.zip | |
Rollup merge of #147075 - Lysxia:no-panic-def-path-hash, r=petrochenkov
Make `def_path_hash_to_def_id` not panic when passed an invalid hash I'm using this function in a third-party application (Creusot) to access private items (by reverse engineering their hash). This works in the happy path, but it panics when an item does not exist. There is no way to hack it downstream because the hook `def_path_hash_to_def_id_extern` must always return a `DefId` and its implementation uses `def_path_hash_to_def_index` which is internal and which is where the panic happens.
Diffstat (limited to 'compiler/rustc_middle/src/ty')
| -rw-r--r-- | compiler/rustc_middle/src/ty/context.rs | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/compiler/rustc_middle/src/ty/context.rs b/compiler/rustc_middle/src/ty/context.rs index a42af7bb3e3..fe3fa024cd5 100644 --- a/compiler/rustc_middle/src/ty/context.rs +++ b/compiler/rustc_middle/src/ty/context.rs @@ -2012,7 +2012,7 @@ impl<'tcx> TyCtxt<'tcx> { if stable_crate_id == self.stable_crate_id(LOCAL_CRATE) { Some(self.untracked.definitions.read().local_def_path_hash_to_def_id(hash)?.to_def_id()) } else { - Some(self.def_path_hash_to_def_id_extern(hash, stable_crate_id)) + self.def_path_hash_to_def_id_extern(hash, stable_crate_id) } } |
