File tree 1 file changed +5
-0
lines changed
compiler/rustc_interface/src
1 file changed +5
-0
lines changed Original file line number Diff line number Diff line change @@ -123,6 +123,9 @@ mod boxed_resolver {
123
123
resolver : None ,
124
124
_pin : PhantomPinned ,
125
125
} ) ;
126
+ // SAFETY: `make_resolver` takes a resolver arena with an arbitrary lifetime and
127
+ // returns a resolver with the same lifetime as the arena. We ensure that the arena
128
+ // outlives the resolver in the drop impl and elsewhere so these transmutes are sound.
126
129
unsafe {
127
130
let ( crate_, resolver) = make_resolver (
128
131
std:: mem:: transmute :: < & Session , & Session > ( & boxed_resolver. session ) ,
@@ -137,6 +140,7 @@ mod boxed_resolver {
137
140
}
138
141
139
142
pub fn access < F : for < ' a > FnOnce ( & mut Resolver < ' a > ) -> R , R > ( & mut self , f : F ) -> R {
143
+ // SAFETY: The resolver doesn't need to be pinned.
140
144
let mut resolver = unsafe {
141
145
self . 0 . as_mut ( ) . map_unchecked_mut ( |boxed_resolver| & mut boxed_resolver. resolver )
142
146
} ;
@@ -147,6 +151,7 @@ mod boxed_resolver {
147
151
match Rc :: try_unwrap ( resolver) {
148
152
Ok ( resolver) => {
149
153
let mut resolver = resolver. into_inner ( ) ;
154
+ // SAFETY: The resolver doesn't need to be pinned.
150
155
let mut resolver = unsafe {
151
156
resolver
152
157
. 0
You can’t perform that action at this time.
0 commit comments