{-# LANGUAGE GADTs #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}

module Haskell.Debug.Adapter.State.Init where

import Control.Monad.IO.Class
import Control.Monad.Except
import qualified System.Log.Logger as L
import qualified Haskell.DAP as DAP

import Haskell.Debug.Adapter.Type
import Haskell.Debug.Adapter.Constant
import Haskell.Debug.Adapter.State.Init.Initialize()
import Haskell.Debug.Adapter.State.Init.Launch()


-- |
--
instance AppStateIF InitStateData where
  -- |
  --
  entryAction :: AppState InitStateData -> AppContext ()
entryAction AppState InitStateData
InitState = do
    let msg :: [Char]
msg = [Char]
"InitState entryAction must not be called."
    [Char] -> AppContext ()
forall e (m :: * -> *) a. MonadError e m => e -> m a
throwError [Char]
msg

  -- |
  --
  exitAction :: AppState InitStateData -> AppContext ()
exitAction AppState InitStateData
InitState = do
    IO () -> AppContext ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> AppContext ()) -> IO () -> AppContext ()
forall a b. (a -> b) -> a -> b
$ [Char] -> [Char] -> IO ()
L.debugM [Char]
_LOG_APP [Char]
"InitState exitAction called."
    () -> AppContext ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()

  -- |
  --
  doActivity :: AppState InitStateData
-> WrapRequest -> AppContext (Maybe StateTransit)
doActivity AppState InitStateData
s (WrapRequest r :: Request a
r@InitializeRequest{})              = AppState InitStateData
-> Request a -> AppContext (Maybe StateTransit)
forall s r.
StateActivityIF s r =>
AppState s -> Request r -> AppContext (Maybe StateTransit)
action AppState InitStateData
s Request a
r
  doActivity AppState InitStateData
s (WrapRequest r :: Request a
r@LaunchRequest{})                  = AppState InitStateData
-> Request a -> AppContext (Maybe StateTransit)
forall s r.
StateActivityIF s r =>
AppState s -> Request r -> AppContext (Maybe StateTransit)
action AppState InitStateData
s Request a
r
  doActivity AppState InitStateData
s (WrapRequest r :: Request a
r@DisconnectRequest{})              = AppState InitStateData
-> Request a -> AppContext (Maybe StateTransit)
forall s r.
StateActivityIF s r =>
AppState s -> Request r -> AppContext (Maybe StateTransit)
action AppState InitStateData
s Request a
r
  doActivity AppState InitStateData
s (WrapRequest r :: Request a
r@PauseRequest{})                   = AppState InitStateData
-> Request a -> AppContext (Maybe StateTransit)
forall s r.
StateActivityIF s r =>
AppState s -> Request r -> AppContext (Maybe StateTransit)
action AppState InitStateData
s Request a
r
  doActivity AppState InitStateData
s (WrapRequest r :: Request a
r@TerminateRequest{})               = AppState InitStateData
-> Request a -> AppContext (Maybe StateTransit)
forall s r.
StateActivityIF s r =>
AppState s -> Request r -> AppContext (Maybe StateTransit)
action AppState InitStateData
s Request a
r
  doActivity AppState InitStateData
s (WrapRequest r :: Request a
r@SetBreakpointsRequest{})          = AppState InitStateData
-> Request a -> AppContext (Maybe StateTransit)
forall s r.
StateActivityIF s r =>
AppState s -> Request r -> AppContext (Maybe StateTransit)
action AppState InitStateData
s Request a
r
  doActivity AppState InitStateData
s (WrapRequest r :: Request a
r@SetFunctionBreakpointsRequest{})  = AppState InitStateData
-> Request a -> AppContext (Maybe StateTransit)
forall s r.
StateActivityIF s r =>
AppState s -> Request r -> AppContext (Maybe StateTransit)
action AppState InitStateData
s Request a
r
  doActivity AppState InitStateData
s (WrapRequest r :: Request a
r@SetExceptionBreakpointsRequest{}) = AppState InitStateData
-> Request a -> AppContext (Maybe StateTransit)
forall s r.
StateActivityIF s r =>
AppState s -> Request r -> AppContext (Maybe StateTransit)
action AppState InitStateData
s Request a
r
  doActivity AppState InitStateData
s (WrapRequest r :: Request a
r@ConfigurationDoneRequest{})       = AppState InitStateData
-> Request a -> AppContext (Maybe StateTransit)
forall s r.
StateActivityIF s r =>
AppState s -> Request r -> AppContext (Maybe StateTransit)
action AppState InitStateData
s Request a
r
  doActivity AppState InitStateData
s (WrapRequest r :: Request a
r@ThreadsRequest{})                 = AppState InitStateData
-> Request a -> AppContext (Maybe StateTransit)
forall s r.
StateActivityIF s r =>
AppState s -> Request r -> AppContext (Maybe StateTransit)
action AppState InitStateData
s Request a
r
  doActivity AppState InitStateData
s (WrapRequest r :: Request a
r@StackTraceRequest{})              = AppState InitStateData
-> Request a -> AppContext (Maybe StateTransit)
forall s r.
StateActivityIF s r =>
AppState s -> Request r -> AppContext (Maybe StateTransit)
action AppState InitStateData
s Request a
r
  doActivity AppState InitStateData
