@@ -195,6 +195,16 @@ impl<O> AssertKind<O> {
195195 ResumedAfterPanic ( CoroutineKind :: Desugared ( CoroutineDesugaring :: Gen , _) ) => {
196196 LangItem :: PanicGenFnNonePanic
197197 }
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+ }
198208
199209 BoundsCheck { .. } | MisalignedPointerDereference { .. } => {
200210 bug ! ( "Unexpected AssertKind" )
@@ -284,6 +294,18 @@ impl<O> AssertKind<O> {
284294 ResumedAfterPanic ( CoroutineKind :: Desugared ( CoroutineDesugaring :: Gen , _) ) => {
285295 write ! ( f, "\" `gen fn` should just keep returning `None` after panicking\" " )
286296 }
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+ }
287309 }
288310 }
289311
@@ -330,6 +352,18 @@ impl<O> AssertKind<O> {
330352 ResumedAfterPanic ( CoroutineKind :: Coroutine ( _) ) => {
331353 middle_assert_coroutine_resume_after_panic
332354 }
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+ }
333367
334368 MisalignedPointerDereference { .. } => middle_assert_misaligned_ptr_deref,
335369 }
@@ -363,7 +397,7 @@ impl<O> AssertKind<O> {
363397 add ! ( "left" , format!( "{left:#?}" ) ) ;
364398 add ! ( "right" , format!( "{right:#?}" ) ) ;
365399 }
366- ResumedAfterReturn ( _) | ResumedAfterPanic ( _) => { }
400+ ResumedAfterReturn ( _) | ResumedAfterPanic ( _) | ResumedAfterDrop ( _ ) => { }
367401 MisalignedPointerDereference { required, found } => {
368402 add ! ( "required" , format!( "{required:#?}" ) ) ;
369403 add ! ( "found" , format!( "{found:#?}" ) ) ;
0 commit comments