{-# LANGUAGE TypeFamilies, Rank2Types #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}

-- Performs code analysis on the GOOL code
module Drasil.GOOL.CodeInfoOO (CodeInfoOO(..)) where

import Drasil.Shared.InterfaceCommon (UnRepr(..), Body, VSBinder, Variable,
  Value, SValue, SharedProg, SharedStatement, BodySym(..), BlockSym(..),
  TypeSym(..), TypeElim(..), VariableSym(..), VariableElim(..), ValueSym(..),
  Argument(..), Literal(..), MathConstant(..), VariableValue(..),
  CommandLineArgs(..), NumericExpression(..), BooleanExpression(..),
  Comparison(..), ValueExpression(..), IndexTranslator(..), Reference(..),
  Array(..), List(..), Set(..), InternalList(..), StatementSym(..),
  AssignStatement(..), DeclStatement(..), IOStatement(..), StringStatement(..),
  FunctionSym, FuncAppStatement(..), CommentStatement(..), ControlStatement(..),
  ScopeSym(..), ParameterSym(..), MethodSym(..), VisibilitySym(..),
  BinderSym(..))
import Drasil.GOOL.InterfaceGOOL (OOProg, OOStatement, ProgramSym(..),
  FileSym(..), ModuleSym(..), ClassSym(..), OOMethodSym(..), OOTypeSym(..),
  OOVariableSym(..), SelfSym(..), AttachmentSym(..), StateVarSym(..), OOValueSym,
  OOVariableValue, OOValueExpression(..), InternalValueExp(..),
  OOFunctionSym(..), GetSet(..), OODeclStatement(..), OOFuncAppStatement(..),
  ObserverPattern(..), StrategyPattern(..))
import Drasil.Shared.CodeType (CodeType(Void))
import Drasil.Shared.AST (qualName, td, ScopeData, ScopeTag(..), sd, bindFormD)
import Drasil.Shared.CodeAnalysis (ExceptionType(..))
import Drasil.Shared.Helpers (toCode, toState)
import Drasil.Shared.State (GOOLState, MS, VS, lensGStoFS, lensFStoCS,
  lensFStoMS, lensCStoMS, lensMStoVS, lensVStoFS, lensCStoFS, modifyReturn,
  setClassName, getClassName, setModuleName, getModuleName, addClass,
  updateClassMap, addException, updateMethodExcMap, updateCallMap, addCall,
  callMapTransClosure, updateMEMWithCalls)

import Control.Monad.State (State, modify)
import qualified Control.Monad.State as S (get)
import Control.Lens.Zoom (zoom)
import Data.Maybe (fromMaybe)
import Text.PrettyPrint.HughesPJ (empty)

newtype CodeInfoOO a = CI {forall a. CodeInfoOO a -> a
unCI :: a} deriving CodeInfoOO a -> CodeInfoOO a -> Bool
(CodeInfoOO a -> CodeInfoOO a -> Bool)
-> (CodeInfoOO a -> CodeInfoOO a -> Bool) -> Eq (CodeInfoOO a)
forall a. Eq a => CodeInfoOO a -> CodeInfoOO a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => CodeInfoOO a -> CodeInfoOO a -> Bool
== :: CodeInfoOO a -> CodeInfoOO a -> Bool
$c/= :: forall a. Eq a => CodeInfoOO a -> CodeInfoOO a -> Bool
/= :: CodeInfoOO a -> CodeInfoOO a -> Bool
Eq

-- FIXME: Use DerivingVia language extension (and maybe DeriveFunctor) to
-- derive the Functor, Applicative, Monad instances for this
-- (and for JavaCode, PythonCode, etc.)
instance Functor CodeInfoOO where
  fmap :: forall a b. (a -> b) -> CodeInfoOO a -> CodeInfoOO b
fmap a -> b
f (CI a
x) = b -> CodeInfoOO b
forall a. a -> CodeInfoOO a
CI (a -> b
f a
x)

instance Applicative CodeInfoOO where
  pure :: forall a. a -> CodeInfoOO a
pure = a -> CodeInfoOO a
forall a. a -> CodeInfoOO a
CI
  (CI a -> b
f) <*> :: forall a b. CodeInfoOO (a -> b) -> CodeInfoOO a -> CodeInfoOO b
<*> (CI a
x) = b -> CodeInfoOO b
forall a. a -> CodeInfoOO a
CI (a -> b
f a
x)

instance Monad CodeInfoOO where
  CI a
x >>= :: forall a b. CodeInfoOO a -> (a -> CodeInfoOO b) -> CodeInfoOO b
>>= a -> CodeInfoOO b
f = a -> CodeInfoOO b
f a
x

instance SharedProg CodeInfoOO () () ()
instance SharedStatement CodeInfoOO ()
instance OOStatement CodeInfoOO ()
instance OOProg CodeInfoOO () () () () () GOOLState

instance UnRepr CodeInfoOO contents where
  unRepr :: CodeInfoOO contents -> contents
unRepr = CodeInfoOO contents -> contents
forall a. CodeInfoOO a -> a
unCI

instance ProgramSym CodeInfoOO () () () () () GOOLState where
  prog :: String
-> String
-> [FS (CodeInfoOO File)]
-> GSProgram CodeInfoOO GOOLState
prog String
_ String
_ [FS (CodeInfoOO File)]
fs = do
    (FS (CodeInfoOO File)
 -> StateT GOOLState Identity (CodeInfoOO File))
-> [FS (CodeInfoOO File)] -> StateT GOOLState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (LensLike'
  (Zoomed (StateT FileState Identity) (CodeInfoOO File))
  GOOLState
  FileState
-> FS (CodeInfoOO File)
-> StateT GOOLState Identity (CodeInfoOO File)
forall c.
LensLike'
  (Zoomed (StateT FileState Identity) c) GOOLState FileState
-> StateT FileState Identity c -> StateT GOOLState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT FileState Identity) (CodeInfoOO File))
  GOOLState
  FileState
(FileState -> Focusing Identity (CodeInfoOO File) FileState)
-> GOOLState -> Focusing Identity (CodeInfoOO File) GOOLState
Lens' GOOLState FileState
lensGStoFS) [FS (CodeInfoOO File)]
fs
    (GOOLState -> GOOLState) -> StateT GOOLState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (GOOLState -> GOOLState
updateMEMWithCalls (GOOLState -> GOOLState)
-> (GOOLState -> GOOLState) -> GOOLState -> GOOLState
forall b c a. (b -> c) -> (a -> b) -> a -> c
. GOOLState -> GOOLState
callMapTransClosure)
    GOOLState
s <- StateT GOOLState Identity GOOLState
forall s (m :: * -> *). MonadState s m => m s
S.get
    CodeInfoOO GOOLState -> GSProgram CodeInfoOO GOOLState
forall a s. a -> State s a
toState (CodeInfoOO GOOLState -> GSProgram CodeInfoOO GOOLState)
-> CodeInfoOO GOOLState -> GSProgram CodeInfoOO GOOLState
forall a b. (a -> b) -> a -> b
$ GOOLState -> CodeInfoOO GOOLState
forall (r :: * -> *) a. Monad r => a -> r a
toCode GOOLState
s

instance FileSym CodeInfoOO () () () () () where
  fileDoc :: FS (CodeInfoOO Module) -> FS (CodeInfoOO File)
fileDoc FS (CodeInfoOO Module)
m = do
    CodeInfoOO Module
_ <- FS (CodeInfoOO Module)
m
    CodeInfoOO File -> FS (CodeInfoOO File)
forall a. a -> StateT FileState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO File -> FS (CodeInfoOO File))
-> CodeInfoOO File -> FS (CodeInfoOO File)
forall a b. (a -> b) -> a -> b
$ File -> CodeInfoOO File
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (File -> CodeInfoOO File) -> File -> CodeInfoOO File
forall a b. (a -> b) -> a -> b
$ String -> File
forall a. HasCallStack => String -> a
error String
"[fileDoc] The return value of this isn't used, and the thunk shouldn't fire."

  docMod :: String
-> String
-> [String]
-> String
-> FS (CodeInfoOO File)
-> FS (CodeInfoOO File)
docMod String
_ String
_ [String]
_ String
_ FS (CodeInfoOO File)
fl = do
    CodeInfoOO File
_ <- FS (CodeInfoOO File)
fl
    CodeInfoOO File -> FS (CodeInfoOO File)
forall a. a -> StateT FileState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO File -> FS (CodeInfoOO File))
-> CodeInfoOO File -> FS (CodeInfoOO File)
forall a b. (a -> b) -> a -> b
$ File -> CodeInfoOO File
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (File -> CodeInfoOO File) -> File -> CodeInfoOO File
forall a b. (a -> b) -> a -> b
$ String -> File
forall a. HasCallStack => String -> a
error String
"[docMod] The return value of this isn't used, and the thunk shouldn't fire."

instance AttachmentSym CodeInfoOO () where
  classLevel :: CodeInfoOO ()
classLevel  = () -> CodeInfoOO ()
forall (r :: * -> *) a. Monad r => a -> r a
toCode ()
  instanceLevel :: CodeInfoOO ()
instanceLevel = () -> CodeInfoOO ()
forall (r :: * -> *) a. Monad r => a -> r a
toCode ()

instance BodySym CodeInfoOO () where
  body :: [MS (CodeInfoOO Body)] -> MS (CodeInfoOO Body)
body [MS (CodeInfoOO Body)]
b = do
    [MS (CodeInfoOO Body)] -> StateT MethodState Identity ()
forall (t :: * -> *) (m :: * -> *) a.
(Foldable t, Monad m) =>
t (m a) -> m ()
sequence_ [MS (CodeInfoOO Body)]
b
    CodeInfoOO Body -> MS (CodeInfoOO Body)
forall a. a -> StateT MethodState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Body -> MS (CodeInfoOO Body))
-> CodeInfoOO Body -> MS (CodeInfoOO Body)
forall a b. (a -> b) -> a -> b
$ Body -> CodeInfoOO Body
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Body -> CodeInfoOO Body) -> Body -> CodeInfoOO Body
forall a b. (a -> b) -> a -> b
$ String -> Body
forall a. HasCallStack => String -> a
error String
"[body] The return value of this isn't used, and the thunk shouldn't fire."

  addComments :: String -> MS (CodeInfoOO Body) -> MS (CodeInfoOO Body)
addComments String
_ MS (CodeInfoOO Body)
_ = CodeInfoOO Body -> MS (CodeInfoOO Body)
forall a. a -> StateT MethodState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Body -> MS (CodeInfoOO Body))
-> CodeInfoOO Body -> MS (CodeInfoOO Body)
forall a b. (a -> b) -> a -> b
$ Body -> CodeInfoOO Body
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Body -> CodeInfoOO Body) -> Body -> CodeInfoOO Body
forall a b. (a -> b) -> a -> b
$ String -> Body
forall a. HasCallStack => String -> a
error String
"[addComments] The return value of this isn't used, and the thunk shouldn't fire."

instance BlockSym CodeInfoOO () where
  block :: [MS (CodeInfoOO ())] -> MS (CodeInfoOO Body)
block [MS (CodeInfoOO ())]
b = do
    [MS (CodeInfoOO ())] -> StateT MethodState Identity ()
forall (t :: * -> *) (m :: * -> *) a.
(Foldable t, Monad m) =>
t (m a) -> m ()
sequence_ [MS (CodeInfoOO ())]
b
    CodeInfoOO Body -> MS (CodeInfoOO Body)
forall a. a -> StateT MethodState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Body -> MS (CodeInfoOO Body))
-> CodeInfoOO Body -> MS (CodeInfoOO Body)
forall a b. (a -> b) -> a -> b
$ Body -> CodeInfoOO Body
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Body -> CodeInfoOO Body) -> Body -> CodeInfoOO Body
forall a b. (a -> b) -> a -> b
$ String -> Body
forall a. HasCallStack => String -> a
error String
"[block] The return value of this isn't used, and the thunk shouldn't fire."

instance TypeSym CodeInfoOO where
  bool :: VS (CodeInfoOO TypeData)
bool            = CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO TypeData -> VS (CodeInfoOO TypeData))
-> CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a b. (a -> b) -> a -> b
$ TypeData -> CodeInfoOO TypeData
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (TypeData -> CodeInfoOO TypeData)
-> TypeData -> CodeInfoOO TypeData
forall a b. (a -> b) -> a -> b
$ String -> TypeData
forall a. HasCallStack => String -> a
error String
"[bool] The return value of this isn't used, and the thunk shouldn't fire."
  int :: VS (CodeInfoOO TypeData)
int             = CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO TypeData -> VS (CodeInfoOO TypeData))
-> CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a b. (a -> b) -> a -> b
$ TypeData -> CodeInfoOO TypeData
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (TypeData -> CodeInfoOO TypeData)
-> TypeData -> CodeInfoOO TypeData
forall a b. (a -> b) -> a -> b
$ String -> TypeData
forall a. HasCallStack => String -> a
error String
"[int] The return value of this isn't used, and the thunk shouldn't fire."
  float :: VS (CodeInfoOO TypeData)
float           = CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO TypeData -> VS (CodeInfoOO TypeData))
-> CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a b. (a -> b) -> a -> b
$ TypeData -> CodeInfoOO TypeData
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (TypeData -> CodeInfoOO TypeData)
-> TypeData -> CodeInfoOO TypeData
forall a b. (a -> b) -> a -> b
$ String -> TypeData
forall a. HasCallStack => String -> a
error String
"[float] The return value of this isn't used, and the thunk shouldn't fire."
  double :: VS (CodeInfoOO TypeData)
double          = CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO TypeData -> VS (CodeInfoOO TypeData))
-> CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a b. (a -> b) -> a -> b
$ TypeData -> CodeInfoOO TypeData
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (TypeData -> CodeInfoOO TypeData)
-> TypeData -> CodeInfoOO TypeData
forall a b. (a -> b) -> a -> b
$ String -> TypeData
forall a. HasCallStack => String -> a
error String
"[double] The return value of this isn't used, and the thunk shouldn't fire."
  char :: VS (CodeInfoOO TypeData)
char            = CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO TypeData -> VS (CodeInfoOO TypeData))
-> CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a b. (a -> b) -> a -> b
$ TypeData -> CodeInfoOO TypeData
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (TypeData -> CodeInfoOO TypeData)
-> TypeData -> CodeInfoOO TypeData
forall a b. (a -> b) -> a -> b
$ String -> TypeData
forall a. HasCallStack => String -> a
error String
"[char] The return value of this isn't used, and the thunk shouldn't fire."
  string :: VS (CodeInfoOO TypeData)
string          = CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO TypeData -> VS (CodeInfoOO TypeData))
-> CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a b. (a -> b) -> a -> b
$ TypeData -> CodeInfoOO TypeData
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (TypeData -> CodeInfoOO TypeData)
-> TypeData -> CodeInfoOO TypeData
forall a b. (a -> b) -> a -> b
$ String -> TypeData
forall a. HasCallStack => String -> a
error String
"[string] The return value of this isn't used, and the thunk shouldn't fire."
  infile :: VS (CodeInfoOO TypeData)
infile          = CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO TypeData -> VS (CodeInfoOO TypeData))
-> CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a b. (a -> b) -> a -> b
$ TypeData -> CodeInfoOO TypeData
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (TypeData -> CodeInfoOO TypeData)
-> TypeData -> CodeInfoOO TypeData
forall a b. (a -> b) -> a -> b
$ String -> TypeData
forall a. HasCallStack => String -> a
error String
"[infile] The return value of this isn't used, and the thunk shouldn't fire."
  outfile :: VS (CodeInfoOO TypeData)
outfile         = CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO TypeData -> VS (CodeInfoOO TypeData))
-> CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a b. (a -> b) -> a -> b
$ TypeData -> CodeInfoOO TypeData
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (TypeData -> CodeInfoOO TypeData)
-> TypeData -> CodeInfoOO TypeData
forall a b. (a -> b) -> a -> b
$ String -> TypeData
forall a. HasCallStack => String -> a
error String
"[outfile] The return value of this isn't used, and the thunk shouldn't fire."
  referenceType :: VS (CodeInfoOO TypeData) -> VS (CodeInfoOO TypeData)
