diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2025-07-26 00:21:01 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2025-07-26 00:25:26 +0300 |
| commit | e82011255b5feb43cf3379d4d3495629e99c09b1 (patch) | |
| tree | c92932f9403b9bd11e400d6256ea79dcd559f0eb /compiler/rustc_resolve/src/lib.rs | |
| parent | 2c657901605ed5e6e6d3ab52e824f35e25cf4516 (diff) | |
| download | rust-e82011255b5feb43cf3379d4d3495629e99c09b1.tar.gz rust-e82011255b5feb43cf3379d4d3495629e99c09b1.zip | |
resolve: Do not create `NameResolution`s on access unless necessary
Diffstat (limited to 'compiler/rustc_resolve/src/lib.rs')
| -rw-r--r-- | compiler/rustc_resolve/src/lib.rs | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/compiler/rustc_resolve/src/lib.rs b/compiler/rustc_resolve/src/lib.rs index 27e14e0e62b..fe7ed07c46e 100644 --- a/compiler/rustc_resolve/src/lib.rs +++ b/compiler/rustc_resolve/src/lib.rs @@ -21,7 +21,7 @@ #![recursion_limit = "256"] // tidy-alphabetical-end -use std::cell::{Cell, RefCell}; +use std::cell::{Cell, Ref, RefCell}; use std::collections::BTreeSet; use std::fmt; use std::sync::Arc; @@ -1905,9 +1905,16 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> { &mut self, module: Module<'ra>, key: BindingKey, + ) -> Option<Ref<'ra, NameResolution<'ra>>> { + self.resolutions(module).borrow().get(&key).map(|resolution| resolution.borrow()) + } + + fn resolution_or_default( + &mut self, + module: Module<'ra>, + key: BindingKey, ) -> &'ra RefCell<NameResolution<'ra>> { - *self - .resolutions(module) + self.resolutions(module) .borrow_mut() .entry(key) .or_insert_with(|| self.arenas.alloc_name_resolution()) |
