12345678910111213141516171819202122232425262728293031323334 |
- discard """
- matrix: "--mm:refc; --mm:orc"
- targets: "c cpp"
- """
- import atomics
- type
- Pledge* {.exportc.} = object
- p: PledgePtr
- PledgeKind {.exportc.} = enum
- Single
- Iteration
- PledgePtr {.exportc.} = ptr object
- case kind: PledgeKind
- of Single:
- impl: PledgeImpl
- of Iteration:
- discard
- PledgeImpl {.exportc.} = object
- fulfilled: Atomic[bool]
- var x: Pledge
- when defined(cpp):
- # TODO: fixme
- discard "it doesn't work for refc/orc because of contrived `Atomic` in cpp"
- elif defined(gcRefc):
- doAssert x.repr == "[p = nil]"
- else: # fixme # bug #20081
- doAssert x.repr == "Pledge(p: nil)"
|