referenceType VS (CodeInfoOO TypeData)
_ = CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO TypeData -> VS (CodeInfoOO TypeData))
-> CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a b. (a -> b) -> a -> b
$ TypeData -> CodeInfoOO TypeData
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (TypeData -> CodeInfoOO TypeData)
-> TypeData -> CodeInfoOO TypeData
forall a b. (a -> b) -> a -> b
$ String -> TypeData
forall a. HasCallStack => String -> a
error String
"[referenceType] The return value of this isn't used, and the thunk shouldn't fire."
  setType :: VS (CodeInfoOO TypeData) -> VS (CodeInfoOO TypeData)
setType       VS (CodeInfoOO TypeData)
_ = CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO TypeData -> VS (CodeInfoOO TypeData))
-> CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a b. (a -> b) -> a -> b
$ TypeData -> CodeInfoOO TypeData
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (TypeData -> CodeInfoOO TypeData)
-> TypeData -> CodeInfoOO TypeData
forall a b. (a -> b) -> a -> b
$ String -> TypeData
forall a. HasCallStack => String -> a
error String
"[setType] The return value of this isn't used, and the thunk shouldn't fire."
  listType :: VS (CodeInfoOO TypeData) -> VS (CodeInfoOO TypeData)
listType      VS (CodeInfoOO TypeData)
_ = CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO TypeData -> VS (CodeInfoOO TypeData))
-> CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a b. (a -> b) -> a -> b
$ TypeData -> CodeInfoOO TypeData
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (TypeData -> CodeInfoOO TypeData)
-> TypeData -> CodeInfoOO TypeData
forall a b. (a -> b) -> a -> b
$ String -> TypeData
forall a. HasCallStack => String -> a
error String
"[listType] The return value of this isn't used, and the thunk shouldn't fire."
  arrayType :: VS (CodeInfoOO TypeData) -> VS (CodeInfoOO TypeData)
arrayType     VS (CodeInfoOO TypeData)
_ = CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO TypeData -> VS (CodeInfoOO TypeData))
-> CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a b. (a -> b) -> a -> b
$ TypeData -> CodeInfoOO TypeData
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (TypeData -> CodeInfoOO TypeData)
-> TypeData -> CodeInfoOO TypeData
forall a b. (a -> b) -> a -> b
$ String -> TypeData
forall a. HasCallStack => String -> a
error String
"[arrayType] The return value of this isn't used, and the thunk shouldn't fire."
  innerType :: VS (CodeInfoOO TypeData) -> VS (CodeInfoOO TypeData)
innerType     VS (CodeInfoOO TypeData)
_ = CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO TypeData -> VS (CodeInfoOO TypeData))
-> CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a b. (a -> b) -> a -> b
$ TypeData -> CodeInfoOO TypeData
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (TypeData -> CodeInfoOO TypeData)
-> TypeData -> CodeInfoOO TypeData
forall a b. (a -> b) -> a -> b
$ String -> TypeData
forall a. HasCallStack => String -> a
error String
"[innerType] The return value of this isn't used, and the thunk shouldn't fire."
  funcType :: [VS (CodeInfoOO TypeData)]
-> VS (CodeInfoOO TypeData) -> VS (CodeInfoOO TypeData)
funcType    [VS (CodeInfoOO TypeData)]
_ VS (CodeInfoOO TypeData)
_ = CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO TypeData -> VS (CodeInfoOO TypeData))
-> CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a b. (a -> b) -> a -> b
$ TypeData -> CodeInfoOO TypeData
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (TypeData -> CodeInfoOO TypeData)
-> TypeData -> CodeInfoOO TypeData
forall a b. (a -> b) -> a -> b
$ String -> TypeData
forall a. HasCallStack => String -> a
error String
"[funcType] The return value of this isn't used, and the thunk shouldn't fire."
  void :: VS (CodeInfoOO TypeData)
void            = CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO TypeData -> VS (CodeInfoOO TypeData))
-> CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a b. (a -> b) -> a -> b
$ TypeData -> CodeInfoOO TypeData
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (TypeData -> CodeInfoOO TypeData)
-> TypeData -> CodeInfoOO TypeData
forall a b. (a -> b) -> a -> b
$ String -> TypeData
forall a. HasCallStack => String -> a
error String
"[void] The return value of this isn't used, and the thunk shouldn't fire."

instance OOTypeSym CodeInfoOO where
  obj :: String -> VS (CodeInfoOO TypeData)
obj             String
_ = CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO TypeData -> VS (CodeInfoOO TypeData))
-> CodeInfoOO TypeData -> VS (CodeInfoOO TypeData)
forall a b. (a -> b) -> a -> b
$ TypeData -> CodeInfoOO TypeData
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (TypeData -> CodeInfoOO TypeData)
-> TypeData -> CodeInfoOO TypeData
forall a b. (a -> b) -> a -> b
$ String -> TypeData
forall a. HasCallStack => String -> a
error String
"[obj] The return value of this isn't used, and the thunk shouldn't fire."

instance TypeElim CodeInfoOO where
  getCodeType :: CodeInfoOO TypeData -> CodeType
getCodeType CodeInfoOO TypeData
_ = CodeType
Void

instance ScopeSym CodeInfoOO where
  global :: CodeInfoOO ScopeData
global = CodeInfoOO ScopeData
noInfoScope
  mainFn :: CodeInfoOO ScopeData
mainFn = CodeInfoOO ScopeData
noInfoScope
  local :: CodeInfoOO ScopeData
local = CodeInfoOO ScopeData
noInfoScope

instance VariableSym CodeInfoOO where
  var :: String -> VS (CodeInfoOO TypeData) -> SVariable CodeInfoOO
var       String
_ VS (CodeInfoOO TypeData)
_ = CodeInfoOO Variable -> SVariable CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Variable -> SVariable CodeInfoOO)
-> CodeInfoOO Variable -> SVariable CodeInfoOO
forall a b. (a -> b) -> a -> b
$ Variable -> CodeInfoOO Variable
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Variable -> CodeInfoOO Variable)
-> Variable -> CodeInfoOO Variable
forall a b. (a -> b) -> a -> b
$ String -> Variable
forall a. HasCallStack => String -> a
error String
"[var] The return value of this isn't used, and the thunk shouldn't fire."
  constant :: String -> VS (CodeInfoOO TypeData) -> SVariable CodeInfoOO
constant  String
_ VS (CodeInfoOO TypeData)
_ = CodeInfoOO Variable -> SVariable CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Variable -> SVariable CodeInfoOO)
-> CodeInfoOO Variable -> SVariable CodeInfoOO
forall a b. (a -> b) -> a -> b
$ Variable -> CodeInfoOO Variable
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Variable -> CodeInfoOO Variable)
-> Variable -> CodeInfoOO Variable
forall a b. (a -> b) -> a -> b
$ String -> Variable
forall a. HasCallStack => String -> a
error String
"[constant] The return value of this isn't used, and the thunk shouldn't fire."
  extVar :: String
-> String -> VS (CodeInfoOO TypeData) -> SVariable CodeInfoOO
extVar  String
_ String
_ VS (CodeInfoOO TypeData)
_ = CodeInfoOO Variable -> SVariable CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Variable -> SVariable CodeInfoOO)
-> CodeInfoOO Variable -> SVariable CodeInfoOO
forall a b. (a -> b) -> a -> b
$ Variable -> CodeInfoOO Variable
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Variable -> CodeInfoOO Variable)
-> Variable -> CodeInfoOO Variable
forall a b. (a -> b) -> a -> b
$ String -> Variable
forall a. HasCallStack => String -> a
error String
"[extVar] The return value of this isn't used, and the thunk shouldn't fire."

instance OOVariableSym CodeInfoOO where
  classVar :: String -> VS (CodeInfoOO TypeData) -> SVariable CodeInfoOO
classVar String
_ VS (CodeInfoOO TypeData)
_ = CodeInfoOO Variable -> SVariable CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Variable -> SVariable CodeInfoOO)
-> CodeInfoOO Variable -> SVariable CodeInfoOO
forall a b. (a -> b) -> a -> b
$ Variable -> CodeInfoOO Variable
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Variable -> CodeInfoOO Variable)
-> Variable -> CodeInfoOO Variable
forall a b. (a -> b) -> a -> b
$ String -> Variable
forall a. HasCallStack => String -> a
error String
"[classVar] The return value of this isn't used, and the thunk shouldn't fire."
  classConst :: String -> VS (CodeInfoOO TypeData) -> SVariable CodeInfoOO
classConst String
_ VS (CodeInfoOO TypeData)
_ = CodeInfoOO Variable -> SVariable CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Variable -> SVariable CodeInfoOO)
-> CodeInfoOO Variable -> SVariable CodeInfoOO
forall a b. (a -> b) -> a -> b
$ Variable -> CodeInfoOO Variable
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Variable -> CodeInfoOO Variable)
-> Variable -> CodeInfoOO Variable
forall a b. (a -> b) -> a -> b
$ String -> Variable
forall a. HasCallStack => String -> a
error String
"[classConst] The return value of this isn't used, and the thunk shouldn't fire."
  classVarAccess :: VS (CodeInfoOO TypeData)
-> SVariable CodeInfoOO -> SVariable CodeInfoOO
classVarAccess    VS (CodeInfoOO TypeData)
_ SVariable CodeInfoOO
_   = CodeInfoOO Variable -> SVariable CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Variable -> SVariable CodeInfoOO)
-> CodeInfoOO Variable -> SVariable CodeInfoOO
forall a b. (a -> b) -> a -> b
$ Variable -> CodeInfoOO Variable
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Variable -> CodeInfoOO Variable)
-> Variable -> CodeInfoOO Variable
forall a b. (a -> b) -> a -> b
$ String -> Variable
forall a. HasCallStack => String -> a
error String
"[classVarAccess] The return value of this isn't used, and the thunk shouldn't fire."
  extClassVarAccess :: VS (CodeInfoOO TypeData)
-> SVariable CodeInfoOO -> SVariable CodeInfoOO
extClassVarAccess VS (CodeInfoOO TypeData)
_ SVariable CodeInfoOO
_   = CodeInfoOO Variable -> SVariable CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Variable -> SVariable CodeInfoOO)
-> CodeInfoOO Variable -> SVariable CodeInfoOO
forall a b. (a -> b) -> a -> b
$ Variable -> CodeInfoOO Variable
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Variable -> CodeInfoOO Variable)
-> Variable -> CodeInfoOO Variable
forall a b. (a -> b) -> a -> b
$ String -> Variable
forall a. HasCallStack => String -> a
error String
"[extClassVarAccess] The return value of this isn't used, and the thunk shouldn't fire."
  instanceVarAccess :: SValue CodeInfoOO -> SVariable CodeInfoOO -> SVariable CodeInfoOO
instanceVarAccess      SValue CodeInfoOO
_ SVariable CodeInfoOO
_   = CodeInfoOO Variable -> SVariable CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Variable -> SVariable CodeInfoOO)
-> CodeInfoOO Variable -> SVariable CodeInfoOO
forall a b. (a -> b) -> a -> b
$ Variable -> CodeInfoOO Variable
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Variable -> CodeInfoOO Variable)
-> Variable -> CodeInfoOO Variable
forall a b. (a -> b) -> a -> b
$ String -> Variable
forall a. HasCallStack => String -> a
error String
"[instanceVarAccess] The return value of this isn't used, and the thunk shouldn't fire."

instance SelfSym CodeInfoOO where
  self :: SVariable CodeInfoOO
self              = CodeInfoOO Variable -> SVariable CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Variable -> SVariable CodeInfoOO)
-> CodeInfoOO Variable -> SVariable CodeInfoOO
forall a b. (a -> b) -> a -> b
$ Variable -> CodeInfoOO Variable
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Variable -> CodeInfoOO Variable)
-> Variable -> CodeInfoOO Variable
forall a b. (a -> b) -> a -> b
$ String -> Variable
forall a. HasCallStack => String -> a
error String
"[self] The return value of this isn't used, and the thunk shouldn't fire."

instance VariableElim CodeInfoOO where
  variableName :: CodeInfoOO Variable -> String
variableName CodeInfoOO Variable
_ = String
""
  variableType :: CodeInfoOO Variable -> CodeInfoOO TypeData
variableType CodeInfoOO Variable
_ = TypeData -> CodeInfoOO TypeData
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (TypeData -> CodeInfoOO TypeData)
-> TypeData -> CodeInfoOO TypeData
forall a b. (a -> b) -> a -> b
$ String -> TypeData
forall a. HasCallStack => String -> a
error String
"[variableType] The return value of this isn't used, and the thunk shouldn't fire."

instance ValueSym CodeInfoOO where
  valueType :: CodeInfoOO Value -> CodeInfoOO TypeData
valueType CodeInfoOO Value
_ = TypeData -> CodeInfoOO TypeData
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (TypeData -> CodeInfoOO TypeData)
-> TypeData -> CodeInfoOO TypeData
forall a b. (a -> b) -> a -> b
$ String -> TypeData
forall a. HasCallStack => String -> a
error String
"[valueType] The return value of this isn't used, and the thunk shouldn't fire."

instance OOValueSym CodeInfoOO

instance Argument CodeInfoOO where
  pointerArg :: SValue CodeInfoOO -> SValue CodeInfoOO
pointerArg = SValue CodeInfoOO -> SValue CodeInfoOO
forall a. a -> a
id

instance Literal CodeInfoOO where
  litTrue :: SValue CodeInfoOO
litTrue     = CodeInfoOO Value -> SValue CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Value -> SValue CodeInfoOO)
-> CodeInfoOO Value -> SValue CodeInfoOO
forall a b. (a -> b) -> a -> b
$ String -> CodeInfoOO Value
forall a. HasCallStack => String -> a
error String
"[litTrue] The return value of this isn't used, and the thunk shouldn't fire."
  litFalse :: SValue CodeInfoOO
litFalse    = CodeInfoOO Value -> SValue CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Value -> SValue CodeInfoOO)
-> CodeInfoOO Value -> SValue CodeInfoOO
forall a b. (a -> b) -> a -> b
$ String -> CodeInfoOO Value
forall a. HasCallStack => String -> a
error String
"[litFalse] The return value of this isn't used, and the thunk shouldn't fire."
  litChar :: Char -> SValue CodeInfoOO
litChar   Char
_ = CodeInfoOO Value -> SValue CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Value -> SValue CodeInfoOO)
-> CodeInfoOO Value -> SValue CodeInfoOO
forall a b. (a -> b) -> a -> b
$ String -> CodeInfoOO Value
forall a. HasCallStack => String -> a
error String
"[litChar] The return value of this isn't used, and the thunk shouldn't fire."
  litDouble :: Double -> SValue CodeInfoOO
litDouble Double
_ = CodeInfoOO Value -> SValue CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Value -> SValue CodeInfoOO)
-> CodeInfoOO Value -> SValue CodeInfoOO
forall a b. (a -> b) -> a -> b
$ String -> CodeInfoOO Value
forall a. HasCallStack => String -> a
error String
"[litDouble] The return value of this isn't used, and the thunk shouldn't fire."
  litFloat :: Float -> SValue CodeInfoOO
litFloat  Float
_ = CodeInfoOO Value -> SValue CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Value -> SValue CodeInfoOO)
-> CodeInfoOO Value -> SValue CodeInfoOO
forall a b. (a -> b) -> a -> b
$ String -> CodeInfoOO Value
forall a. HasCallStack => String -> a
error String
"[litFloat] The return value of this isn't used, and the thunk shouldn't fire."
  litInt :: Integer -> SValue CodeInfoOO
litInt    Integer
_ = CodeInfoOO Value -> SValue CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Value -> SValue CodeInfoOO)
-> CodeInfoOO Value -> SValue CodeInfoOO
forall a b. (a -> b) -> a -> b
$ String -> CodeInfoOO Value
forall a. HasCallStack => String -> a
error String
"[litInt] The return value of this isn't used, and the thunk shouldn't fire."
  litString :: String -> SValue CodeInfoOO
litString String
_ = CodeInfoOO Value -> SValue CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Value -> SValue CodeInfoOO)
-> CodeInfoOO Value -> SValue CodeInfoOO
forall a b. (a -> b) -> a -> b
$ String -> CodeInfoOO Value
forall a. HasCallStack => String -> a
error String
"[litString] The return value of this isn't used, and the thunk shouldn't fire."
  litArray :: VS (CodeInfoOO TypeData)
