@@ -208,6 +208,16 @@ impl<O> AssertKind<O> {
208
208
LangItem :: PanicGenFnNonePanic
209
209
}
210
210
NullPointerDereference => LangItem :: PanicNullPointerDereference ,
211
+ ResumedAfterDrop ( CoroutineKind :: Coroutine ( _) ) => LangItem :: PanicCoroutineResumedDrop ,
212
+ ResumedAfterDrop ( CoroutineKind :: Desugared ( CoroutineDesugaring :: Async , _) ) => {
213
+ LangItem :: PanicAsyncFnResumedDrop
214
+ }
215
+ ResumedAfterDrop ( CoroutineKind :: Desugared ( CoroutineDesugaring :: AsyncGen , _) ) => {
216
+ LangItem :: PanicAsyncGenFnResumedDrop
217
+ }
218
+ ResumedAfterDrop ( CoroutineKind :: Desugared ( CoroutineDesugaring :: Gen , _) ) => {
219
+ LangItem :: PanicGenFnNoneDrop
220
+ }
211
221
212
222
BoundsCheck { .. } | MisalignedPointerDereference { .. } => {
213
223
bug ! ( "Unexpected AssertKind" )
@@ -298,6 +308,18 @@ impl<O> AssertKind<O> {
298
308
ResumedAfterPanic ( CoroutineKind :: Desugared ( CoroutineDesugaring :: Gen , _) ) => {
299
309
write ! ( f, "\" `gen fn` should just keep returning `None` after panicking\" " )
300
310
}
311
+ ResumedAfterDrop ( CoroutineKind :: Coroutine ( _) ) => {
312
+ write ! ( f, "\" coroutine resumed after async drop\" " )
313
+ }
314
+ ResumedAfterDrop ( CoroutineKind :: Desugared ( CoroutineDesugaring :: Async , _) ) => {
315
+ write ! ( f, "\" `async fn` resumed after async drop\" " )
316
+ }
317
+ ResumedAfterDrop ( CoroutineKind :: Desugared ( CoroutineDesugaring :: AsyncGen , _) ) => {
318
+ write ! ( f, "\" `async gen fn` resumed after async drop\" " )
319
+ }
320
+ ResumedAfterDrop ( CoroutineKind :: Desugared ( CoroutineDesugaring :: Gen , _) ) => {
321
+ write ! ( f, "\" `gen fn` resumed after drop\" " )
322
+ }
301
323
}
302
324
}
303
325
@@ -345,6 +367,19 @@ impl<O> AssertKind<O> {
345
367
middle_assert_coroutine_resume_after_panic
346
368
}
347
369
NullPointerDereference => middle_assert_null_ptr_deref,
370
+ ResumedAfterDrop ( CoroutineKind :: Desugared ( CoroutineDesugaring :: Async , _) ) => {
371
+ middle_assert_async_resume_after_drop
372
+ }
373
+ ResumedAfterDrop ( CoroutineKind :: Desugared ( CoroutineDesugaring :: AsyncGen , _) ) => {
374
+ todo ! ( )
375
+ }
376
+ ResumedAfterDrop ( CoroutineKind :: Desugared ( CoroutineDesugaring :: Gen , _) ) => {
377
+ middle_assert_gen_resume_after_drop
378
+ }
379
+ ResumedAfterDrop ( CoroutineKind :: Coroutine ( _) ) => {
380
+ middle_assert_coroutine_resume_after_drop
381
+ }
382
+
348
383
MisalignedPointerDereference { .. } => middle_assert_misaligned_ptr_deref,
349
384
}
350
385
}
@@ -377,7 +412,10 @@ impl<O> AssertKind<O> {
377
412
add ! ( "left" , format!( "{left:#?}" ) ) ;
378
413
add ! ( "right" , format!( "{right:#?}" ) ) ;
379
414
}
380
- ResumedAfterReturn ( _) | ResumedAfterPanic ( _) | NullPointerDereference => { }
415
+ ResumedAfterReturn ( _)
416
+ | ResumedAfterPanic ( _)
417
+ | NullPointerDereference
418
+ | ResumedAfterDrop ( _) => { }
381
419
MisalignedPointerDereference { required, found } => {
382
420
add ! ( "required" , format!( "{required:#?}" ) ) ;
383
421
add ! ( "found" , format!( "{found:#?}" ) ) ;
0 commit comments