@@ -225,8 +225,9 @@ abstract class MemoAgnosticImplicitContext extends ImplicitContextBase {
225225 this ::TData $context ,
226226 (function ()[_ ]: Awaitable <Tout >) $f ,
227227 )[leak_safe, ctx $f]: Awaitable <Tout > {
228- $prev = ImplicitContext \_Private \set_implicit_context_by_value (
229- self :: createContext($context )
228+ $prev = ImplicitContext \_Private \get_whole_implicit_context ();
229+ ImplicitContext \_Private \set_implicit_context_by_value (
230+ self :: createContext($prev , $context )
230231 );
231232 try {
232233 $result = $f ();
@@ -242,8 +243,9 @@ final protected static function runWith<Tout>(
242243 this ::TData $context ,
243244 (function ()[_ ]: Tout ) $f ,
244245 )[leak_safe, ctx $f]: Tout {
245- $prev = ImplicitContext \_Private \set_implicit_context_by_value (
246- self :: createContext($context )
246+ $prev = ImplicitContext \_Private \get_whole_implicit_context ();
247+ ImplicitContext \_Private \set_implicit_context_by_value (
248+ self :: createContext($prev , $context )
247249 );
248250 try {
249251 return $f ();
@@ -262,10 +264,11 @@ final protected static function prepare(
262264 }
263265
264266 private static function createContext (
267+ ImplicitContext \_Private \ImplicitContextData $ic ,
265268 this ::TData $context ,
266269 )[leak_safe]: ImplicitContext \_Private \ImplicitContextData {
267270 return ImplicitContext \_Private \set_memo_agnostic (
268- ImplicitContext \ _Private \ get_whole_implicit_context () ,
271+ $ic ,
269272 static :: class ,
270273 $context ,
271274 );
@@ -279,8 +282,9 @@ abstract class MemoSensitiveImplicitContext extends ImplicitContextBase {
279282 this ::TData $context ,
280283 (function ()[_ ]: Awaitable <Tout >) $f ,
281284 )[leak_safe, ctx $f]: Awaitable <Tout > {
282- $prev = ImplicitContext \_Private \set_implicit_context_by_value (
283- self :: createContext($context )
285+ $prev = ImplicitContext \_Private \get_whole_implicit_context ();
286+ ImplicitContext \_Private \set_implicit_context_by_value (
287+ self :: createContext($prev , $context ),
284288 );
285289 try {
286290 $result = $f ();
@@ -296,8 +300,9 @@ final protected static function runWith<Tout>(
296300 this ::TData $context ,
297301 (function ()[_ ]: Tout ) $f ,
298302 )[leak_safe, ctx $f]: Tout {
299- $prev = ImplicitContext \_Private \set_implicit_context_by_value (
300- self :: createContext($context )
303+ $prev = ImplicitContext \_Private \get_whole_implicit_context ();
304+ ImplicitContext \_Private \set_implicit_context_by_value (
305+ self :: createContext($prev , $context ),
301306 );
302307 try {
303308 return $f ();
@@ -316,10 +321,11 @@ final protected static function prepare(
316321 }
317322
318323 private static function createContext (
324+ ImplicitContext \_Private \ImplicitContextData $ic ,
319325 this ::TData $context ,
320326 )[leak_safe]: ImplicitContext \_Private \ImplicitContextData {
321327 return ImplicitContext \_Private \set_memo_sensitive (
322- ImplicitContext \ _Private \ get_whole_implicit_context () ,
328+ $ic ,
323329 static :: class ,
324330 $context ,
325331 $context -> getInstanceKey(),
@@ -377,7 +383,8 @@ enum class MemoizeOption: string {
377383 function backdoor <Tout >(
378384 (function ()[defaults ]: Tout ) $fn
379385 )[/* 86backdoor */]: Tout {
380- $prev = \HH \ImplicitContext \_Private \ set_implicit_context_by_value (
386+ $prev = \HH \ImplicitContext \_Private \ get_whole_implicit_context ();
387+ \HH \ImplicitContext \_Private \ set_implicit_context_by_value (
381388 \HH \ImplicitContext \_Private \ get_memo_agnostic_implicit_context (),
382389 );
383390 try {
@@ -394,7 +401,8 @@ function backdoor<Tout>(
394401 async function backdoor_async <Tout >(
395402 (function ()[defaults ]: Awaitable <Tout >) $fn
396403 )[/* 86backdoor */]: Awaitable <Tout > {
397- $prev = \HH \ImplicitContext \_Private \ set_implicit_context_by_value (
404+ $prev = \HH \ImplicitContext \_Private \ get_whole_implicit_context ();
405+ \HH \ImplicitContext \_Private \ set_implicit_context_by_value (
398406 \HH \ImplicitContext \_Private \ get_memo_agnostic_implicit_context ()
399407 );
400408 try {
0 commit comments