-> [SValue CodeInfoOO] -> SValue CodeInfoOO
litArray  VS (CodeInfoOO TypeData)
_ = [SValue CodeInfoOO] -> SValue CodeInfoOO
forall a b c. [State a (CodeInfoOO b)] -> State a (CodeInfoOO c)
executeListErr
  litList :: VS (CodeInfoOO TypeData)
-> [SValue CodeInfoOO] -> SValue CodeInfoOO
litList   VS (CodeInfoOO TypeData)
_ = [SValue CodeInfoOO] -> SValue CodeInfoOO
forall a b c. [State a (CodeInfoOO b)] -> State a (CodeInfoOO c)
executeListErr
  litSet :: VS (CodeInfoOO TypeData)
-> [SValue CodeInfoOO] -> SValue CodeInfoOO
litSet   VS (CodeInfoOO TypeData)
_ = [SValue CodeInfoOO] -> SValue CodeInfoOO
forall a b c. [State a (CodeInfoOO b)] -> State a (CodeInfoOO c)
executeListErr

instance MathConstant CodeInfoOO where
  pi :: SValue CodeInfoOO
pi = CodeInfoOO Value -> SValue CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Value -> SValue CodeInfoOO)
-> CodeInfoOO Value -> SValue CodeInfoOO
forall a b. (a -> b) -> a -> b
$ String -> CodeInfoOO Value
forall a. HasCallStack => String -> a
error String
"[pi] The return value of this isn't used, and the thunk shouldn't fire."

instance VariableValue CodeInfoOO where
  valueOf :: SVariable CodeInfoOO -> SValue CodeInfoOO
valueOf SVariable CodeInfoOO
_ = CodeInfoOO Value -> SValue CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Value -> SValue CodeInfoOO)
-> CodeInfoOO Value -> SValue CodeInfoOO
forall a b. (a -> b) -> a -> b
$ String -> CodeInfoOO Value
forall a. HasCallStack => String -> a
error String
"[valueOf] The return value of this isn't used, and the thunk shouldn't fire."

instance OOVariableValue CodeInfoOO

instance CommandLineArgs CodeInfoOO where
  arg :: Integer -> SValue CodeInfoOO
arg       Integer
_ = CodeInfoOO Value -> SValue CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Value -> SValue CodeInfoOO)
-> CodeInfoOO Value -> SValue CodeInfoOO
forall a b. (a -> b) -> a -> b
$ String -> CodeInfoOO Value
forall a. HasCallStack => String -> a
error String
"[arg] The return value of this isn't used, and the thunk shouldn't fire."
  argsList :: SValue CodeInfoOO
argsList    = CodeInfoOO Value -> SValue CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Value -> SValue CodeInfoOO)
-> CodeInfoOO Value -> SValue CodeInfoOO
forall a b. (a -> b) -> a -> b
$ String -> CodeInfoOO Value
forall a. HasCallStack => String -> a
error String
"[argsList] The return value of this isn't used, and the thunk shouldn't fire."
  argExists :: Integer -> SValue CodeInfoOO
argExists Integer
_ = CodeInfoOO Value -> SValue CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Value -> SValue CodeInfoOO)
-> CodeInfoOO Value -> SValue CodeInfoOO
forall a b. (a -> b) -> a -> b
$ String -> CodeInfoOO Value
forall a. HasCallStack => String -> a
error String
"[argExists] The return value of this isn't used, and the thunk shouldn't fire."

instance NumericExpression CodeInfoOO where
  #~ :: SValue CodeInfoOO -> SValue CodeInfoOO
(#~)  = SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  #/^ :: SValue CodeInfoOO -> SValue CodeInfoOO
(#/^) = SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  #| :: SValue CodeInfoOO -> SValue CodeInfoOO
(#|)  = SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  #+ :: SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
(#+)  = SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c d.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c) -> State a (CodeInfoOO d)
execute2
  #- :: SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
(#-)  = SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c d.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c) -> State a (CodeInfoOO d)
execute2
  #* :: SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
(#*)  = SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c d.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c) -> State a (CodeInfoOO d)
execute2
  #/ :: SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
(#/)  = SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c d.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c) -> State a (CodeInfoOO d)
execute2
  #% :: SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
(#%)  = SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c d.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c) -> State a (CodeInfoOO d)
execute2
  #^ :: SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
(#^)  = SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c d.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c) -> State a (CodeInfoOO d)
execute2

  log :: SValue CodeInfoOO -> SValue CodeInfoOO
log    = SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  ln :: SValue CodeInfoOO -> SValue CodeInfoOO
ln     = SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  exp :: SValue CodeInfoOO -> SValue CodeInfoOO
exp    = SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  sin :: SValue CodeInfoOO -> SValue CodeInfoOO
sin    = SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  cos :: SValue CodeInfoOO -> SValue CodeInfoOO
cos    = SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  tan :: SValue CodeInfoOO -> SValue CodeInfoOO
tan    = SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  csc :: SValue CodeInfoOO -> SValue CodeInfoOO
csc    = SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  sec :: SValue CodeInfoOO -> SValue CodeInfoOO
sec    = SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  cot :: SValue CodeInfoOO -> SValue CodeInfoOO
cot    = SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  arcsin :: SValue CodeInfoOO -> SValue CodeInfoOO
arcsin = SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  arccos :: SValue CodeInfoOO -> SValue CodeInfoOO
arccos = SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  arctan :: SValue CodeInfoOO -> SValue CodeInfoOO
arctan = SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  floor :: SValue CodeInfoOO -> SValue CodeInfoOO
floor  = SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  ceil :: SValue CodeInfoOO -> SValue CodeInfoOO
ceil   = SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1

instance BooleanExpression CodeInfoOO where
  ?! :: SValue CodeInfoOO -> SValue CodeInfoOO
(?!)  = SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  ?&& :: SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
(?&&) = SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c d.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c) -> State a (CodeInfoOO d)
execute2
  ?|| :: SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
(?||) = SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c d.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c) -> State a (CodeInfoOO d)
execute2

instance Comparison CodeInfoOO where
  ?< :: SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
(?<)  = SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c d.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c) -> State a (CodeInfoOO d)
execute2
  ?<= :: SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
(?<=) = SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c d.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c) -> State a (CodeInfoOO d)
execute2
  ?> :: SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
(?>)  = SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c d.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c) -> State a (CodeInfoOO d)
execute2
  ?>= :: SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
(?>=) = SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c d.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c) -> State a (CodeInfoOO d)
execute2
  ?== :: SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
(?==) = SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c d.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c) -> State a (CodeInfoOO d)
execute2
  ?!= :: SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
(?!=) = SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c d.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c) -> State a (CodeInfoOO d)
execute2

instance ValueExpression CodeInfoOO where
  inlineIf :: SValue CodeInfoOO
-> SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
inlineIf = SValue CodeInfoOO
-> SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c d e.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c)
-> State a (CodeInfoOO d)
-> State a (CodeInfoOO e)
execute3
  funcAppMixedArgs :: MixedCall CodeInfoOO
funcAppMixedArgs String
n VS (CodeInfoOO TypeData)
_ = do
    NamedArgs CodeInfoOO -> SValue CodeInfoOO
_ <- String
-> [SValue CodeInfoOO] -> NamedArgs CodeInfoOO -> SValue CodeInfoOO
currModCall String
n
    (NamedArgs CodeInfoOO -> SValue CodeInfoOO)
-> [SValue CodeInfoOO] -> NamedArgs CodeInfoOO -> SValue CodeInfoOO
forall a. a -> [SValue CodeInfoOO] -> a
forall (m :: * -> *) a. Monad m => a -> m a
return ((NamedArgs CodeInfoOO -> SValue CodeInfoOO)
 -> [SValue CodeInfoOO]
 -> NamedArgs CodeInfoOO
 -> SValue CodeInfoOO)
-> (NamedArgs CodeInfoOO -> SValue CodeInfoOO)
-> [SValue CodeInfoOO]
-> NamedArgs CodeInfoOO
-> SValue CodeInfoOO
forall a b. (a -> b) -> a -> b
$ SValue CodeInfoOO -> NamedArgs CodeInfoOO -> SValue CodeInfoOO
forall a. a -> NamedArgs CodeInfoOO -> a
forall (m :: * -> *) a. Monad m => a -> m a
return (SValue CodeInfoOO -> NamedArgs CodeInfoOO -> SValue CodeInfoOO)
-> SValue CodeInfoOO -> NamedArgs CodeInfoOO -> SValue CodeInfoOO
forall a b. (a -> b) -> a -> b
$ CodeInfoOO Value -> SValue CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Value -> SValue CodeInfoOO)
-> CodeInfoOO Value -> SValue CodeInfoOO
forall a b. (a -> b) -> a -> b
$ String -> CodeInfoOO Value
forall a. HasCallStack => String -> a
error String
"[funcAppMixedArgs] The return value of this isn't used, and the thunk shouldn't fire."
  extFuncAppMixedArgs :: String -> MixedCall CodeInfoOO
extFuncAppMixedArgs String
l String
n VS (CodeInfoOO TypeData)
_ [SValue CodeInfoOO]
vs NamedArgs CodeInfoOO
ns = do
    [SValue CodeInfoOO] -> StateT ValueState Identity ()
forall (t :: * -> *) (m :: * -> *) a.
(Foldable t, Monad m) =>
t (m a) -> m ()
sequence_ [SValue CodeInfoOO]
vs
    ((SVariable CodeInfoOO, SValue CodeInfoOO) -> SVariable CodeInfoOO)
-> NamedArgs CodeInfoOO -> StateT ValueState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (SVariable CodeInfoOO, SValue CodeInfoOO) -> SVariable CodeInfoOO
forall a b. (a, b) -> a
fst NamedArgs CodeInfoOO
ns
    ((SVariable CodeInfoOO, SValue CodeInfoOO) -> SValue CodeInfoOO)
-> NamedArgs CodeInfoOO -> StateT ValueState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (SVariable CodeInfoOO, SValue CodeInfoOO) -> SValue CodeInfoOO
forall a b. (a, b) -> b
snd NamedArgs CodeInfoOO
ns
    String -> String -> SValue CodeInfoOO
addExternalCallVal String
l String
n
  libFuncAppMixedArgs :: String -> MixedCall CodeInfoOO
libFuncAppMixedArgs = String -> MixedCall CodeInfoOO
forall (r :: * -> *). ValueExpression r => String -> MixedCall r
extFuncAppMixedArgs

  lambda :: [VSBinder CodeInfoOO] -> SValue CodeInfoOO -> SValue CodeInfoOO
lambda [VSBinder CodeInfoOO]
_ = SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1

  notNull :: SValue CodeInfoOO -> SValue CodeInfoOO
notNull = SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1

instance OOValueExpression CodeInfoOO where
  newObjMixedArgs :: MixedCtorCall CodeInfoOO
newObjMixedArgs VS (CodeInfoOO TypeData)
_ [SValue CodeInfoOO]
vs NamedArgs CodeInfoOO
ns = do
    [SValue CodeInfoOO] -> StateT ValueState Identity ()
forall (t :: * -> *) (m :: * -> *) a.
(Foldable t, Monad m) =>
t (m a) -> m ()
sequence_ [SValue CodeInfoOO]
vs
    ((SVariable CodeInfoOO, SValue CodeInfoOO) -> SVariable CodeInfoOO)
-> NamedArgs CodeInfoOO -> StateT ValueState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (SVariable CodeInfoOO, SValue CodeInfoOO) -> SVariable CodeInfoOO
forall a b. (a, b) -> a
fst NamedArgs CodeInfoOO
ns
    ((SVariable CodeInfoOO, SValue CodeInfoOO) -> SValue CodeInfoOO)
-> NamedArgs CodeInfoOO -> StateT ValueState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (SVariable CodeInfoOO, SValue CodeInfoOO) -> SValue CodeInfoOO
forall a b. (a, b) -> b
snd NamedArgs CodeInfoOO
ns
    CodeInfoOO Value -> SValue CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Value -> SValue CodeInfoOO)
-> CodeInfoOO Value -> SValue CodeInfoOO
forall a b. (a -> b) -> a -> b
$ String -> CodeInfoOO Value
forall a. HasCallStack => String -> a
error String
"[newObjMixedArgs] The return value of this isn't used, and the thunk shouldn't fire."
  extNewObjMixedArgs :: MixedCall CodeInfoOO
extNewObjMixedArgs String
_ VS (CodeInfoOO TypeData)
_ [SValue CodeInfoOO]
vs NamedArgs CodeInfoOO
ns = do
    [SValue CodeInfoOO] -> StateT ValueState Identity ()
forall (t :: * -> *) (m :: * -> *) a.
(Foldable t, Monad m) =>
t (m a) -> m ()
sequence_ [SValue CodeInfoOO]
vs
    ((SVariable CodeInfoOO, SValue CodeInfoOO) -> SVariable CodeInfoOO)
-> NamedArgs CodeInfoOO -> StateT ValueState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (SVariable CodeInfoOO, SValue CodeInfoOO) -> SVariable CodeInfoOO
forall a b. (a, b) -> a
fst NamedArgs CodeInfoOO
ns
    ((SVariable CodeInfoOO, SValue CodeInfoOO) -> SValue CodeInfoOO)
-> NamedArgs CodeInfoOO -> StateT ValueState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (SVariable CodeInfoOO, SValue CodeInfoOO) -> SValue CodeInfoOO
forall a b. (a, b) -> b
snd NamedArgs CodeInfoOO
ns
    CodeInfoOO Value -> SValue CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Value -> SValue CodeInfoOO)
-> CodeInfoOO Value -> SValue CodeInfoOO
forall a b. (a -> b) -> a -> b
$ String -> CodeInfoOO Value
forall a. HasCallStack => String -> a
error String
"[extNewObjMixedArgs] The return value of this isn't used, and the thunk shouldn't fire."
  libNewObjMixedArgs :: MixedCall CodeInfoOO
libNewObjMixedArgs = MixedCall CodeInfoOO
forall (r :: * -> *).
OOValueExpression r =>
String -> MixedCtorCall r
extNewObjMixedArgs

instance InternalValueExp CodeInfoOO where
  objMethodCallMixedArgs' :: String
-> VS (CodeInfoOO TypeData)
-> SValue CodeInfoOO
-> [SValue CodeInfoOO]
-> NamedArgs CodeInfoOO
-> SValue CodeInfoOO
objMethodCallMixedArgs' String
n VS (CodeInfoOO TypeData)
_ SValue CodeInfoOO
v [SValue CodeInfoOO]
vs NamedArgs CodeInfoOO
ns = do
    CodeInfoOO Value
_ <- SValue CodeInfoOO
v
    CodeInfoOO Value
_ <- String
-> [SValue CodeInfoOO] -> NamedArgs CodeInfoOO -> SValue CodeInfoOO
currModCall String
n [SValue CodeInfoOO]
vs NamedArgs CodeInfoOO
ns
    CodeInfoOO Value -> SValue CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Value -> SValue CodeInfoOO)
-> CodeInfoOO Value -> SValue CodeInfoOO
forall a b. (a -> b) -> a -> b
$ Value -> CodeInfoOO Value
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Value -> CodeInfoOO Value) -> Value -> CodeInfoOO Value
forall a b. (a -> b) -> a -> b
$ String -> Value
forall a. HasCallStack => String -> a
error String
"[objMethodCallMixedArgs'] The return value of this isn't used, and the thunk shouldn't fire."
  classMethodCallMixedArgs' :: String -> VS (CodeInfoOO TypeData) -> MixedCtorCall CodeInfoOO
classMethodCallMixedArgs' String
n VS (CodeInfoOO TypeData)
_ VS (CodeInfoOO TypeData)
cls [SValue CodeInfoOO]
vs NamedArgs CodeInfoOO
ns = VS (CodeInfoOO TypeData)
cls VS (CodeInfoOO TypeData) -> SValue CodeInfoOO -> SValue CodeInfoOO
forall a b.
StateT ValueState Identity a
-> StateT ValueState Identity b -> StateT ValueState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> String
-> [SValue CodeInfoOO] -> NamedArgs CodeInfoOO -> SValue CodeInfoOO
currModCall String
n [SValue CodeInfoOO]
vs NamedArgs CodeInfoOO
ns

