diff --git a/src/syndicate/protocols/dataspace.nim b/src/syndicate/protocols/dataspace.nim index f5a6278..a52a14c 100644 --- a/src/syndicate/protocols/dataspace.nim +++ b/src/syndicate/protocols/dataspace.nim @@ -3,7 +3,7 @@ import preserves, dataspacePatterns type - Observe*[Cap] {.preservesRecord: "Observe".} = ref object + Observe*[Cap] {.acyclic, preservesRecord: "Observe".} = ref object `pattern`*: dataspacePatterns.Pattern[Cap] `observer`*: Cap diff --git a/src/syndicate/protocols/dataspacePatterns.nim b/src/syndicate/protocols/dataspacePatterns.nim index e8d7d03..6269c34 100644 --- a/src/syndicate/protocols/dataspacePatterns.nim +++ b/src/syndicate/protocols/dataspacePatterns.nim @@ -43,24 +43,24 @@ type DLit*[Cap] {.preservesRecord: "lit".} = object `value`*: AnyAtom[Cap] - DBind*[Cap] {.preservesRecord: "bind".} = ref object + DBind*[Cap] {.acyclic, preservesRecord: "bind".} = ref object `pattern`*: Pattern[Cap] DDiscard* {.preservesRecord: "_".} = object DCompoundKind* {.pure.} = enum `rec`, `arr`, `dict` - DCompoundRec*[Cap] {.preservesRecord: "rec".} = ref object + DCompoundRec*[Cap] {.acyclic, preservesRecord: "rec".} = ref object `label`*: Preserve[Cap] `fields`*: seq[Pattern[Cap]] - DCompoundArr*[Cap] {.preservesRecord: "arr".} = ref object + DCompoundArr*[Cap] {.acyclic, preservesRecord: "arr".} = ref object `items`*: seq[Pattern[Cap]] - DCompoundDict*[Cap] {.preservesRecord: "dict".} = ref object + DCompoundDict*[Cap] {.acyclic, preservesRecord: "dict".} = ref object `entries`*: Table[Preserve[Cap], Pattern[Cap]] - `DCompound`*[Cap] {.preservesOr.} = ref object + `DCompound`*[Cap] {.acyclic, preservesOr.} = ref object case orKind*: DCompoundKind of DCompoundKind.`rec`: `rec`*: DCompoundRec[Cap] @@ -74,7 +74,7 @@ type PatternKind* {.pure.} = enum `DDiscard`, `DBind`, `DLit`, `DCompound` - `Pattern`*[Cap] {.preservesOr.} = ref object + `Pattern`*[Cap] {.acyclic, preservesOr.} = ref object case orKind*: PatternKind of PatternKind.`DDiscard`: `ddiscard`*: DDiscard diff --git a/src/syndicate/protocols/sturdy.nim b/src/syndicate/protocols/sturdy.nim index 570b5cc..3b56a69 100644 --- a/src/syndicate/protocols/sturdy.nim +++ b/src/syndicate/protocols/sturdy.nim @@ -5,17 +5,17 @@ import type PCompoundKind* {.pure.} = enum `rec`, `arr`, `dict` - PCompoundRec*[Cap] {.preservesRecord: "rec".} = ref object + PCompoundRec*[Cap] {.acyclic, preservesRecord: "rec".} = ref object `label`*: Preserve[Cap] `fields`*: seq[Pattern[Cap]] - PCompoundArr*[Cap] {.preservesRecord: "arr".} = ref object + PCompoundArr*[Cap] {.acyclic, preservesRecord: "arr".} = ref object `items`*: seq[Pattern[Cap]] - PCompoundDict*[Cap] {.preservesRecord: "dict".} = ref object + PCompoundDict*[Cap] {.acyclic, preservesRecord: "dict".} = ref object `entries`*: Table[Preserve[Cap], Pattern[Cap]] - `PCompound`*[Cap] {.preservesOr.} = ref object + `PCompound`*[Cap] {.acyclic, preservesOr.} = ref object case orKind*: PCompoundKind of PCompoundKind.`rec`: `rec`*: PCompoundRec[Cap] @@ -27,12 +27,12 @@ type `dict`*: PCompoundDict[Cap] - Reject*[Cap] {.preservesRecord: "reject".} = ref object + Reject*[Cap] {.acyclic, preservesRecord: "reject".} = ref object `pattern`*: Pattern[Cap] CaveatsFieldKind* {.pure.} = enum `present`, `invalid`, `absent` - CaveatsFieldPresent*[Cap] {.preservesDictionary.} = ref object + CaveatsFieldPresent*[Cap] {.acyclic, preservesDictionary.} = ref object `caveats`*: seq[Caveat[Cap]] CaveatsFieldInvalid*[Cap] {.preservesDictionary.} = object @@ -40,7 +40,7 @@ type CaveatsFieldAbsent* {.preservesDictionary.} = object - `CaveatsField`*[Cap] {.preservesOr.} = ref object + `CaveatsField`*[Cap] {.acyclic, preservesOr.} = ref object case orKind*: CaveatsFieldKind of CaveatsFieldKind.`present`: `present`*: CaveatsFieldPresent[Cap] @@ -56,11 +56,11 @@ type `key`*: seq[byte] `oid`*: Preserve[Cap] - PAnd*[Cap] {.preservesRecord: "and".} = ref object + PAnd*[Cap] {.acyclic, preservesRecord: "and".} = ref object `patterns`*: seq[Pattern[Cap]] SturdyStepDetail*[Cap] = Parameters[Cap] - Rewrite*[Cap] {.preservesRecord: "rewrite".} = ref object + Rewrite*[Cap] {.acyclic, preservesRecord: "rewrite".} = ref object `pattern`*: Pattern[Cap] `template`*: Template[Cap] @@ -68,7 +68,7 @@ type TRef* {.preservesRecord: "ref".} = object `binding`*: BiggestInt - PBind*[Cap] {.preservesRecord: "bind".} = ref object + PBind*[Cap] {.acyclic, preservesRecord: "bind".} = ref object `pattern`*: Pattern[Cap] Lit*[Cap] {.preservesRecord: "lit".} = object @@ -76,17 +76,17 @@ type TCompoundKind* {.pure.} = enum `rec`, `arr`, `dict` - TCompoundRec*[Cap] {.preservesRecord: "rec".} = ref object + TCompoundRec*[Cap] {.acyclic, preservesRecord: "rec".} = ref object `label`*: Preserve[Cap] `fields`*: seq[Template[Cap]] - TCompoundArr*[Cap] {.preservesRecord: "arr".} = ref object + TCompoundArr*[Cap] {.acyclic, preservesRecord: "arr".} = ref object `items`*: seq[Template[Cap]] - TCompoundDict*[Cap] {.preservesRecord: "dict".} = ref object + TCompoundDict*[Cap] {.acyclic, preservesRecord: "dict".} = ref object `entries`*: Table[Preserve[Cap], Template[Cap]] - `TCompound`*[Cap] {.preservesOr.} = ref object + `TCompound`*[Cap] {.acyclic, preservesOr.} = ref object case orKind*: TCompoundKind of TCompoundKind.`rec`: `rec`*: TCompoundRec[Cap] @@ -106,7 +106,7 @@ type TemplateKind* {.pure.} = enum `TAttenuate`, `TRef`, `Lit`, `TCompound` - `Template`*[Cap] {.preservesOr.} = ref object + `Template`*[Cap] {.acyclic, preservesOr.} = ref object case orKind*: TemplateKind of TemplateKind.`TAttenuate`: `tattenuate`*: TAttenuate[Cap] @@ -124,7 +124,7 @@ type CaveatKind* {.pure.} = enum `Rewrite`, `Alts`, `Reject`, `unknown` CaveatUnknown*[Cap] = Preserve[Cap] - `Caveat`*[Cap] {.preservesOr.} = ref object + `Caveat`*[Cap] {.acyclic, preservesOr.} = ref object case orKind*: CaveatKind of CaveatKind.`Rewrite`: `rewrite`*: Rewrite[Cap] @@ -139,10 +139,10 @@ type `unknown`*: CaveatUnknown[Cap] - PNot*[Cap] {.preservesRecord: "not".} = ref object + PNot*[Cap] {.acyclic, preservesRecord: "not".} = ref object `pattern`*: Pattern[Cap] - SturdyRef*[Cap] {.preservesRecord: "ref".} = ref object + SturdyRef*[Cap] {.acyclic, preservesRecord: "ref".} = ref object `parameters`*: Parameters[Cap] WireRefKind* {.pure.} = enum @@ -151,12 +151,12 @@ type `field0`* {.preservesLiteral: "0".}: tuple[] `oid`*: Oid - WireRefYours*[Cap] {.preservesTuple.} = ref object + WireRefYours*[Cap] {.acyclic, preservesTuple.} = ref object `field0`* {.preservesLiteral: "1".}: tuple[] `oid`*: Oid `attenuation`* {.preservesTupleTail.}: seq[Caveat[Cap]] - `WireRef`*[Cap] {.preservesOr.} = ref object + `WireRef`*[Cap] {.acyclic, preservesOr.} = ref object case orKind*: WireRefKind of WireRefKind.`mine`: `mine`*: WireRefMine @@ -165,18 +165,18 @@ type `yours`*: WireRefYours[Cap] - TAttenuate*[Cap] {.preservesRecord: "attenuate".} = ref object + TAttenuate*[Cap] {.acyclic, preservesRecord: "attenuate".} = ref object `template`*: Template[Cap] `attenuation`*: seq[Caveat[Cap]] Oid* = BiggestInt - Alts*[Cap] {.preservesRecord: "or".} = ref object + Alts*[Cap] {.acyclic, preservesRecord: "or".} = ref object `alternatives`*: seq[Rewrite[Cap]] PatternKind* {.pure.} = enum `PDiscard`, `PAtom`, `PEmbedded`, `PBind`, `PAnd`, `PNot`, `Lit`, `PCompound` - `Pattern`*[Cap] {.preservesOr.} = ref object + `Pattern`*[Cap] {.acyclic, preservesOr.} = ref object case orKind*: PatternKind of PatternKind.`PDiscard`: `pdiscard`*: PDiscard