@@ -195,6 +195,16 @@ impl<O> AssertKind<O> {
195
195
ResumedAfterPanic ( CoroutineKind :: Desugared ( CoroutineDesugaring :: Gen , _) ) => {
196
196
LangItem :: PanicGenFnNonePanic
197
197
}
198
+ ResumedAfterDrop ( CoroutineKind :: Coroutine ( _) ) => LangItem :: PanicCoroutineResumedDrop ,
199
+ ResumedAfterDrop ( CoroutineKind :: Desugared ( CoroutineDesugaring :: Async , _) ) => {
200
+ LangItem :: PanicAsyncFnResumedDrop
201
+ }
202
+ ResumedAfterDrop ( CoroutineKind :: Desugared ( CoroutineDesugaring :: AsyncGen , _) ) => {
203
+ LangItem :: PanicAsyncGenFnResumedDrop
204
+ }
205
+ ResumedAfterDrop ( CoroutineKind :: Desugared ( CoroutineDesugaring :: Gen , _) ) => {
206
+ LangItem :: PanicGenFnNoneDrop
207
+ }
198
208
199
209
BoundsCheck { .. } | MisalignedPointerDereference { .. } => {
200
210
bug ! ( "Unexpected AssertKind" )
@@ -284,6 +294,18 @@ impl<O> AssertKind<O> {
284
294
ResumedAfterPanic ( CoroutineKind :: Desugared ( CoroutineDesugaring :: Gen , _) ) => {
285
295
write ! ( f, "\" `gen fn` should just keep returning `None` after panicking\" " )
286
296
}
297
+ ResumedAfterDrop ( CoroutineKind :: Coroutine ( _) ) => {
298
+ write ! ( f, "\" coroutine resumed after async drop\" " )
299
+ }
300
+ ResumedAfterDrop ( CoroutineKind :: Desugared ( CoroutineDesugaring :: Async , _) ) => {
301
+ write ! ( f, "\" `async fn` resumed after async drop\" " )
302
+ }
303
+ ResumedAfterDrop ( CoroutineKind :: Desugared ( CoroutineDesugaring :: AsyncGen , _) ) => {
304
+ write ! ( f, "\" `async gen fn` resumed after async drop\" " )
305
+ }
306
+ ResumedAfterDrop ( CoroutineKind :: Desugared ( CoroutineDesugaring :: Gen , _) ) => {
307
+ write ! ( f, "\" `gen fn` resumed after drop\" " )
308
+ }
287
309
}
288
310
}
289
311
@@ -330,6 +352,18 @@ impl<O> AssertKind<O> {
330
352
ResumedAfterPanic ( CoroutineKind :: Coroutine ( _) ) => {
331
353
middle_assert_coroutine_resume_after_panic
332
354
}
355
+ ResumedAfterDrop ( CoroutineKind :: Desugared ( CoroutineDesugaring :: Async , _) ) => {
356
+ middle_assert_async_resume_after_drop
357
+ }
358
+ ResumedAfterDrop ( CoroutineKind :: Desugared ( CoroutineDesugaring :: AsyncGen , _) ) => {
359
+ todo ! ( )
360
+ }
361
+ ResumedAfterDrop ( CoroutineKind :: Desugared ( CoroutineDesugaring :: Gen , _) ) => {
362
+ middle_assert_gen_resume_after_drop
363
+ }
364
+ ResumedAfterDrop ( CoroutineKind :: Coroutine ( _) ) => {
365
+ middle_assert_coroutine_resume_after_drop
366
+ }
333
367
334
368
MisalignedPointerDereference { .. } => middle_assert_misaligned_ptr_deref,
335
369
}
@@ -363,7 +397,7 @@ impl<O> AssertKind<O> {
363
397
add ! ( "left" , format!( "{left:#?}" ) ) ;
364
398
add ! ( "right" , format!( "{right:#?}" ) ) ;
365
399
}
366
- ResumedAfterReturn ( _) | ResumedAfterPanic ( _) => { }
400
+ ResumedAfterReturn ( _) | ResumedAfterPanic ( _) | ResumedAfterDrop ( _ ) => { }
367
401
MisalignedPointerDereference { required, found } => {
368
402
add ! ( "required" , format!( "{required:#?}" ) ) ;
369
403
add ! ( "found" , format!( "{found:#?}" ) ) ;
0 commit comments