instance FunctionSym CodeInfoOO where

instance OOFunctionSym CodeInfoOO where
  func :: String
-> VS (CodeInfoOO TypeData)
-> [SValue CodeInfoOO]
-> VS (CodeInfoOO FuncData)
func  String
_ VS (CodeInfoOO TypeData)
_ [SValue CodeInfoOO]
l = do
    [SValue CodeInfoOO] -> StateT ValueState Identity ()
forall (t :: * -> *) (m :: * -> *) a.
(Foldable t, Monad m) =>
t (m a) -> m ()
sequence_ [SValue CodeInfoOO]
l
    CodeInfoOO FuncData -> VS (CodeInfoOO FuncData)
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO FuncData -> VS (CodeInfoOO FuncData))
-> CodeInfoOO FuncData -> VS (CodeInfoOO FuncData)
forall a b. (a -> b) -> a -> b
$ FuncData -> CodeInfoOO FuncData
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (FuncData -> CodeInfoOO FuncData)
-> FuncData -> CodeInfoOO FuncData
forall a b. (a -> b) -> a -> b
$ String -> FuncData
forall a. HasCallStack => String -> a
error String
"The return value of this isn't used, and the thunk shouldn't fire."
  objAccess :: SValue CodeInfoOO -> VS (CodeInfoOO FuncData) -> SValue CodeInfoOO
objAccess SValue CodeInfoOO
s1 VS (CodeInfoOO FuncData)
s2 = do
    CodeInfoOO Value
_ <- SValue CodeInfoOO
s1
    CodeInfoOO FuncData
_ <- VS (CodeInfoOO FuncData)
s2
    CodeInfoOO Value -> SValue CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Value -> SValue CodeInfoOO)
-> CodeInfoOO Value -> SValue CodeInfoOO
forall a b. (a -> b) -> a -> b
$ Value -> CodeInfoOO Value
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Value -> CodeInfoOO Value) -> Value -> CodeInfoOO Value
forall a b. (a -> b) -> a -> b
$ String -> Value
forall a. HasCallStack => String -> a
error String
"The return value of this isn't used, and the thunk shouldn't fire."

instance GetSet CodeInfoOO where
  get :: SValue CodeInfoOO -> SVariable CodeInfoOO -> SValue CodeInfoOO
get SValue CodeInfoOO
v SVariable CodeInfoOO
_ = SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1 SValue CodeInfoOO
v
  set :: SValue CodeInfoOO
-> SVariable CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
set SValue CodeInfoOO
v SVariable CodeInfoOO
_ = SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c d.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c) -> State a (CodeInfoOO d)
execute2 SValue CodeInfoOO
v

instance IndexTranslator CodeInfoOO where
  intToIndex :: SValue CodeInfoOO -> SValue CodeInfoOO
intToIndex = SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  indexToInt :: SValue CodeInfoOO -> SValue CodeInfoOO
indexToInt = SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1

instance Reference CodeInfoOO where
  makeRef :: SValue CodeInfoOO -> SValue CodeInfoOO
makeRef = SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  maybeDeref :: SValue CodeInfoOO -> SValue CodeInfoOO
maybeDeref = SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1

instance Array CodeInfoOO where
  arrayElem :: SValue CodeInfoOO -> SValue CodeInfoOO -> SVariable CodeInfoOO
arrayElem SValue CodeInfoOO
_ SValue CodeInfoOO
_ = CodeInfoOO Variable -> SVariable CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Variable -> SVariable CodeInfoOO)
-> CodeInfoOO Variable -> SVariable CodeInfoOO
forall a b. (a -> b) -> a -> b
$ Variable -> CodeInfoOO Variable
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Variable -> CodeInfoOO Variable)
-> Variable -> CodeInfoOO Variable
forall a b. (a -> b) -> a -> b
$ String -> Variable
forall a. HasCallStack => String -> a
error String
"[arrayElem] The return value of this isn't used, and the thunk shouldn't fire."
  arrayLength :: SValue CodeInfoOO -> SValue CodeInfoOO
arrayLength SValue CodeInfoOO
_ = CodeInfoOO Value -> SValue CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Value -> SValue CodeInfoOO)
-> CodeInfoOO Value -> SValue CodeInfoOO
forall a b. (a -> b) -> a -> b
$ String -> CodeInfoOO Value
forall a. HasCallStack => String -> a
error String
"[arrayLength] The return value of this isn't used, and the thunk shouldn't fire."
  arrayCopy :: SValue CodeInfoOO -> SValue CodeInfoOO
arrayCopy SValue CodeInfoOO
_ = CodeInfoOO Value -> SValue CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Value -> SValue CodeInfoOO)
-> CodeInfoOO Value -> SValue CodeInfoOO
forall a b. (a -> b) -> a -> b
$ String -> CodeInfoOO Value
forall a. HasCallStack => String -> a
error String
"[arrayCopy] The return value of this isn't used, and the thunk shouldn't fire."

instance List CodeInfoOO () where
  listSize :: SValue CodeInfoOO -> SValue CodeInfoOO
listSize       = SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  listAdd :: SValue CodeInfoOO
-> SValue CodeInfoOO -> SValue CodeInfoOO -> MS (CodeInfoOO ())
listAdd SValue CodeInfoOO
l SValue CodeInfoOO
i SValue CodeInfoOO
v  = State MethodState (CodeInfoOO Value)
-> State MethodState (CodeInfoOO Value)
-> State MethodState (CodeInfoOO Value)
-> MS (CodeInfoOO ())
forall a b c d e.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c)
-> State a (CodeInfoOO d)
-> State a (CodeInfoOO e)
execute3 (LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
-> SValue CodeInfoOO -> State MethodState (CodeInfoOO Value)
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO Value) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO Value) MethodState
Lens' MethodState ValueState
lensMStoVS SValue CodeInfoOO
l) (LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
-> SValue CodeInfoOO -> State MethodState (CodeInfoOO Value)
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO Value) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO Value) MethodState
Lens' MethodState ValueState
lensMStoVS SValue CodeInfoOO
i) (LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
-> SValue CodeInfoOO -> State MethodState (CodeInfoOO Value)
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO Value) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO Value) MethodState
Lens' MethodState ValueState
lensMStoVS SValue CodeInfoOO
v)
  listAppend :: SValue CodeInfoOO -> SValue CodeInfoOO -> MS (CodeInfoOO ())
listAppend SValue CodeInfoOO
l SValue CodeInfoOO
v = State MethodState (CodeInfoOO Value)
-> State MethodState (CodeInfoOO Value) -> MS (CodeInfoOO ())
forall a b c d.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c) -> State a (CodeInfoOO d)
execute2 (LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
-> SValue CodeInfoOO -> State MethodState (CodeInfoOO Value)
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO Value) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO Value) MethodState
Lens' MethodState ValueState
lensMStoVS SValue CodeInfoOO
l) (LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
-> SValue CodeInfoOO -> State MethodState (CodeInfoOO Value)
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO Value) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO Value) MethodState
Lens' MethodState ValueState
lensMStoVS SValue CodeInfoOO
v)
  listAccess :: SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
listAccess     = SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c d.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c) -> State a (CodeInfoOO d)
execute2
  listSet :: SValue CodeInfoOO
-> SValue CodeInfoOO -> SValue CodeInfoOO -> MS (CodeInfoOO ())
listSet SValue CodeInfoOO
l SValue CodeInfoOO
i SValue CodeInfoOO
v  = State MethodState (CodeInfoOO Value)
-> State MethodState (CodeInfoOO Value)
-> State MethodState (CodeInfoOO Value)
-> MS (CodeInfoOO ())
forall a b c d e.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c)
-> State a (CodeInfoOO d)
-> State a (CodeInfoOO e)
execute3 (LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
-> SValue CodeInfoOO -> State MethodState (CodeInfoOO Value)
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO Value) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO Value) MethodState
Lens' MethodState ValueState
lensMStoVS SValue CodeInfoOO
l) (LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
-> SValue CodeInfoOO -> State MethodState (CodeInfoOO Value)
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO Value) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO Value) MethodState
Lens' MethodState ValueState
lensMStoVS SValue CodeInfoOO
i) (LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
-> SValue CodeInfoOO -> State MethodState (CodeInfoOO Value)
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO Value) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO Value) MethodState
Lens' MethodState ValueState
lensMStoVS SValue CodeInfoOO
v)
  indexOf :: SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
indexOf        = SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c d.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c) -> State a (CodeInfoOO d)
execute2

instance Set CodeInfoOO where
  contains :: SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
contains = SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c d.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c) -> State a (CodeInfoOO d)
execute2
  setAdd :: SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
setAdd = SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c d.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c) -> State a (CodeInfoOO d)
execute2
  setRemove :: SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
setRemove = SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c d.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c) -> State a (CodeInfoOO d)
execute2
  setUnion :: SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
setUnion = SValue CodeInfoOO -> SValue CodeInfoOO -> SValue CodeInfoOO
forall a b c d.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c) -> State a (CodeInfoOO d)
execute2

instance InternalList CodeInfoOO where
  listSlice' :: Maybe (SValue CodeInfoOO)
-> Maybe (SValue CodeInfoOO)
-> Maybe (SValue CodeInfoOO)
-> SVariable CodeInfoOO
-> SValue CodeInfoOO
-> MS (CodeInfoOO Body)
listSlice' Maybe (SValue CodeInfoOO)
b Maybe (SValue CodeInfoOO)
e Maybe (SValue CodeInfoOO)
s SVariable CodeInfoOO
_ SValue CodeInfoOO
vl = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Body))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO Body)
-> MS (CodeInfoOO Body)
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Body))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO Body) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO Body) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO Body)
 -> MS (CodeInfoOO Body))
-> StateT ValueState Identity (CodeInfoOO Body)
-> MS (CodeInfoOO Body)
forall a b. (a -> b) -> a -> b
$ do
    (Maybe (SValue CodeInfoOO) -> SValue CodeInfoOO)
-> [Maybe (SValue CodeInfoOO)] -> StateT ValueState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (SValue CodeInfoOO -> Maybe (SValue CodeInfoOO) -> SValue CodeInfoOO
forall a. a -> Maybe a -> a
fromMaybe (CodeInfoOO Value -> SValue CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Value -> SValue CodeInfoOO)
-> CodeInfoOO Value -> SValue CodeInfoOO
forall a b. (a -> b) -> a -> b
$ String -> CodeInfoOO Value
forall a. HasCallStack => String -> a
error String
"[listSlice'] The return value of this isn't used, and the thunk shouldn't fire.")) [Maybe (SValue CodeInfoOO)
b,Maybe (SValue CodeInfoOO)
e,Maybe (SValue CodeInfoOO)
s]
    CodeInfoOO Value
_ <- SValue CodeInfoOO
vl
    CodeInfoOO Body -> StateT ValueState Identity (CodeInfoOO Body)
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Body -> StateT ValueState Identity (CodeInfoOO Body))
-> CodeInfoOO Body -> StateT ValueState Identity (CodeInfoOO Body)
forall a b. (a -> b) -> a -> b
$ Body -> CodeInfoOO Body
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Body -> CodeInfoOO Body) -> Body -> CodeInfoOO Body
forall a b. (a -> b) -> a -> b
$ String -> Body
forall a. HasCallStack => String -> a
error String
"[bool] The return value of this isn't used, and the thunk shouldn't fire."

instance BinderSym CodeInfoOO where
  binder :: String -> VS (CodeInfoOO TypeData) -> VSBinder CodeInfoOO
binder String
_ VS (CodeInfoOO TypeData)
_ = VSBinder CodeInfoOO
noInfoBinder

instance StatementSym CodeInfoOO () where
  valStmt :: SValue CodeInfoOO -> MS (CodeInfoOO ())
valStmt = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> (SValue CodeInfoOO
    -> StateT ValueState Identity (CodeInfoOO ()))
