Skip to content

Commit 52643fd

Browse files
authored
Merge pull request #5681 from unisonweb/cp/restrict-builtin-foreigns
Restrict more BuiltinForeign instances
2 parents fc78d8a + 26a5865 commit 52643fd

File tree

2 files changed

+30
-26
lines changed

2 files changed

+30
-26
lines changed

unison-runtime/src/Unison/Runtime/Foreign.hs

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ where
2222
import Control.Concurrent (MVar, ThreadId)
2323
import Control.Concurrent.STM (TVar)
2424
import Crypto.Hash qualified as Hash
25-
import Data.Atomics qualified as Atomic
2625
import Data.IORef (IORef)
2726
import Data.Tagged (Tagged (..))
2827
import Data.X509 qualified as X509
@@ -38,7 +37,6 @@ import Unison.Runtime.ANF (Code, Value)
3837
import Unison.Runtime.Array
3938
import Unison.Type qualified as Ty
4039
import Unison.Util.Bytes (Bytes)
41-
import Unison.Util.RefPromise (Promise)
4240
import Unison.Util.Text (Text)
4341
import Unison.Util.Text.Pattern (CPattern, CharPattern)
4442
import Unsafe.Coerce
@@ -306,30 +304,6 @@ instance BuiltinForeign TimeSpec where
306304
foreignName = Tagged "TimeSpec"
307305
foreignRef = Tagged Ty.timeSpecRef
308306

309-
instance BuiltinForeign (Atomic.Ticket a) where
310-
foreignName = Tagged "Ticket"
311-
foreignRef = Tagged Ty.ticketRef
312-
313-
instance BuiltinForeign (MVar a) where
314-
foreignName = Tagged "MVar"
315-
foreignRef = Tagged Ty.mvarRef
316-
317-
instance BuiltinForeign (TVar a) where
318-
foreignName = Tagged "TVar"
319-
foreignRef = Tagged Ty.tvarRef
320-
321-
instance BuiltinForeign (Promise a) where
322-
foreignName = Tagged "Promise"
323-
foreignRef = Tagged Ty.promiseRef
324-
325-
instance BuiltinForeign (MutableArray s e) where
326-
foreignName = Tagged "MutableArray"
327-
foreignRef = Tagged Ty.marrayRef
328-
329-
instance BuiltinForeign (Array e) where
330-
foreignName = Tagged "Array"
331-
foreignRef = Tagged Ty.iarrayRef
332-
333307
instance BuiltinForeign (MutableByteArray s) where
334308
foreignName = Tagged "MutableByteArray"
335309
foreignRef = Tagged Ty.mbytearrayRef

unison-runtime/src/Unison/Runtime/Stack.hs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,12 @@ import Unison.Type qualified as Ty
190190
import Unison.Util.EnumContainers as EC
191191
import Unison.Util.Monoid qualified as Monoid
192192
import Prelude hiding (words)
193+
import qualified Data.Atomics as Atomic
194+
195+
import Control.Concurrent (MVar)
196+
import Control.Concurrent.STM (TVar)
197+
import Unison.Util.RefPromise (Promise)
198+
193199

194200
#ifdef STACK_CHECK
195201
type DebugCallStack = (HasCallStack :: Constraint)
@@ -769,6 +775,30 @@ instance BuiltinForeign (IORef Val) where
769775
foreignName = Tagged "IORef"
770776
foreignRef = Tagged Ty.refRef
771777

778+
instance BuiltinForeign (Atomic.Ticket Val) where
779+
foreignName = Tagged "Ticket"
780+
foreignRef = Tagged Ty.ticketRef
781+
782+
instance BuiltinForeign (MVar Val) where
783+
foreignName = Tagged "MVar"
784+
foreignRef = Tagged Ty.mvarRef
785+
786+
instance BuiltinForeign (TVar Val) where
787+
foreignName = Tagged "TVar"
788+
foreignRef = Tagged Ty.tvarRef
789+
790+
instance BuiltinForeign (Promise Val) where
791+
foreignName = Tagged "Promise"
792+
foreignRef = Tagged Ty.promiseRef
793+
794+
instance BuiltinForeign (MutableArray s Val) where
795+
foreignName = Tagged "MutableArray"
796+
foreignRef = Tagged Ty.marrayRef
797+
798+
instance BuiltinForeign (Array Val) where
799+
foreignName = Tagged "Array"
800+
foreignRef = Tagged Ty.iarrayRef
801+
772802
-- | A nulled out value you can use when filling empty arrays, etc.
773803
emptyVal :: Val
774804
emptyVal = Val (-1) BlackHole

0 commit comments

Comments
 (0)