s (WrapRequest r :: Request a
r@ScopesRequest{})                  = AppState InitStateData
-> Request a -> AppContext (Maybe StateTransit)
forall s r.
StateActivityIF s r =>
AppState s -> Request r -> AppContext (Maybe StateTransit)
action AppState InitStateData
s Request a
r
  doActivity AppState InitStateData
s (WrapRequest r :: Request a
r@VariablesRequest{})               = AppState InitStateData
-> Request a -> AppContext (Maybe StateTransit)
forall s r.
StateActivityIF s r =>
AppState s -> Request r -> AppContext (Maybe StateTransit)
action AppState InitStateData
s Request a
r
  doActivity AppState InitStateData
s (WrapRequest r :: Request a
r@ContinueRequest{})                = AppState InitStateData
-> Request a -> AppContext (Maybe StateTransit)
forall s r.
StateActivityIF s r =>
AppState s -> Request r -> AppContext (Maybe StateTransit)
action AppState InitStateData
s Request a
r
  doActivity AppState InitStateData
s (WrapRequest r :: Request a
r@NextRequest{})                    = AppState InitStateData
-> Request a -> AppContext (Maybe StateTransit)
forall s r.
StateActivityIF s r =>
AppState s -> Request r -> AppContext (Maybe StateTransit)
action AppState InitStateData
s Request a
r
  doActivity AppState InitStateData
s (WrapRequest r :: Request a
r@StepInRequest{})                  = AppState InitStateData
-> Request a -> AppContext (Maybe StateTransit)
forall s r.
StateActivityIF s r =>
AppState s -> Request r -> AppContext (Maybe StateTransit)
action AppState InitStateData
s Request a
r
  doActivity AppState InitStateData
s (WrapRequest r :: Request a
r@EvaluateRequest{})                = AppState InitStateData
-> Request a -> AppContext (Maybe StateTransit)
forall s r.
StateActivityIF s r =>
AppState s -> Request r -> AppContext (Maybe StateTransit)
action AppState InitStateData
s Request a
r
  doActivity AppState InitStateData
s (WrapRequest r :: Request a
r@CompletionsRequest{})             = AppState InitStateData
-> Request a -> AppContext (Maybe StateTransit)
forall s r.
StateActivityIF s r =>
AppState s -> Request r -> AppContext (Maybe StateTransit)
action AppState InitStateData
s Request a
r
  doActivity AppState InitStateData
s (WrapRequest r :: Request a
r@InternalTransitRequest{})         = AppState InitStateData
-> Request a -> AppContext (Maybe StateTransit)
forall s r.
StateActivityIF s r =>
AppState s -> Request r -> AppContext (Maybe StateTransit)
action AppState InitStateData
s Request a
r
  doActivity AppState InitStateData
s (WrapRequest r :: Request a
r@InternalTerminateRequest{})       = AppState InitStateData
-> Request a -> AppContext (Maybe StateTransit)
forall s r.
StateActivityIF s r =>
AppState s -> Request r -> AppContext (Maybe StateTransit)
action AppState InitStateData
s Request a
r
  doActivity AppState InitStateData
s (WrapRequest r :: Request a
r@InternalLoadRequest{})            = AppState InitStateData
-> Request a -> AppContext (Maybe StateTransit)
forall s r.
StateActivityIF s r =>
AppState s -> Request r -> AppContext (Maybe StateTransit)
action AppState InitStateData
s Request a
r

-- |
--   default nop.
--
instance StateActivityIF InitStateData DAP.DisconnectRequest

-- |
--   default nop.
--
instance StateActivityIF InitStateData DAP.PauseRequest

-- |
--   default nop.
--
instance StateActivityIF InitStateData DAP.TerminateRequest

-- |
--   default nop.
--
instance StateActivityIF InitStateData DAP.SetBreakpointsRequest

-- |
--   default nop.
--
instance StateActivityIF InitStateData DAP.SetFunctionBreakpointsRequest

-- |
--   default nop.
--
instance StateActivityIF InitStateData DAP.SetExceptionBreakpointsRequest

-- |
--   default nop.
--
instance StateActivityIF InitStateData DAP.ConfigurationDoneRequest

-- |
--   default nop.
--
instance StateActivityIF InitStateData DAP.ThreadsRequest

-- |
--   default nop.
--
instance StateActivityIF InitStateData DAP.StackTraceRequest

-- |
--   default nop.
--
instance StateActivityIF InitStateData DAP.ScopesRequest

-- |
--   default nop.
--
instance StateActivityIF InitStateData DAP.VariablesRequest

-- |
--   default nop.
--
instance StateActivityIF InitStateData DAP.ContinueRequest

-- |
--   default nop.
--
instance StateActivityIF InitStateData DAP.NextRequest

-- |
--   default nop.
--
instance StateActivityIF InitStateData DAP.StepInRequest

-- |
--   default nop.
--
instance StateActivityIF InitStateData DAP.EvaluateRequest

-- |
--   default nop.
--
instance StateActivityIF InitStateData DAP.CompletionsRequest

-- |
--   default nop.
--
instance StateActivityIF InitStateData HdaInternalTransitRequest

-- |
--   default nop.
--
instance StateActivityIF InitStateData HdaInternalTerminateRequest

-- |
--   default nop.
--
instance StateActivityIF InitStateData HdaInternalLoadRequest