-> SValue CodeInfoOO
-> MS (CodeInfoOO ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SValue CodeInfoOO -> StateT ValueState Identity (CodeInfoOO ())
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  emptyStmt :: MS (CodeInfoOO ())
emptyStmt = MS (CodeInfoOO ())
forall s. State s (CodeInfoOO ())
noInfo
  multi :: [MS (CodeInfoOO ())] -> MS (CodeInfoOO ())
multi    = [MS (CodeInfoOO ())] -> MS (CodeInfoOO ())
forall a. [State a (CodeInfoOO ())] -> State a (CodeInfoOO ())
executeList

instance AssignStatement CodeInfoOO () where
  assign :: SVariable CodeInfoOO -> SValue CodeInfoOO -> MS (CodeInfoOO ())
assign SVariable CodeInfoOO
_ = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> (SValue CodeInfoOO
    -> StateT ValueState Identity (CodeInfoOO ()))
-> SValue CodeInfoOO
-> MS (CodeInfoOO ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SValue CodeInfoOO -> StateT ValueState Identity (CodeInfoOO ())
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  &-= :: SVariable CodeInfoOO -> SValue CodeInfoOO -> MS (CodeInfoOO ())
(&-=)  SVariable CodeInfoOO
_ = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> (SValue CodeInfoOO
    -> StateT ValueState Identity (CodeInfoOO ()))
-> SValue CodeInfoOO
-> MS (CodeInfoOO ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SValue CodeInfoOO -> StateT ValueState Identity (CodeInfoOO ())
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  &+= :: SVariable CodeInfoOO -> SValue CodeInfoOO -> MS (CodeInfoOO ())
(&+=)  SVariable CodeInfoOO
_ = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> (SValue CodeInfoOO
    -> StateT ValueState Identity (CodeInfoOO ()))
-> SValue CodeInfoOO
-> MS (CodeInfoOO ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SValue CodeInfoOO -> StateT ValueState Identity (CodeInfoOO ())
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  &++ :: SVariable CodeInfoOO -> MS (CodeInfoOO ())
(&++)  SVariable CodeInfoOO
_ = MS (CodeInfoOO ())
forall s. State s (CodeInfoOO ())
noInfo
  &-- :: SVariable CodeInfoOO -> MS (CodeInfoOO ())
(&--)  SVariable CodeInfoOO
_ = MS (CodeInfoOO ())
forall s. State s (CodeInfoOO ())
noInfo

instance DeclStatement CodeInfoOO () where
  varDec :: SVariable CodeInfoOO -> CodeInfoOO ScopeData -> MS (CodeInfoOO ())
varDec               SVariable CodeInfoOO
_ CodeInfoOO ScopeData
_ = MS (CodeInfoOO ())
forall s. State s (CodeInfoOO ())
noInfo
  varDecDef :: SVariable CodeInfoOO
-> CodeInfoOO ScopeData -> SValue CodeInfoOO -> MS (CodeInfoOO ())
varDecDef            SVariable CodeInfoOO
_ CodeInfoOO ScopeData
_ = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> (SValue CodeInfoOO
    -> StateT ValueState Identity (CodeInfoOO ()))
-> SValue CodeInfoOO
-> MS (CodeInfoOO ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SValue CodeInfoOO -> StateT ValueState Identity (CodeInfoOO ())
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  setDec :: SVariable CodeInfoOO -> CodeInfoOO ScopeData -> MS (CodeInfoOO ())
setDec               SVariable CodeInfoOO
_ CodeInfoOO ScopeData
_ = MS (CodeInfoOO ())
forall s. State s (CodeInfoOO ())
noInfo
  setDecDef :: SVariable CodeInfoOO
-> CodeInfoOO ScopeData -> SValue CodeInfoOO -> MS (CodeInfoOO ())
setDecDef            SVariable CodeInfoOO
_ CodeInfoOO ScopeData
_ = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> (SValue CodeInfoOO
    -> StateT ValueState Identity (CodeInfoOO ()))
-> SValue CodeInfoOO
-> MS (CodeInfoOO ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SValue CodeInfoOO -> StateT ValueState Identity (CodeInfoOO ())
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  listDec :: Integer
-> SVariable CodeInfoOO
-> CodeInfoOO ScopeData
-> MS (CodeInfoOO ())
listDec            Integer
_ SVariable CodeInfoOO
_ CodeInfoOO ScopeData
_ = MS (CodeInfoOO ())
forall s. State s (CodeInfoOO ())
noInfo
  listDecDef :: SVariable CodeInfoOO
-> CodeInfoOO ScopeData
-> [SValue CodeInfoOO]
-> MS (CodeInfoOO ())
listDecDef           SVariable CodeInfoOO
_ CodeInfoOO ScopeData
_ = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> ([SValue CodeInfoOO]
    -> StateT ValueState Identity (CodeInfoOO ()))
-> [SValue CodeInfoOO]
-> MS (CodeInfoOO ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [SValue CodeInfoOO] -> StateT ValueState Identity (CodeInfoOO ())
forall a b c. [State a (CodeInfoOO b)] -> State a (CodeInfoOO c)
executeListErr
  arrayDec :: Integer
-> SValue CodeInfoOO
-> SVariable CodeInfoOO
-> CodeInfoOO ScopeData
-> MS (CodeInfoOO ())
arrayDec           Integer
_ SValue CodeInfoOO
_ SVariable CodeInfoOO
_ CodeInfoOO ScopeData
_ = MS (CodeInfoOO ())
forall s. State s (CodeInfoOO ())
noInfo
  arrayDecDef :: SVariable CodeInfoOO
-> CodeInfoOO ScopeData
-> [SValue CodeInfoOO]
-> MS (CodeInfoOO ())
arrayDecDef          SVariable CodeInfoOO
_ CodeInfoOO ScopeData
_ = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> ([SValue CodeInfoOO]
    -> StateT ValueState Identity (CodeInfoOO ()))
-> [SValue CodeInfoOO]
-> MS (CodeInfoOO ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [SValue CodeInfoOO] -> StateT ValueState Identity (CodeInfoOO ())
forall a b c. [State a (CodeInfoOO b)] -> State a (CodeInfoOO c)
executeListErr
  constDecDef :: SVariable CodeInfoOO
-> CodeInfoOO ScopeData -> SValue CodeInfoOO -> MS (CodeInfoOO ())
constDecDef          SVariable CodeInfoOO
_ CodeInfoOO ScopeData
_ = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> (SValue CodeInfoOO
    -> StateT ValueState Identity (CodeInfoOO ()))
-> SValue CodeInfoOO
-> MS (CodeInfoOO ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SValue CodeInfoOO -> StateT ValueState Identity (CodeInfoOO ())
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  funcDecDef :: SVariable CodeInfoOO
-> CodeInfoOO ScopeData
-> [SVariable CodeInfoOO]
-> MS (CodeInfoOO Body)
-> MS (CodeInfoOO ())
funcDecDef         SVariable CodeInfoOO
_ CodeInfoOO ScopeData
_ [SVariable CodeInfoOO]
_ MS (CodeInfoOO Body)
bod = do
    CodeInfoOO Body
_ <- MS (CodeInfoOO Body)
bod
    CodeInfoOO () -> MS (CodeInfoOO ())
forall a. a -> StateT MethodState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO () -> MS (CodeInfoOO ()))
-> CodeInfoOO () -> MS (CodeInfoOO ())
forall a b. (a -> b) -> a -> b
$ () -> CodeInfoOO ()
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (() -> CodeInfoOO ()) -> () -> CodeInfoOO ()
forall a b. (a -> b) -> a -> b
$ String -> ()
forall a. HasCallStack => String -> a
error String
"[funcDecDef] The return value of this isn't used, and the thunk shouldn't fire."

instance OODeclStatement CodeInfoOO () where
  objDecDef :: SVariable CodeInfoOO
-> CodeInfoOO ScopeData -> SValue CodeInfoOO -> MS (CodeInfoOO ())
objDecDef            SVariable CodeInfoOO
_ CodeInfoOO ScopeData
_ = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> (SValue CodeInfoOO
    -> StateT ValueState Identity (CodeInfoOO ()))
-> SValue CodeInfoOO
-> MS (CodeInfoOO ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SValue CodeInfoOO -> StateT ValueState Identity (CodeInfoOO ())
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  objDecNew :: SVariable CodeInfoOO
-> CodeInfoOO ScopeData
-> [SValue CodeInfoOO]
-> MS (CodeInfoOO ())
objDecNew            SVariable CodeInfoOO
_ CodeInfoOO ScopeData
_ = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> ([SValue CodeInfoOO]
    -> StateT ValueState Identity (CodeInfoOO ()))
-> [SValue CodeInfoOO]
-> MS (CodeInfoOO ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [SValue CodeInfoOO] -> StateT ValueState Identity (CodeInfoOO ())
forall a b c. [State a (CodeInfoOO b)] -> State a (CodeInfoOO c)
executeListErr
  extObjDecNew :: String
-> SVariable CodeInfoOO
-> CodeInfoOO ScopeData
-> [SValue CodeInfoOO]
-> MS (CodeInfoOO ())
extObjDecNew       String
_ SVariable CodeInfoOO
_ CodeInfoOO ScopeData
_ = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> ([SValue CodeInfoOO]
    -> StateT ValueState Identity (CodeInfoOO ()))
-> [SValue CodeInfoOO]
-> MS (CodeInfoOO ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [SValue CodeInfoOO] -> StateT ValueState Identity (CodeInfoOO ())
forall a b c. [State a (CodeInfoOO b)] -> State a (CodeInfoOO c)
executeListErr

instance IOStatement CodeInfoOO () where
  print :: SValue CodeInfoOO -> MS (CodeInfoOO ())
print        = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> (SValue CodeInfoOO
    -> StateT ValueState Identity (CodeInfoOO ()))
-> SValue CodeInfoOO
-> MS (CodeInfoOO ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SValue CodeInfoOO -> StateT ValueState Identity (CodeInfoOO ())
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  printLn :: SValue CodeInfoOO -> MS (CodeInfoOO ())
printLn      = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> (SValue CodeInfoOO
    -> StateT ValueState Identity (CodeInfoOO ()))
-> SValue CodeInfoOO
-> MS (CodeInfoOO ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SValue CodeInfoOO -> StateT ValueState Identity (CodeInfoOO ())
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  printStr :: String -> MS (CodeInfoOO ())
printStr   String
_ = MS (CodeInfoOO ())
forall s. State s (CodeInfoOO ())
noInfo
  printStrLn :: String -> MS (CodeInfoOO ())
printStrLn String
_ = MS (CodeInfoOO ())
forall s. State s (CodeInfoOO ())
noInfo

  printFile :: SValue CodeInfoOO -> SValue CodeInfoOO -> MS (CodeInfoOO ())
printFile      SValue CodeInfoOO
v   = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> (SValue CodeInfoOO
    -> StateT ValueState Identity (CodeInfoOO ()))
-> SValue CodeInfoOO
-> MS (CodeInfoOO ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SValue CodeInfoOO
-> SValue CodeInfoOO -> StateT ValueState Identity (CodeInfoOO ())
forall a b c d.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c) -> State a (CodeInfoOO d)
execute2 SValue CodeInfoOO
v
  printFileLn :: SValue CodeInfoOO -> SValue CodeInfoOO -> MS (CodeInfoOO ())
printFileLn    SValue CodeInfoOO
v   = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> (SValue CodeInfoOO
    -> StateT ValueState Identity (CodeInfoOO ()))
-> SValue CodeInfoOO
-> MS (CodeInfoOO ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SValue CodeInfoOO
-> SValue CodeInfoOO -> StateT ValueState Identity (CodeInfoOO ())
forall a b c d.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c) -> State a (CodeInfoOO d)
execute2 SValue CodeInfoOO
v
  printFileStr :: SValue CodeInfoOO -> String -> MS (CodeInfoOO ())
printFileStr   SValue CodeInfoOO
v String
_ = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall a b. (a -> b) -> a -> b
$ SValue CodeInfoOO -> StateT ValueState Identity (CodeInfoOO ())
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1 SValue CodeInfoOO
v
  printFileStrLn :: SValue CodeInfoOO -> String -> MS (CodeInfoOO ())
printFileStrLn SValue CodeInfoOO
v String
_ = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall a b. (a -> b) -> a -> b
$ SValue CodeInfoOO -> StateT ValueState Identity (CodeInfoOO ())
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1 SValue CodeInfoOO
v

  getInput :: SVariable CodeInfoOO -> MS (CodeInfoOO ())
getInput       SVariable CodeInfoOO
_ = MS (CodeInfoOO ())
forall s. State s (CodeInfoOO ())
noInfo
  discardInput :: MS (CodeInfoOO ())
discardInput     = MS (CodeInfoOO ())
forall s. State s (CodeInfoOO ())
noInfo
  getFileInput :: SValue CodeInfoOO -> SVariable CodeInfoOO -> MS (CodeInfoOO ())
getFileInput SValue CodeInfoOO
v SVariable CodeInfoOO
_ = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall a b. (a -> b) -> a -> b
$ SValue CodeInfoOO -> StateT ValueState Identity (CodeInfoOO ())
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1 SValue CodeInfoOO
v
  discardFileInput :: SValue CodeInfoOO -> MS (CodeInfoOO ())
discardFileInput = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> (SValue CodeInfoOO
    -> StateT ValueState Identity (CodeInfoOO ()))
-> SValue CodeInfoOO
-> MS (CodeInfoOO ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SValue CodeInfoOO -> StateT ValueState Identity (CodeInfoOO ())
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1

  openFileR :: SVariable CodeInfoOO -> SValue CodeInfoOO -> MS (CodeInfoOO ())
openFileR SVariable CodeInfoOO
_ SValue CodeInfoOO
v = (MethodState -> MethodState) -> StateT MethodState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (ExceptionType -> MethodState -> MethodState
addException ExceptionType
FileNotFound) StateT MethodState Identity ()
-> MS (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall a b.
StateT MethodState Identity a
-> StateT MethodState Identity b -> StateT MethodState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
    State MethodState (CodeInfoOO Value) -> MS (CodeInfoOO ())
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1 (LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
-> SValue CodeInfoOO -> State MethodState (CodeInfoOO Value)
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO Value) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO Value) MethodState
Lens' MethodState ValueState
lensMStoVS SValue CodeInfoOO
v)
  openFileW :: SVariable CodeInfoOO -> SValue CodeInfoOO -> MS (CodeInfoOO ())
openFileW SVariable CodeInfoOO
_ SValue CodeInfoOO
v = (MethodState -> MethodState) -> StateT MethodState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (ExceptionType -> MethodState -> MethodState
addException ExceptionType
IO) StateT MethodState Identity ()
-> MS (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall a b.
StateT MethodState Identity a
-> StateT MethodState Identity b -> StateT MethodState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> State MethodState (CodeInfoOO Value) -> MS (CodeInfoOO ())
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1 (LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
-> SValue CodeInfoOO -> State MethodState (CodeInfoOO Value)
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO Value) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO Value) MethodState
Lens' MethodState ValueState
lensMStoVS SValue CodeInfoOO
v)
  openFileA :: SVariable CodeInfoOO -> SValue CodeInfoOO -> MS (CodeInfoOO ())
openFileA SVariable CodeInfoOO
_ SValue CodeInfoOO
v = (MethodState -> MethodState) -> StateT MethodState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (ExceptionType -> MethodState -> MethodState
addException ExceptionType
IO) StateT MethodState Identity ()
-> MS (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall a b.
StateT MethodState Identity a
-> StateT MethodState Identity b -> StateT MethodState Identity b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> State MethodState (CodeInfoOO Value) -> MS (CodeInfoOO ())
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1 (LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
-> SValue CodeInfoOO -> State MethodState (CodeInfoOO Value)
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO Value) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO Value) MethodState
Lens' MethodState ValueState
lensMStoVS SValue CodeInfoOO
v)
  closeFile :: SValue CodeInfoOO -> MS (CodeInfoOO ())
closeFile     = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> (SValue CodeInfoOO
    -> StateT ValueState Identity (CodeInfoOO ()))
-> SValue CodeInfoOO
-> MS (CodeInfoOO ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SValue CodeInfoOO -> StateT ValueState Identity (CodeInfoOO ())
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1

  getFileInputLine :: SValue CodeInfoOO -> SVariable CodeInfoOO -> MS (CodeInfoOO ())
getFileInputLine SValue CodeInfoOO
v SVariable CodeInfoOO
_ = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall a b. (a -> b) -> a -> b
$ SValue CodeInfoOO -> StateT ValueState Identity (CodeInfoOO ())
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1 SValue CodeInfoOO
v
  discardFileLine :: SValue CodeInfoOO -> MS (CodeInfoOO ())
discardFileLine      = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> (SValue CodeInfoOO
    -> StateT ValueState Identity (CodeInfoOO ()))
-> SValue CodeInfoOO
-> MS (CodeInfoOO ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SValue CodeInfoOO -> StateT ValueState Identity (CodeInfoOO ())
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  getFileInputAll :: SValue CodeInfoOO -> SVariable CodeInfoOO -> MS (CodeInfoOO ())
getFileInputAll  SValue CodeInfoOO
v SVariable CodeInfoOO
_ = State MethodState (CodeInfoOO Value) -> MS (CodeInfoOO ())
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1 (LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
-> SValue CodeInfoOO -> State MethodState (CodeInfoOO Value)
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO Value) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO Value) MethodState
Lens' MethodState ValueState
lensMStoVS SValue CodeInfoOO
v)

instance StringStatement CodeInfoOO () where
  stringSplit :: Char
-> SVariable CodeInfoOO -> SValue CodeInfoOO -> MS (CodeInfoOO ())
stringSplit Char
_ SVariable CodeInfoOO
_ = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> (SValue CodeInfoOO
    -> StateT ValueState Identity (CodeInfoOO ()))
-> SValue CodeInfoOO
-> MS (CodeInfoOO ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SValue CodeInfoOO -> StateT ValueState Identity (CodeInfoOO ())
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1

  stringListVals :: [SVariable CodeInfoOO] -> SValue CodeInfoOO -> MS (CodeInfoOO ())
stringListVals  [SVariable CodeInfoOO]
_ = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> (SValue CodeInfoOO
    -> StateT ValueState Identity (CodeInfoOO ()))
-> SValue CodeInfoOO
-> MS (CodeInfoOO ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SValue CodeInfoOO -> StateT ValueState Identity (CodeInfoOO ())
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1
  stringListLists :: [SVariable CodeInfoOO] -> SValue CodeInfoOO -> MS (CodeInfoOO ())
stringListLists [SVariable CodeInfoOO]
_ = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> (SValue CodeInfoOO
    -> StateT ValueState Identity (CodeInfoOO ()))
-> SValue CodeInfoOO
-> MS (CodeInfoOO ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SValue CodeInfoOO -> StateT ValueState Identity (CodeInfoOO ())
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1

instance FuncAppStatement CodeInfoOO () where
  inOutCall :: InOutCall CodeInfoOO ()
inOutCall String
n [SValue CodeInfoOO]
vs [SVariable CodeInfoOO]
_ [SVariable CodeInfoOO]
_ = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall a b. (a -> b) -> a -> b
$ do
    [SValue CodeInfoOO] -> StateT ValueState Identity ()
forall (t :: * -> *) (m :: * -> *) a.
(Foldable t, Monad m) =>
t (m a) -> m ()
sequence_ [SValue CodeInfoOO]
vs
    String -> StateT ValueState Identity (CodeInfoOO ())
addCurrModCallSmt String
n
  extInOutCall :: String -> InOutCall CodeInfoOO ()
extInOutCall String
l String
n [SValue CodeInfoOO]
vs [SVariable CodeInfoOO]
_ [SVariable CodeInfoOO]
_ = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall a b. (a -> b) -> a -> b
$ do
    [SValue CodeInfoOO] -> StateT ValueState Identity ()
forall (t :: * -> *) (m :: * -> *) a.
(Foldable t, Monad m) =>
t (m a) -> m ()
sequence_ [SValue CodeInfoOO]
vs
    String -> String -> StateT ValueState Identity (CodeInfoOO ())
addExternalCallSmt String
l String
n

instance OOFuncAppStatement CodeInfoOO () where
  selfInOutCall :: InOutCall CodeInfoOO ()
selfInOutCall String
n [SValue CodeInfoOO]
vs [SVariable CodeInfoOO]
_ [SVariable CodeInfoOO]
_ = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall a b. (a -> b) -> a -> b
$ do
    [SValue CodeInfoOO] -> StateT ValueState Identity ()
forall (t :: * -> *) (m :: * -> *) a.
(Foldable t, Monad m) =>
t (m a) -> m ()
sequence_ [SValue CodeInfoOO]
vs
    String -> StateT ValueState Identity (CodeInfoOO ())
addCurrModCallSmt String
n

instance CommentStatement CodeInfoOO () where
  comment :: String -> MS (CodeInfoOO ())
comment String
_ = MS (CodeInfoOO ())
forall s. State s (CodeInfoOO ())
noInfo

instance ControlStatement CodeInfoOO () where
  break :: MS (CodeInfoOO ())
break    = MS (CodeInfoOO ())
forall s. State s (CodeInfoOO ())
noInfo
  continue :: MS (CodeInfoOO ())
continue = MS (CodeInfoOO ())
forall s. State s (CodeInfoOO ())
noInfo

  returnStmt :: SValue CodeInfoOO -> MS (CodeInfoOO ())
returnStmt = LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
-> StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO ()))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO ()) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO ()) MethodState
Lens' MethodState ValueState
lensMStoVS (StateT ValueState Identity (CodeInfoOO ()) -> MS (CodeInfoOO ()))
-> (SValue CodeInfoOO
    -> StateT ValueState Identity (CodeInfoOO ()))
-> SValue CodeInfoOO
-> MS (CodeInfoOO ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SValue CodeInfoOO -> StateT ValueState Identity (CodeInfoOO ())
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1

  throw :: String -> MS (CodeInfoOO ())
throw String
_ = (MethodState -> MethodState) -> CodeInfoOO () -> MS (CodeInfoOO ())
forall s a. (s -> s) -> a -> State s a
modifyReturn (ExceptionType -> MethodState -> MethodState
addException ExceptionType
Standard) (() -> CodeInfoOO ()
forall (r :: * -> *) a. Monad r => a -> r a
toCode ())

  ifCond :: [(SValue CodeInfoOO, MS (CodeInfoOO Body))]
-> MS (CodeInfoOO Body) -> MS (CodeInfoOO ())
ifCond = [(SValue CodeInfoOO, MS (CodeInfoOO Body))]
-> MS (CodeInfoOO Body) -> MS (CodeInfoOO ())
evalConds
  switch :: SValue CodeInfoOO
-> [(SValue CodeInfoOO, MS (CodeInfoOO Body))]
-> MS (CodeInfoOO Body)
-> MS (CodeInfoOO ())
switch SValue CodeInfoOO
v [(SValue CodeInfoOO, MS (CodeInfoOO Body))]
cs MS (CodeInfoOO Body)
b = do
    CodeInfoOO Value
_ <- LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
-> SValue CodeInfoOO -> State MethodState (CodeInfoOO Value)
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO Value) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO Value) MethodState
Lens' MethodState ValueState
lensMStoVS SValue CodeInfoOO
v
    [(SValue CodeInfoOO, MS (CodeInfoOO Body))]
-> MS (CodeInfoOO Body) -> MS (CodeInfoOO ())
evalConds [(SValue CodeInfoOO, MS (CodeInfoOO Body))]
cs MS (CodeInfoOO Body)
b

  ifExists :: SValue CodeInfoOO
-> MS (CodeInfoOO Body)
-> MS (CodeInfoOO Body)
-> MS (CodeInfoOO ())
ifExists SValue CodeInfoOO
v MS (CodeInfoOO Body)
t MS (CodeInfoOO Body)
f = do
    CodeInfoOO Value
_ <- LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
-> SValue CodeInfoOO -> State MethodState (CodeInfoOO Value)
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO Value) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO Value) MethodState
Lens' MethodState ValueState
lensMStoVS SValue CodeInfoOO
v
    CodeInfoOO Body
_ <- MS (CodeInfoOO Body)
t
    CodeInfoOO Body
_ <- MS (CodeInfoOO Body)
f
    CodeInfoOO () -> MS (CodeInfoOO ())
forall a. a -> StateT MethodState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO () -> MS (CodeInfoOO ()))
-> CodeInfoOO () -> MS (CodeInfoOO ())
forall a b. (a -> b) -> a -> b
$ () -> CodeInfoOO ()
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (() -> CodeInfoOO ()) -> () -> CodeInfoOO ()
forall a b. (a -> b) -> a -> b
$ String -> ()
forall a. HasCallStack => String -> a
error String
"[bool] The return value of this isn't used, and the thunk shouldn't fire."

  for :: MS (CodeInfoOO ())
-> SValue CodeInfoOO
-> MS (CodeInfoOO ())
-> MS (CodeInfoOO Body)
-> MS (CodeInfoOO ())
for MS (CodeInfoOO ())
dec SValue CodeInfoOO
v MS (CodeInfoOO ())
smt MS (CodeInfoOO Body)
bod = do
    CodeInfoOO ()
_ <- MS (CodeInfoOO ())
dec
    CodeInfoOO Value
_ <- LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
-> SValue CodeInfoOO -> State MethodState (CodeInfoOO Value)
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO Value) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO Value) MethodState
Lens' MethodState ValueState
lensMStoVS SValue CodeInfoOO
v
    CodeInfoOO ()
_ <- MS (CodeInfoOO ())
smt
    CodeInfoOO Body
_ <- MS (CodeInfoOO Body)
bod
    CodeInfoOO () -> MS (CodeInfoOO ())
forall a. a -> StateT MethodState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO () -> MS (CodeInfoOO ()))
-> CodeInfoOO () -> MS (CodeInfoOO ())
forall a b. (a -> b) -> a -> b
$ () -> CodeInfoOO ()
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (() -> CodeInfoOO ()) -> () -> CodeInfoOO ()
forall a b. (a -> b) -> a -> b
$ String -> ()
forall a. HasCallStack => String -> a
error String
"[bool] The return value of this isn't used, and the thunk shouldn't fire."
  forRange :: SVariable CodeInfoOO
-> SValue CodeInfoOO
-> SValue CodeInfoOO
-> SValue CodeInfoOO
-> MS (CodeInfoOO Body)
-> MS (CodeInfoOO ())
forRange SVariable CodeInfoOO
_ SValue CodeInfoOO
b SValue CodeInfoOO
e SValue CodeInfoOO
s MS (CodeInfoOO Body)
bod = do
    CodeInfoOO Value
_ <- LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
-> SValue CodeInfoOO -> State MethodState (CodeInfoOO Value)
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO Value) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO Value) MethodState
Lens' MethodState ValueState
lensMStoVS SValue CodeInfoOO
b
    CodeInfoOO Value
_ <- LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
-> SValue CodeInfoOO -> State MethodState (CodeInfoOO Value)
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO Value) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO Value) MethodState
Lens' MethodState ValueState
lensMStoVS SValue CodeInfoOO
e
    CodeInfoOO Value
