@@ -127,15 +127,14 @@ class DAPodil(
127127
128128 _ <- launched match {
129129 case Left (t) =>
130- Logger [IO ].warn(t)(show " couldn't launch, request $request" ) *>
130+ state.set(DAPodil .State .FailedToLaunch (request, t)) *>
131+ Logger [IO ].warn(t)(show " couldn't launch, request $request" ) *>
131132 session.sendResponse(
132133 request.respondFailure(Some (show " Couldn't launch Daffodil debugger: ${t.getMessage()}" ))
133134 )
134135 case Right (launchedState) =>
135- for {
136- _ <- session.sendResponse(request.respondSuccess())
137- _ <- state.set(launchedState)
138- } yield ()
136+ state.set(launchedState) *>
137+ session.sendResponse(request.respondSuccess())
139138 }
140139 } yield ()
141140 }
@@ -158,6 +157,9 @@ class DAPodil(
158157 )
159158 _ <- session.sendResponse(response)
160159 } yield ()
160+ case _ : DAPodil .State .FailedToLaunch =>
161+ Logger [IO ].warn(" ignoring setBreakPoints request since previous launch failed" ) *>
162+ session.sendResponse(request.respondFailure())
161163 case s => DAPodil .InvalidState .raise(request, " Launched" , s)
162164 }
163165
@@ -421,14 +423,14 @@ object DAPodil extends IOApp {
421423 val stackTrace : IO [StackTrace ] = debugee.data.get.map(_.stack)
422424 val threads : IO [List [Types .Thread ]] = debugee.data.get.map(_.threads)
423425 }
426+ case class FailedToLaunch (request : Request , cause : Throwable ) extends State
424427
425428 object Launched {
426429 def resource (
427430 session : DAPSession [Response , DebugEvent ],
428431 debugee : Resource [IO , Debugee ]
429432 ): Resource [IO , Launched ] =
430433 for {
431- _ <- Resource .eval(session.sendEvent(new Events .ThreadEvent (" started" , 1L )))
432434 debugee <- debugee.onFinalizeCase(ec => Logger [IO ].debug(s " debugee: $ec" ))
433435
434436 _ <- Resource .eval(
@@ -461,6 +463,8 @@ object DAPodil extends IOApp {
461463 .resource
462464 .lastOrError
463465 .onFinalizeCase(ec => Logger [IO ].debug(s " launched: $ec" ))
466+
467+ _ <- Resource .eval(session.sendEvent(new Events .ThreadEvent (" started" , 1L )))
464468 } yield launched
465469 }
466470
0 commit comments