{-# LANGUAGE MultiParamTypeClasses #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Haskell.Debug.Adapter.State.GHCiRun.ConfigurationDone where
import Control.Monad.IO.Class
import qualified System.Log.Logger as L
import Control.Monad.State
import Control.Lens
import qualified Haskell.DAP as DAP
import Haskell.Debug.Adapter.Type
import Haskell.Debug.Adapter.Constant
import qualified Haskell.Debug.Adapter.Utility as U
instance StateRequestIF GHCiRunState DAP.ConfigurationDoneRequest where
action (GHCiRun_ConfigurationDone req) = do
liftIO $ L.debugM _LOG_APP $ "GHCiRunState ConfigurationDoneRequest called. " ++ show req
app req
app :: DAP.ConfigurationDoneRequest -> AppContext (Maybe StateTransit)
app req = do
resSeq <- U.getIncreasedResponseSequence
let res = DAP.defaultConfigurationDoneResponse {
DAP.seqConfigurationDoneResponse = resSeq
, DAP.request_seqConfigurationDoneResponse = DAP.seqConfigurationDoneRequest req
, DAP.successConfigurationDoneResponse = True
}
U.addResponse $ ConfigurationDoneResponse res
reqSeq <- view launchReqSeqAppStores <$> get
resSeq <- U.getIncreasedResponseSequence
let res = DAP.defaultLaunchResponse {
DAP.seqLaunchResponse = resSeq
, DAP.request_seqLaunchResponse = reqSeq
, DAP.successLaunchResponse = True
}
U.addResponse $ LaunchResponse res
return $ Just GHCiRun_DebugRun