// ĠWITH _ RUNTIME Ċ // ĠNO _ INTER CEPT _ RE SU ME _ TESTS Ċ Ċ class ĠController Ġ{ ĊĠĠĠ Ġvar Ġresult Ġ= Ġ"" ĊĊĠĠĠ Ġsuspend Ġfun Ġ< T > Ġsuspend And Log ( value : ĠT ): ĠT Ġ= Ġsuspend With Current Continuation Ġ{ Ġc Ġ-> ĊĠĠĠĠĠĠĠ Ġresult Ġ+= Ġ" suspend ($ value );" ĊĠĠĠĠĠĠĠ Ġc . resume ( value ) ĊĠĠĠĠĠĠĠ ĠS uspend ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġhandle Exception ( exception : ĠThrowable , Ġc : ĠContinu ation < Nothing >) Ġ{ ĊĠĠĠĠĠĠĠ Ġresult Ġ+= Ġ" ignore Ca ught (${ exception . message }); " ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġbuilder ( coroutine Ġc : ĠController . () Ġ-> ĠContinu ation < Unit >): ĠString Ġ{ ĊĠĠĠ Ġval Ġcontroller Ġ= ĠController () ĊĠĠĠ Ġc ( controller ). resume ( Unit ) ĊĠĠĠ Ġreturn Ġcontroller . result Ċ } Ċ Ċ fun Ġbox (): ĠString Ġ{ ĊĠĠĠ Ġval Ġvalue Ġ= Ġbuilder Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuspend And Log (" before ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" foo ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠRuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ+= Ġ" caught (${ e . message }); " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuspend And Log (" after ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( value Ġ!= Ġ" suspend ( before ); caught ( foo ); suspend ( after ); ") Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" fail : Ġ$ value " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġ" OK " Ċ } Ċ