{-# OPTIONS_GHC -Wno-partial-fields #-}

module CodeGen.RunResult where

import CodeGen.TimedValue (Nanoseconds)
import Data.Text (Text)

data RunResult
  = Success
      { RunResult -> Text
stdout :: Text,
        RunResult -> Nanoseconds
compTime :: Nanoseconds,
        RunResult -> Nanoseconds
runTime :: Nanoseconds
      }
  | CompilationError
      { RunResult -> Text
compErrMsg :: Text,
        compTime :: Nanoseconds
      }
  | RuntimeError
      { stdout :: Text,
        RunResult -> Text
stderr :: Text,
        RunResult -> Int
exitCode :: Int,
        compTime :: Nanoseconds,
        runTime :: Nanoseconds
      }
  deriving (Int -> RunResult -> ShowS
[RunResult] -> ShowS
RunResult -> String
(Int -> RunResult -> ShowS)
-> (RunResult -> String)
-> ([RunResult] -> ShowS)
-> Show RunResult
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> RunResult -> ShowS
showsPrec :: Int -> RunResult -> ShowS
$cshow :: RunResult -> String
show :: RunResult -> String
$cshowList :: [RunResult] -> ShowS
showList :: [RunResult] -> ShowS
Show)