_ <- LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
-> SValue CodeInfoOO -> State MethodState (CodeInfoOO Value)
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO Value) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO Value) MethodState
Lens' MethodState ValueState
lensMStoVS SValue CodeInfoOO
s
    CodeInfoOO Body
_ <- MS (CodeInfoOO Body)
bod
    CodeInfoOO () -> MS (CodeInfoOO ())
forall a. a -> StateT MethodState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO () -> MS (CodeInfoOO ()))
-> CodeInfoOO () -> MS (CodeInfoOO ())
forall a b. (a -> b) -> a -> b
$ () -> CodeInfoOO ()
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (() -> CodeInfoOO ()) -> () -> CodeInfoOO ()
forall a b. (a -> b) -> a -> b
$ String -> ()
forall a. HasCallStack => String -> a
error String
"[bool] The return value of this isn't used, and the thunk shouldn't fire."
  forEach :: SVariable CodeInfoOO
-> SValue CodeInfoOO -> MS (CodeInfoOO Body) -> MS (CodeInfoOO ())
forEach SVariable CodeInfoOO
_ SValue CodeInfoOO
v MS (CodeInfoOO Body)
bod = do
    CodeInfoOO Value
_ <- LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
-> SValue CodeInfoOO -> State MethodState (CodeInfoOO Value)
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO Value) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO Value) MethodState
Lens' MethodState ValueState
lensMStoVS SValue CodeInfoOO
v
    CodeInfoOO Body
_ <- MS (CodeInfoOO Body)
bod
    CodeInfoOO () -> MS (CodeInfoOO ())
forall a. a -> StateT MethodState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO () -> MS (CodeInfoOO ()))
-> CodeInfoOO () -> MS (CodeInfoOO ())
forall a b. (a -> b) -> a -> b
$ () -> CodeInfoOO ()
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (() -> CodeInfoOO ()) -> () -> CodeInfoOO ()
forall a b. (a -> b) -> a -> b
$ String -> ()
forall a. HasCallStack => String -> a
error String
"[bool] The return value of this isn't used, and the thunk shouldn't fire."
  while :: SValue CodeInfoOO -> MS (CodeInfoOO Body) -> MS (CodeInfoOO ())
while SValue CodeInfoOO
v MS (CodeInfoOO Body)
bod = do
    CodeInfoOO Value
_ <- LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
-> SValue CodeInfoOO -> State MethodState (CodeInfoOO Value)
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO Value) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO Value) MethodState
Lens' MethodState ValueState
lensMStoVS SValue CodeInfoOO
v
    CodeInfoOO Body
_ <- MS (CodeInfoOO Body)
bod
    CodeInfoOO () -> MS (CodeInfoOO ())
forall a. a -> StateT MethodState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO () -> MS (CodeInfoOO ()))
-> CodeInfoOO () -> MS (CodeInfoOO ())
forall a b. (a -> b) -> a -> b
$ () -> CodeInfoOO ()
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (() -> CodeInfoOO ()) -> () -> CodeInfoOO ()
forall a b. (a -> b) -> a -> b
$ String -> ()
forall a. HasCallStack => String -> a
error String
"[bool] The return value of this isn't used, and the thunk shouldn't fire."

  tryCatch :: MS (CodeInfoOO Body) -> MS (CodeInfoOO Body) -> MS (CodeInfoOO ())
tryCatch MS (CodeInfoOO Body)
_ MS (CodeInfoOO Body)
cb = do
    CodeInfoOO Body
_ <- MS (CodeInfoOO Body)
cb
    MS (CodeInfoOO ())
forall s. State s (CodeInfoOO ())
noInfo

  assert :: SValue CodeInfoOO -> SValue CodeInfoOO -> MS (CodeInfoOO ())
assert SValue CodeInfoOO
cond SValue CodeInfoOO
msg = do
    CodeInfoOO Value
_ <- LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
-> SValue CodeInfoOO -> State MethodState (CodeInfoOO Value)
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO Value) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO Value) MethodState
Lens' MethodState ValueState
lensMStoVS SValue CodeInfoOO
cond
    CodeInfoOO Value
_ <- LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
-> SValue CodeInfoOO -> State MethodState (CodeInfoOO Value)
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO Value) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO Value) MethodState
Lens' MethodState ValueState
lensMStoVS SValue CodeInfoOO
msg
    MS (CodeInfoOO ())
forall s. State s (CodeInfoOO ())
noInfo

instance ObserverPattern CodeInfoOO () where
  notifyObservers :: VS (CodeInfoOO FuncData)
-> VS (CodeInfoOO TypeData) -> MS (CodeInfoOO ())
notifyObservers VS (CodeInfoOO FuncData)
f VS (CodeInfoOO TypeData)
_ = do
    CodeInfoOO FuncData
_ <- LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO FuncData))
  MethodState
  ValueState
-> VS (CodeInfoOO FuncData)
-> StateT MethodState Identity (CodeInfoOO FuncData)
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO FuncData))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO FuncData) ValueState)
-> MethodState
-> Focusing Identity (CodeInfoOO FuncData) MethodState
Lens' MethodState ValueState
lensMStoVS VS (CodeInfoOO FuncData)
f
    CodeInfoOO () -> MS (CodeInfoOO ())
forall a. a -> StateT MethodState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO () -> MS (CodeInfoOO ()))
-> CodeInfoOO () -> MS (CodeInfoOO ())
forall a b. (a -> b) -> a -> b
$ () -> CodeInfoOO ()
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (() -> CodeInfoOO ()) -> () -> CodeInfoOO ()
forall a b. (a -> b) -> a -> b
$ String -> ()
forall a. HasCallStack => String -> a
error String
"The return value of this isn't used, and the thunk shouldn't fire."

instance StrategyPattern CodeInfoOO () where
  runStrategy :: String
-> [(String, MS (CodeInfoOO Body))]
-> Maybe (SValue CodeInfoOO)
-> Maybe (SVariable CodeInfoOO)
-> MS (CodeInfoOO Body)
runStrategy String
_ [(String, MS (CodeInfoOO Body))]
ss Maybe (SValue CodeInfoOO)
vl Maybe (SVariable CodeInfoOO)
_ = do
    ((String, MS (CodeInfoOO Body)) -> MS (CodeInfoOO Body))
-> [(String, MS (CodeInfoOO Body))]
-> StateT MethodState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (String, MS (CodeInfoOO Body)) -> MS (CodeInfoOO Body)
forall a b. (a, b) -> b
snd [(String, MS (CodeInfoOO Body))]
ss
    CodeInfoOO Value
_ <- LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
-> SValue CodeInfoOO -> State MethodState (CodeInfoOO Value)
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO Value) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO Value) MethodState
Lens' MethodState ValueState
lensMStoVS (SValue CodeInfoOO -> State MethodState (CodeInfoOO Value))
-> SValue CodeInfoOO -> State MethodState (CodeInfoOO Value)
forall a b. (a -> b) -> a -> b
$ SValue CodeInfoOO -> Maybe (SValue CodeInfoOO) -> SValue CodeInfoOO
forall a. a -> Maybe a -> a
fromMaybe (CodeInfoOO Value -> SValue CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Value -> SValue CodeInfoOO)
-> CodeInfoOO Value -> SValue CodeInfoOO
forall a b. (a -> b) -> a -> b
$ Value -> CodeInfoOO Value
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Value -> CodeInfoOO Value) -> Value -> CodeInfoOO Value
forall a b. (a -> b) -> a -> b
$ String -> Value
forall a. HasCallStack => String -> a
error String
"[runStrategy] The return value of this isn't used, and the thunk shouldn't fire.") Maybe (SValue CodeInfoOO)
vl
    CodeInfoOO Body -> MS (CodeInfoOO Body)
forall a. a -> StateT MethodState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Body -> MS (CodeInfoOO Body))
-> CodeInfoOO Body -> MS (CodeInfoOO Body)
forall a b. (a -> b) -> a -> b
$ Body -> CodeInfoOO Body
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Body -> CodeInfoOO Body) -> Body -> CodeInfoOO Body
forall a b. (a -> b) -> a -> b
$ String -> Body
forall a. HasCallStack => String -> a
error String
"[runStrategy] The return value of this isn't used, and the thunk shouldn't fire."

instance VisibilitySym CodeInfoOO () where
  private :: CodeInfoOO ()
private = () -> CodeInfoOO ()
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
  public :: CodeInfoOO ()
public  = () -> CodeInfoOO ()
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

instance ParameterSym CodeInfoOO where
  param :: SVariable CodeInfoOO -> MS (CodeInfoOO ParamData)
param        SVariable CodeInfoOO
_ = CodeInfoOO ParamData -> MS (CodeInfoOO ParamData)
forall a. a -> StateT MethodState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO ParamData -> MS (CodeInfoOO ParamData))
-> CodeInfoOO ParamData -> MS (CodeInfoOO ParamData)
forall a b. (a -> b) -> a -> b
$ ParamData -> CodeInfoOO ParamData
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (ParamData -> CodeInfoOO ParamData)
-> ParamData -> CodeInfoOO ParamData
forall a b. (a -> b) -> a -> b
$ String -> ParamData
forall a. HasCallStack => String -> a
error String
"The return value of this isn't used, and the thunk shouldn't fire."
  pointerParam :: SVariable CodeInfoOO -> MS (CodeInfoOO ParamData)
