packages feed

hydra-0.15.0: src/main/haskell/Hydra/Dsl/Meta/Context.hs

-- | Haskell-specific convenience layer over the generated Hydra.Dsl.Context module.

module Hydra.Dsl.Meta.Context (
  module Hydra.Dsl.Context,
  module Hydra.Dsl.Meta.Context,
  DslCtx.contextTrace,
  DslCtx.contextMessages,
  DslCtx.contextOther,
) where

import Hydra.Kernel
import Hydra.Dsl.Meta.Phantoms
import Hydra.Dsl.Context hiding (contextTrace, contextMessages, contextOther)
import qualified Hydra.Dsl.Context as DslCtx

import qualified Hydra.Dsl.Meta.Lib.Eithers as Eithers
import qualified Hydra.Dsl.Meta.Lib.Lists as Lists


-- | Identity function on Either (Context wrapping removed; retained for API compatibility during migration)
withContext :: TTerm Context -> TTerm (Either e a) -> TTerm (Either e a)
withContext _cx e = e

-- | Push a trace frame onto a Context
pushTrace :: TTerm String -> TTerm Context -> TTerm Context
pushTrace label cx = context
    (Lists.cons label (DslCtx.contextTrace cx))
    (DslCtx.contextMessages cx)
    (DslCtx.contextOther cx)

-- | Create a Left error (Context parameter is ignored; retained for API compatibility during migration)
failInContext :: TTerm e -> TTerm Context -> TTerm (Either e a)
failInContext err _cx = left err