From c558b300a3353edf7c88a2c363cb6bc7b7c1dcb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Sun, 21 Sep 2025 22:49:21 +0200 Subject: Require result of TestBlock to be ExprType instance --- src/Script/Object.hs | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/Script/Object.hs') diff --git a/src/Script/Object.hs b/src/Script/Object.hs index 9232b21..7e60f80 100644 --- a/src/Script/Object.hs +++ b/src/Script/Object.hs @@ -7,8 +7,11 @@ module Script.Object ( ) where import Data.Kind +import Data.Text (Text) import Data.Typeable +import Script.Expr.Class + newtype ObjectId = ObjectId Int @@ -16,9 +19,17 @@ class Typeable a => ObjectType m a where type ConstructorArgs a :: Type type ConstructorArgs a = () + textObjectType :: proxy (m a) -> proxy a -> Text + textObjectValue :: proxy (m a) -> a -> Text + createObject :: ObjectId -> ConstructorArgs a -> m (Object m a) destroyObject :: Object m a -> m () +instance (Typeable m, ObjectType m a) => ExprType (Object m a) where + textExprType _ = textObjectType (Proxy @(m a)) (Proxy @a) + textExprValue = textObjectValue (Proxy @(m a)) . objImpl + + data Object m a = ObjectType m a => Object { objId :: ObjectId , objImpl :: a -- cgit v1.2.3