pointerParam SVariable CodeInfoOO
_ = CodeInfoOO ParamData -> MS (CodeInfoOO ParamData)
forall a. a -> StateT MethodState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO ParamData -> MS (CodeInfoOO ParamData))
-> CodeInfoOO ParamData -> MS (CodeInfoOO ParamData)
forall a b. (a -> b) -> a -> b
$ ParamData -> CodeInfoOO ParamData
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (ParamData -> CodeInfoOO ParamData)
-> ParamData -> CodeInfoOO ParamData
forall a b. (a -> b) -> a -> b
$ String -> ParamData
forall a. HasCallStack => String -> a
error String
"The return value of this isn't used, and the thunk shouldn't fire."

instance MethodSym CodeInfoOO () () () where
  docMain :: MS (CodeInfoOO Body) -> MS (CodeInfoOO ())
docMain = String -> MS (CodeInfoOO Body) -> MS (CodeInfoOO ())
updateMEMandCM String
"main"
  function :: String
-> CodeInfoOO ()
-> VS (CodeInfoOO TypeData)
-> [MS (CodeInfoOO ParamData)]
-> MS (CodeInfoOO Body)
-> MS (CodeInfoOO ())
function String
n CodeInfoOO ()
_ VS (CodeInfoOO TypeData)
_ [MS (CodeInfoOO ParamData)]
_ = String -> MS (CodeInfoOO Body) -> MS (CodeInfoOO ())
updateMEMandCM String
n
  mainFunction :: MS (CodeInfoOO Body) -> MS (CodeInfoOO ())
mainFunction = String -> MS (CodeInfoOO Body) -> MS (CodeInfoOO ())
updateMEMandCM String
"main"
  docFunc :: String
-> [String]
-> Maybe String
-> MS (CodeInfoOO ())
-> MS (CodeInfoOO ())
docFunc String
_ [String]
_ Maybe String
_ MS (CodeInfoOO ())
f = do
    CodeInfoOO ()
_ <- MS (CodeInfoOO ())
f
    MS (CodeInfoOO ())
forall s. State s (CodeInfoOO ())
noInfo

  inOutFunc :: String -> CodeInfoOO () -> InOutFunc CodeInfoOO ()
inOutFunc      String
n CodeInfoOO ()
_ [SVariable CodeInfoOO]
_ [SVariable CodeInfoOO]
_ [SVariable CodeInfoOO]
_     = String -> MS (CodeInfoOO Body) -> MS (CodeInfoOO ())
updateMEMandCM String
n
  docInOutFunc :: String -> CodeInfoOO () -> DocInOutFunc CodeInfoOO ()
docInOutFunc   String
n CodeInfoOO ()
_ String
_ [(String, SVariable CodeInfoOO)]
_ [(String, SVariable CodeInfoOO)]
_ [(String, SVariable CodeInfoOO)]
_   = String -> MS (CodeInfoOO Body) -> MS (CodeInfoOO ())
updateMEMandCM String
n

instance OOMethodSym CodeInfoOO () () () () where
  method :: String
-> CodeInfoOO ()
-> CodeInfoOO ()
-> VS (CodeInfoOO TypeData)
-> [MS (CodeInfoOO ParamData)]
-> MS (CodeInfoOO Body)
-> MS (CodeInfoOO ())
method String
n CodeInfoOO ()
_ CodeInfoOO ()
_ VS (CodeInfoOO TypeData)
_ [MS (CodeInfoOO ParamData)]
_ = String -> MS (CodeInfoOO Body) -> MS (CodeInfoOO ())
updateMEMandCM String
n
  getMethod :: SVariable CodeInfoOO -> MS (CodeInfoOO ())
getMethod SVariable CodeInfoOO
_ = MS (CodeInfoOO ())
forall s. State s (CodeInfoOO ())
noInfo
  setMethod :: SVariable CodeInfoOO -> MS (CodeInfoOO ())
setMethod SVariable CodeInfoOO
_ = MS (CodeInfoOO ())
forall s. State s (CodeInfoOO ())
noInfo
  constructor :: [MS (CodeInfoOO ParamData)]
-> NamedArgs CodeInfoOO
-> MS (CodeInfoOO Body)
-> MS (CodeInfoOO ())
constructor [MS (CodeInfoOO ParamData)]
_ NamedArgs CodeInfoOO
il MS (CodeInfoOO Body)
b = do
    ((SVariable CodeInfoOO, SValue CodeInfoOO)
 -> State MethodState (CodeInfoOO Value))
-> NamedArgs CodeInfoOO -> StateT MethodState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
-> SValue CodeInfoOO -> State MethodState (CodeInfoOO Value)
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO Value) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO Value) MethodState
Lens' MethodState ValueState
lensMStoVS (SValue CodeInfoOO -> State MethodState (CodeInfoOO Value))
-> ((SVariable CodeInfoOO, SValue CodeInfoOO) -> SValue CodeInfoOO)
-> (SVariable CodeInfoOO, SValue CodeInfoOO)
-> State MethodState (CodeInfoOO Value)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (SVariable CodeInfoOO, SValue CodeInfoOO) -> SValue CodeInfoOO
forall a b. (a, b) -> b
snd) NamedArgs CodeInfoOO
il
    CodeInfoOO Body
_ <- MS (CodeInfoOO Body)
b
    String
cn <- MS String
getClassName
    (MethodState -> MethodState) -> StateT MethodState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> MethodState -> MethodState
updateCallMap String
cn (MethodState -> MethodState)
-> (MethodState -> MethodState) -> MethodState -> MethodState
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> MethodState -> MethodState
updateMethodExcMap String
cn)
    MS (CodeInfoOO ())
forall s. State s (CodeInfoOO ())
noInfo

  inOutMethod :: String -> CodeInfoOO () -> CodeInfoOO () -> InOutFunc CodeInfoOO ()
inOutMethod    String
n CodeInfoOO ()
_ CodeInfoOO ()
_ [SVariable CodeInfoOO]
_ [SVariable CodeInfoOO]
_ [SVariable CodeInfoOO]
_   = String -> MS (CodeInfoOO Body) -> MS (CodeInfoOO ())
updateMEMandCM String
n
  docInOutMethod :: String
-> CodeInfoOO () -> CodeInfoOO () -> DocInOutFunc CodeInfoOO ()
docInOutMethod String
n CodeInfoOO ()
_ CodeInfoOO ()
_ String
_ [(String, SVariable CodeInfoOO)]
_ [(String, SVariable CodeInfoOO)]
_ [(String, SVariable CodeInfoOO)]
_ = String -> MS (CodeInfoOO Body) -> MS (CodeInfoOO ())
updateMEMandCM String
n

instance StateVarSym CodeInfoOO () () () where
  stateVar :: CodeInfoOO ()
-> CodeInfoOO ()
-> SVariable CodeInfoOO
-> CSStateVar CodeInfoOO ()
stateVar    CodeInfoOO ()
_ CodeInfoOO ()
_ SVariable CodeInfoOO
_   = CSStateVar CodeInfoOO ()
forall s. State s (CodeInfoOO ())
noInfo
  stateVarDef :: CodeInfoOO ()
-> CodeInfoOO ()
-> SVariable CodeInfoOO
-> SValue CodeInfoOO
-> CSStateVar CodeInfoOO ()
stateVarDef CodeInfoOO ()
_ CodeInfoOO ()
_ SVariable CodeInfoOO
_ SValue CodeInfoOO
_ = CSStateVar CodeInfoOO ()
forall s. State s (CodeInfoOO ())
noInfo
  constVar :: CodeInfoOO ()
-> SVariable CodeInfoOO
-> SValue CodeInfoOO
-> CSStateVar CodeInfoOO ()
constVar    CodeInfoOO ()
_ SVariable CodeInfoOO
_ SValue CodeInfoOO
_   = CSStateVar CodeInfoOO ()
forall s. State s (CodeInfoOO ())
noInfo

instance ClassSym CodeInfoOO () () () () () where
  buildClass :: Maybe String
-> [CSStateVar CodeInfoOO ()]
-> [MS (CodeInfoOO ())]
-> [MS (CodeInfoOO ())]
-> CS (CodeInfoOO Body)
buildClass Maybe String
_ [CSStateVar CodeInfoOO ()]
_ [MS (CodeInfoOO ())]
cs [MS (CodeInfoOO ())]
ms = do
    String
n <- LensLike'
  (Zoomed (StateT FileState Identity) String) ClassState FileState
-> StateT FileState Identity String
-> StateT ClassState Identity String
forall c.
LensLike'
  (Zoomed (StateT FileState Identity) c) ClassState FileState
-> StateT FileState Identity c -> StateT ClassState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT FileState Identity) String) ClassState FileState
(FileState -> Focusing Identity String FileState)
-> ClassState -> Focusing Identity String ClassState
Lens' ClassState FileState
lensCStoFS StateT FileState Identity String
getModuleName
    String
-> [String]
-> [CSStateVar CodeInfoOO ()]
-> [MS (CodeInfoOO ())]
-> [MS (CodeInfoOO ())]
-> CS (CodeInfoOO Body)
forall (r :: * -> *) vis smt md svr att.
ClassSym r vis smt md svr att =>
String
-> [String]
-> [CSStateVar r svr]
-> [MS (r md)]
-> [MS (r md)]
-> CS (r Body)
implementingClass String
n [] [] [MS (CodeInfoOO ())]
cs [MS (CodeInfoOO ())]
ms
  extraClass :: String
-> Maybe String
-> [CSStateVar CodeInfoOO ()]
-> [MS (CodeInfoOO ())]
-> [MS (CodeInfoOO ())]
-> CS (CodeInfoOO Body)
extraClass String
n Maybe String
_ [CSStateVar CodeInfoOO ()]
_ [MS (CodeInfoOO ())]
cs [MS (CodeInfoOO ())]
ms = do
    (ClassState -> ClassState) -> StateT ClassState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> ClassState -> ClassState
setClassName String
n)
    (MS (CodeInfoOO ()) -> CSStateVar CodeInfoOO ())
-> [MS (CodeInfoOO ())] -> StateT ClassState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (LensLike'
  (Zoomed (StateT MethodState Identity) (CodeInfoOO ()))
  ClassState
  MethodState
-> MS (CodeInfoOO ()) -> CSStateVar CodeInfoOO ()
forall c.
LensLike'
  (Zoomed (StateT MethodState Identity) c) ClassState MethodState
-> StateT MethodState Identity c -> StateT ClassState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT MethodState Identity) (CodeInfoOO ()))
  ClassState
  MethodState
(MethodState -> Focusing Identity (CodeInfoOO ()) MethodState)
-> ClassState -> Focusing Identity (CodeInfoOO ()) ClassState
Lens' ClassState MethodState
lensCStoMS) [MS (CodeInfoOO ())]
cs
    (MS (CodeInfoOO ()) -> CSStateVar CodeInfoOO ())
-> [MS (CodeInfoOO ())] -> StateT ClassState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (LensLike'
  (Zoomed (StateT MethodState Identity) (CodeInfoOO ()))
  ClassState
  MethodState
-> MS (CodeInfoOO ()) -> CSStateVar CodeInfoOO ()
forall c.
LensLike'
  (Zoomed (StateT MethodState Identity) c) ClassState MethodState
-> StateT MethodState Identity c -> StateT ClassState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT MethodState Identity) (CodeInfoOO ()))
  ClassState
  MethodState
(MethodState -> Focusing Identity (CodeInfoOO ()) MethodState)
-> ClassState -> Focusing Identity (CodeInfoOO ()) ClassState
Lens' ClassState MethodState
lensCStoMS) [MS (CodeInfoOO ())]
ms
    CodeInfoOO Body -> CS (CodeInfoOO Body)
forall a. a -> StateT ClassState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Body -> CS (CodeInfoOO Body))
-> CodeInfoOO Body -> CS (CodeInfoOO Body)
forall a b. (a -> b) -> a -> b
$ String -> CodeInfoOO Body
forall a. HasCallStack => String -> a
error String
"[extraClass] The return value of this isn't used, and the thunk shouldn't fire."

  implementingClass :: String
-> [String]
-> [CSStateVar CodeInfoOO ()]
-> [MS (CodeInfoOO ())]
-> [MS (CodeInfoOO ())]
-> CS (CodeInfoOO Body)
implementingClass String
n [String]
_ [CSStateVar CodeInfoOO ()]
_ [MS (CodeInfoOO ())]
cs [MS (CodeInfoOO ())]
ms = do
    (ClassState -> ClassState) -> StateT ClassState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> ClassState -> ClassState
addClass String
n (ClassState -> ClassState)
-> (ClassState -> ClassState) -> ClassState -> ClassState
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ClassState -> ClassState
setClassName String
n)
    (MS (CodeInfoOO ()) -> CSStateVar CodeInfoOO ())
-> [MS (CodeInfoOO ())] -> StateT ClassState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (LensLike'
  (Zoomed (StateT MethodState Identity) (CodeInfoOO ()))
  ClassState
  MethodState
-> MS (CodeInfoOO ()) -> CSStateVar CodeInfoOO ()
forall c.
LensLike'
  (Zoomed (StateT MethodState Identity) c) ClassState MethodState
-> StateT MethodState Identity c -> StateT ClassState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT MethodState Identity) (CodeInfoOO ()))
  ClassState
  MethodState
(MethodState -> Focusing Identity (CodeInfoOO ()) MethodState)
-> ClassState -> Focusing Identity (CodeInfoOO ()) ClassState
Lens' ClassState MethodState
lensCStoMS) [MS (CodeInfoOO ())]
cs
    (MS (CodeInfoOO ()) -> CSStateVar CodeInfoOO ())
-> [MS (CodeInfoOO ())] -> StateT ClassState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (LensLike'
  (Zoomed (StateT MethodState Identity) (CodeInfoOO ()))
  ClassState
  MethodState
-> MS (CodeInfoOO ()) -> CSStateVar CodeInfoOO ()
forall c.
LensLike'
  (Zoomed (StateT MethodState Identity) c) ClassState MethodState
-> StateT MethodState Identity c -> StateT ClassState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT MethodState Identity) (CodeInfoOO ()))
  ClassState
  MethodState
(MethodState -> Focusing Identity (CodeInfoOO ()) MethodState)
-> ClassState -> Focusing Identity (CodeInfoOO ()) ClassState
Lens' ClassState MethodState
lensCStoMS) [MS (CodeInfoOO ())]
ms
    CodeInfoOO Body -> CS (CodeInfoOO Body)
forall a. a -> StateT ClassState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Body -> CS (CodeInfoOO Body))
-> CodeInfoOO Body -> CS (CodeInfoOO Body)
forall a b. (a -> b) -> a -> b
$ String -> CodeInfoOO Body
forall a. HasCallStack => String -> a
error String
"[implementingClass] The return value of this isn't used, and the thunk shouldn't fire."

  docClass :: String -> CS (CodeInfoOO Body) -> CS (CodeInfoOO Body)
docClass String
_ CS (CodeInfoOO Body)
c = do
    CodeInfoOO Body
_ <- CS (CodeInfoOO Body)
c
    CodeInfoOO Body -> CS (CodeInfoOO Body)
forall a. a -> StateT ClassState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Body -> CS (CodeInfoOO Body))
-> CodeInfoOO Body -> CS (CodeInfoOO Body)
forall a b. (a -> b) -> a -> b
$ String -> CodeInfoOO Body
forall a. HasCallStack => String -> a
error String
"[docClass] The return value of this isn't used, and the thunk shouldn't fire."

instance ModuleSym CodeInfoOO () () () () () where
  buildModule :: String
-> [String]
-> [MS (CodeInfoOO ())]
-> [CS (CodeInfoOO Body)]
-> FS (CodeInfoOO Module)
buildModule String
n [String]
_ [MS (CodeInfoOO ())]
funcs [CS (CodeInfoOO Body)]
classes = do
    (FileState -> FileState) -> StateT FileState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> FileState -> FileState
setModuleName String
n)
    (CS (CodeInfoOO Body)
 -> StateT FileState Identity (CodeInfoOO Body))
-> [CS (CodeInfoOO Body)] -> StateT FileState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (LensLike'
  (Zoomed (StateT ClassState Identity) (CodeInfoOO Body))
  FileState
  ClassState
-> CS (CodeInfoOO Body)
-> StateT FileState Identity (CodeInfoOO Body)
forall c.
LensLike'
  (Zoomed (StateT ClassState Identity) c) FileState ClassState
-> StateT ClassState Identity c -> StateT FileState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ClassState Identity) (CodeInfoOO Body))
  FileState
  ClassState
