Explicitly embed after mapEmbeds

The behavior of mapEmbeds is changing at the Preserves library.
This commit is contained in:
Emery Hemingway 2024-06-23 15:26:29 +03:00
parent 85522a4c3c
commit cdc59b7641
2 changed files with 7 additions and 4 deletions

View File

@ -415,7 +415,8 @@ proc publish(turn: Turn; cap: Cap; v: Value; h: Handle) =
act.enqueue.event.target.oid = cap.target.oid.toPreserves
act.enqueue.event.detail = trace.TurnEvent(orKind: trace.TurnEventKind.assert)
act.enqueue.event.detail.assert.assertion.value.value =
mapEmbeds(v) do (cap: Value) -> Value: discard
mapEmbeds(v) do (cap: Value) -> Value:
result.embedded = true # #:#f
act.enqueue.event.detail.assert.handle = h
turn.desc.actions.add act
queueEffect(turn, cap.relay) do (turn: Turn):
@ -460,7 +461,8 @@ proc message*(turn: Turn; r: Cap; v: Value) =
var act = initEnqueue(turn, r)
act.enqueue.event.detail = trace.TurnEvent(orKind: TurnEventKind.message)
act.enqueue.event.detail.message.body.value.value =
mapEmbeds(a) do (cap: Value) -> Value: discard
mapEmbeds(a) do (cap: Value) -> Value:
result.embedded = true # #:#f
turn.desc.actions.add act
queueEffect(turn, r.relay) do (turn: Turn):
when tracing:

View File

@ -97,8 +97,9 @@ proc rewriteOut(relay: Relay; v: Assertion):
var exported: seq[WireSymbol]
result.rewritten = mapEmbeds(v) do (pr: Value) -> Value:
let o = pr.unembed(Cap); if o.isSome:
rewriteCapOut(relay, o.get, exported).toPreserves
else: pr
result = rewriteCapOut(relay, o.get, exported).toPreserves
result.embedded = true
else: result = pr
result.exported = exported
proc register(relay: Relay; v: Assertion; h: Handle): tuple[rewritten: Value, exported: seq[WireSymbol]] =