@@ -289,10 +289,10 @@ macro_rules! define_callbacks {
289289
290290 /// This type alias specifies the type returned from query providers and the type
291291 /// used for decoding. For regular queries this is the declared returned type `V`,
292- /// but `arena_cache` will use `<V as Deref >::Target ` instead.
292+ /// but `arena_cache` will use `<V as ArenaCached >::Provided ` instead.
293293 pub type ProvidedValue <' tcx> = query_if_arena!(
294294 [ $( $modifiers) * ]
295- ( <$V as Deref > :: Target )
295+ ( <$V as $crate :: query :: arena_cached :: ArenaCached < ' tcx>> :: Provided )
296296 ( $V)
297297 ) ;
298298
@@ -307,10 +307,18 @@ macro_rules! define_callbacks {
307307 ) -> Erase <Value <' tcx>> {
308308 erase( query_if_arena!( [ $( $modifiers) * ]
309309 {
310- if mem:: needs_drop:: <ProvidedValue <' tcx>>( ) {
311- & * _tcx. query_system. arenas. $name. alloc( value)
310+ use $crate:: query:: arena_cached:: ArenaCached ;
311+
312+ if mem:: needs_drop:: <<$V as ArenaCached <' tcx>>:: Allocated >( ) {
313+ <$V as ArenaCached >:: alloc_in_arena(
314+ |v| _tcx. query_system. arenas. $name. alloc( v) ,
315+ value,
316+ )
312317 } else {
313- & * _tcx. arena. dropless. alloc( value)
318+ <$V as ArenaCached >:: alloc_in_arena(
319+ |v| _tcx. arena. dropless. alloc( v) ,
320+ value,
321+ )
314322 }
315323 }
316324 ( value)
@@ -354,7 +362,7 @@ macro_rules! define_callbacks {
354362
355363 pub struct QueryArenas <' tcx> {
356364 $( $( #[ $attr] ) * pub $name: query_if_arena!( [ $( $modifiers) * ]
357- ( TypedArena <<$V as Deref > :: Target >)
365+ ( TypedArena <<$V as $crate :: query :: arena_cached :: ArenaCached < ' tcx>> :: Allocated >)
358366 ( )
359367 ) , ) *
360368 }
0 commit comments