(ClassState -> Focusing Identity (CodeInfoOO Body) ClassState)
-> FileState -> Focusing Identity (CodeInfoOO Body) FileState
Lens' FileState ClassState
lensFStoCS) [CS (CodeInfoOO Body)]
classes
    (MS (CodeInfoOO ()) -> StateT FileState Identity (CodeInfoOO ()))
-> [MS (CodeInfoOO ())] -> StateT FileState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (LensLike'
  (Zoomed (StateT MethodState Identity) (CodeInfoOO ()))
  FileState
  MethodState
-> MS (CodeInfoOO ()) -> StateT FileState Identity (CodeInfoOO ())
forall c.
LensLike'
  (Zoomed (StateT MethodState Identity) c) FileState MethodState
-> StateT MethodState Identity c -> StateT FileState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT MethodState Identity) (CodeInfoOO ()))
  FileState
  MethodState
(MethodState -> Focusing Identity (CodeInfoOO ()) MethodState)
-> FileState -> Focusing Identity (CodeInfoOO ()) FileState
Lens' FileState MethodState
lensFStoMS) [MS (CodeInfoOO ())]
funcs
    (FileState -> FileState)
-> CodeInfoOO Module -> FS (CodeInfoOO Module)
forall s a. (s -> s) -> a -> State s a
modifyReturn (String -> FileState -> FileState
updateClassMap String
n) (Module -> CodeInfoOO Module
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Module -> CodeInfoOO Module) -> Module -> CodeInfoOO Module
forall a b. (a -> b) -> a -> b
$ String -> Module
forall a. HasCallStack => String -> a
error String
"[buildModule] The return value of this isn't used, and the thunk shouldn't fire.")

-- Helpers

noInfo :: State s (CodeInfoOO ())
noInfo :: forall s. State s (CodeInfoOO ())
noInfo = CodeInfoOO () -> State s (CodeInfoOO ())
forall a s. a -> State s a
toState (CodeInfoOO () -> State s (CodeInfoOO ()))
-> CodeInfoOO () -> State s (CodeInfoOO ())
forall a b. (a -> b) -> a -> b
$ () -> CodeInfoOO ()
forall (r :: * -> *) a. Monad r => a -> r a
toCode ()

noInfoScope :: CodeInfoOO ScopeData
noInfoScope :: CodeInfoOO ScopeData
noInfoScope = ScopeData -> CodeInfoOO ScopeData
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (ScopeData -> CodeInfoOO ScopeData)
-> ScopeData -> CodeInfoOO ScopeData
forall a b. (a -> b) -> a -> b
$ ScopeTag -> ScopeData
sd ScopeTag
Global -- Hack

noInfoBinder :: VSBinder CodeInfoOO
noInfoBinder :: VSBinder CodeInfoOO
noInfoBinder = CodeInfoOO BinderD -> VSBinder CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO BinderD -> VSBinder CodeInfoOO)
-> CodeInfoOO BinderD -> VSBinder CodeInfoOO
forall a b. (a -> b) -> a -> b
$ BinderD -> CodeInfoOO BinderD
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (BinderD -> CodeInfoOO BinderD) -> BinderD -> CodeInfoOO BinderD
forall a b. (a -> b) -> a -> b
$ String -> TypeData -> BinderD
bindFormD String
"" (CodeType -> String -> Body -> TypeData
td CodeType
Void String
"" Body
empty) -- Hack

updateMEMandCM :: String -> MS (CodeInfoOO Body) -> MS (CodeInfoOO ())
updateMEMandCM :: String -> MS (CodeInfoOO Body) -> MS (CodeInfoOO ())
updateMEMandCM String
n MS (CodeInfoOO Body)
b = do
  CodeInfoOO Body
_ <- MS (CodeInfoOO Body)
b
  (MethodState -> MethodState) -> StateT MethodState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (String -> MethodState -> MethodState
updateCallMap String
n (MethodState -> MethodState)
-> (MethodState -> MethodState) -> MethodState -> MethodState
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> MethodState -> MethodState
updateMethodExcMap String
n)
  MS (CodeInfoOO ())
forall s. State s (CodeInfoOO ())
noInfo

evalConds :: [(SValue CodeInfoOO, MS (CodeInfoOO Body))] -> MS (CodeInfoOO Body) ->
  MS (CodeInfoOO ())
evalConds :: [(SValue CodeInfoOO, MS (CodeInfoOO Body))]
-> MS (CodeInfoOO Body) -> MS (CodeInfoOO ())
evalConds [(SValue CodeInfoOO, MS (CodeInfoOO Body))]
cs MS (CodeInfoOO Body)
def = do
  ((SValue CodeInfoOO, MS (CodeInfoOO Body))
 -> State MethodState (CodeInfoOO Value))
-> [(SValue CodeInfoOO, MS (CodeInfoOO Body))]
-> StateT MethodState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
-> SValue CodeInfoOO -> State MethodState (CodeInfoOO Value)
forall c.
LensLike'
  (Zoomed (StateT ValueState Identity) c) MethodState ValueState
-> StateT ValueState Identity c -> StateT MethodState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT ValueState Identity) (CodeInfoOO Value))
  MethodState
  ValueState
(ValueState -> Focusing Identity (CodeInfoOO Value) ValueState)
-> MethodState -> Focusing Identity (CodeInfoOO Value) MethodState
Lens' MethodState ValueState
lensMStoVS (SValue CodeInfoOO -> State MethodState (CodeInfoOO Value))
-> ((SValue CodeInfoOO, MS (CodeInfoOO Body)) -> SValue CodeInfoOO)
-> (SValue CodeInfoOO, MS (CodeInfoOO Body))
-> State MethodState (CodeInfoOO Value)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (SValue CodeInfoOO, MS (CodeInfoOO Body)) -> SValue CodeInfoOO
forall a b. (a, b) -> a
fst) [(SValue CodeInfoOO, MS (CodeInfoOO Body))]
cs
  ((SValue CodeInfoOO, MS (CodeInfoOO Body)) -> MS (CodeInfoOO Body))
-> [(SValue CodeInfoOO, MS (CodeInfoOO Body))]
-> StateT MethodState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (SValue CodeInfoOO, MS (CodeInfoOO Body)) -> MS (CodeInfoOO Body)
forall a b. (a, b) -> b
snd [(SValue CodeInfoOO, MS (CodeInfoOO Body))]
cs
  CodeInfoOO Body
_ <- MS (CodeInfoOO Body)
def
  MS (CodeInfoOO ())
forall s. State s (CodeInfoOO ())
noInfo

addCurrModCallVal :: String -> SValue CodeInfoOO
addCurrModCallVal :: String -> SValue CodeInfoOO
addCurrModCallVal String
n = do
  String
mn <- LensLike'
  (Zoomed (StateT FileState Identity) String) ValueState FileState
-> StateT FileState Identity String
-> StateT ValueState Identity String
forall c.
LensLike'
  (Zoomed (StateT FileState Identity) c) ValueState FileState
-> StateT FileState Identity c -> StateT ValueState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT FileState Identity) String) ValueState FileState
(FileState -> Focusing Identity String FileState)
-> ValueState -> Focusing Identity String ValueState
Lens' ValueState FileState
lensVStoFS StateT FileState Identity String
getModuleName
  (ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (QualifiedName -> ValueState -> ValueState
addCall (String -> String -> QualifiedName
qualName String
mn String
n))
  CodeInfoOO Value -> SValue CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Value -> SValue CodeInfoOO)
-> CodeInfoOO Value -> SValue CodeInfoOO
forall a b. (a -> b) -> a -> b
$ String -> CodeInfoOO Value
forall a. HasCallStack => String -> a
error String
"[addCurrModCallSmt] The return value of this isn't used, and the thunk shouldn't fire."

addCurrModCallSmt :: String -> VS (CodeInfoOO ())
addCurrModCallSmt :: String -> StateT ValueState Identity (CodeInfoOO ())
addCurrModCallSmt String
n = do
  String
mn <- LensLike'
  (Zoomed (StateT FileState Identity) String) ValueState FileState
-> StateT FileState Identity String
-> StateT ValueState Identity String
forall c.
LensLike'
  (Zoomed (StateT FileState Identity) c) ValueState FileState
-> StateT FileState Identity c -> StateT ValueState Identity c
forall (m :: * -> *) (n :: * -> *) s t c.
Zoom m n s t =>
LensLike' (Zoomed m c) t s -> m c -> n c
zoom LensLike'
  (Zoomed (StateT FileState Identity) String) ValueState FileState
(FileState -> Focusing Identity String FileState)
-> ValueState -> Focusing Identity String ValueState
Lens' ValueState FileState
lensVStoFS StateT FileState Identity String
getModuleName
  (ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (QualifiedName -> ValueState -> ValueState
addCall (String -> String -> QualifiedName
qualName String
mn String
n))
  CodeInfoOO () -> StateT ValueState Identity (CodeInfoOO ())
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO () -> StateT ValueState Identity (CodeInfoOO ()))
-> CodeInfoOO () -> StateT ValueState Identity (CodeInfoOO ())
forall a b. (a -> b) -> a -> b
$ String -> CodeInfoOO ()
forall a. HasCallStack => String -> a
error String
"[addCurrModCallSmt] The return value of this isn't used, and the thunk shouldn't fire."

addExternalCallSmt :: String -> String -> VS (CodeInfoOO ())
addExternalCallSmt :: String -> String -> StateT ValueState Identity (CodeInfoOO ())
addExternalCallSmt String
l String
n = do
  (ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (QualifiedName -> ValueState -> ValueState
addCall (String -> String -> QualifiedName
qualName String
l String
n))
  CodeInfoOO () -> StateT ValueState Identity (CodeInfoOO ())
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO () -> StateT ValueState Identity (CodeInfoOO ()))
-> CodeInfoOO () -> StateT ValueState Identity (CodeInfoOO ())
forall a b. (a -> b) -> a -> b
$ String -> CodeInfoOO ()
forall a. HasCallStack => String -> a
error String
"[addExternalCall] The return value of this isn't used, and the thunk shouldn't fire."

addExternalCallVal :: String -> String -> SValue CodeInfoOO
addExternalCallVal :: String -> String -> SValue CodeInfoOO
addExternalCallVal String
l String
n = do
  (ValueState -> ValueState) -> StateT ValueState Identity ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (QualifiedName -> ValueState -> ValueState
addCall (String -> String -> QualifiedName
qualName String
l String
n))
  CodeInfoOO Value -> SValue CodeInfoOO
forall a. a -> StateT ValueState Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO Value -> SValue CodeInfoOO)
-> CodeInfoOO Value -> SValue CodeInfoOO
forall a b. (a -> b) -> a -> b
$ String -> CodeInfoOO Value
forall a. HasCallStack => String -> a
error String
"[addExternalCall] The return value of this isn't used, and the thunk shouldn't fire."

executeList :: [State a (CodeInfoOO ())] -> State a (CodeInfoOO ())
executeList :: forall a. [State a (CodeInfoOO ())] -> State a (CodeInfoOO ())
executeList [State a (CodeInfoOO ())]
l = do
  [State a (CodeInfoOO ())] -> StateT a Identity ()
forall (t :: * -> *) (m :: * -> *) a.
(Foldable t, Monad m) =>
t (m a) -> m ()
sequence_ [State a (CodeInfoOO ())]
l
  State a (CodeInfoOO ())
forall s. State s (CodeInfoOO ())
noInfo

executeListErr :: [State a (CodeInfoOO b)] -> State a (CodeInfoOO c)
executeListErr :: forall a b c. [State a (CodeInfoOO b)] -> State a (CodeInfoOO c)
executeListErr [State a (CodeInfoOO b)]
l = do
  [State a (CodeInfoOO b)] -> StateT a Identity ()
forall (t :: * -> *) (m :: * -> *) a.
(Foldable t, Monad m) =>
t (m a) -> m ()
sequence_ [State a (CodeInfoOO b)]
l
  CodeInfoOO c -> State a (CodeInfoOO c)
forall a. a -> StateT a Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO c -> State a (CodeInfoOO c))
-> CodeInfoOO c -> State a (CodeInfoOO c)
forall a b. (a -> b) -> a -> b
$ c -> CodeInfoOO c
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (c -> CodeInfoOO c) -> c -> CodeInfoOO c
forall a b. (a -> b) -> a -> b
$ String -> c
forall a. HasCallStack => String -> a
error String
"[executeListErr] The return value of this isn't used, and the thunk shouldn't fire."

execute1 :: State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1 :: forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1 State a (CodeInfoOO b)
s = do
  CodeInfoOO b
_ <- State a (CodeInfoOO b)
s
  CodeInfoOO c -> State a (CodeInfoOO c)
forall a. a -> StateT a Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (CodeInfoOO c -> State a (CodeInfoOO c))
-> CodeInfoOO c -> State a (CodeInfoOO c)
forall a b. (a -> b) -> a -> b
$ c -> CodeInfoOO c
forall a. a -> CodeInfoOO a
forall (m :: * -> *) a. Monad m => a -> m a
return (c -> CodeInfoOO c) -> c -> CodeInfoOO c
forall a b. (a -> b) -> a -> b
$ String -> c
forall a. HasCallStack => String -> a
error String
"[execute1] The return value of this isn't used, and the thunk shouldn't fire."

execute2 :: State a (CodeInfoOO b) -> State a (CodeInfoOO c) ->
  State a (CodeInfoOO d)
execute2 :: forall a b c d.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c) -> State a (CodeInfoOO d)
execute2 State a (CodeInfoOO b)
s1 State a (CodeInfoOO c)
s2 = do
  CodeInfoOO b
_ <- State a (CodeInfoOO b)
s1
  State a (CodeInfoOO c) -> State a (CodeInfoOO d)
forall a b c. State a (CodeInfoOO b) -> State a (CodeInfoOO c)
execute1 State a (CodeInfoOO c)
s2

execute3 :: State a (CodeInfoOO b) -> State a (CodeInfoOO c) ->
  State a (CodeInfoOO d) -> State a (CodeInfoOO e)
execute3 :: forall a b c d e.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c)
-> State a (CodeInfoOO d)
-> State a (CodeInfoOO e)
execute3 State a (CodeInfoOO b)
s1 State a (CodeInfoOO c)
s2 State a (CodeInfoOO d)
s3 = do
  CodeInfoOO b
_ <- State a (CodeInfoOO b)
s1
  State a (CodeInfoOO c)
-> State a (CodeInfoOO d) -> State a (CodeInfoOO e)
forall a b c d.
State a (CodeInfoOO b)
-> State a (CodeInfoOO c) -> State a (CodeInfoOO d)
execute2 State a (CodeInfoOO c)
s2 State a (CodeInfoOO d)
s3

currModCall :: String -> [VS (CodeInfoOO Value)] ->
  [(VS (CodeInfoOO Variable), VS (CodeInfoOO Value))] -> VS (CodeInfoOO Value)
currModCall :: String
-> [SValue CodeInfoOO] -> NamedArgs CodeInfoOO -> SValue CodeInfoOO
currModCall String
n [SValue CodeInfoOO]
ps NamedArgs CodeInfoOO
ns = do
  [SValue CodeInfoOO] -> StateT ValueState Identity ()
forall (t :: * -> *) (m :: * -> *) a.
(Foldable t, Monad m) =>
t (m a) -> m ()
sequence_ [SValue CodeInfoOO]
ps
  ((SVariable CodeInfoOO, SValue CodeInfoOO) -> SVariable CodeInfoOO)
-> NamedArgs CodeInfoOO -> StateT ValueState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (SVariable CodeInfoOO, SValue CodeInfoOO) -> SVariable CodeInfoOO
forall a b. (a, b) -> a
fst NamedArgs CodeInfoOO
ns
  ((SVariable CodeInfoOO, SValue CodeInfoOO) -> SValue CodeInfoOO)
-> NamedArgs CodeInfoOO -> StateT ValueState Identity ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (SVariable CodeInfoOO, SValue CodeInfoOO) -> SValue CodeInfoOO
forall a b. (a, b) -> b
snd NamedArgs CodeInfoOO
ns
  String -> SValue CodeInfoOO
addCurrModCallVal String
n