Skip to content

Commit c44a791

Browse files
committed
fix #13093
1 parent 0498234 commit c44a791

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

lib/pure/concurrency/atomics.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ when defined(cpp) or defined(nimdoc):
8989
## with other moSequentiallyConsistent operations.
9090

9191
type
92-
Atomic*[T] {.importcpp: "std::atomic", completeStruct.} = object
92+
Atomic*[T] {.importcpp: "std::atomic", completeStruct, requiresInit.} = object
9393
## An atomic object with underlying type `T`.
9494
raw: T
9595

tests/cpp/t13093.nim

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
discard """
2+
targets: "cpp"
3+
action: reject
4+
errormsg: "The PledgeObj type requires the following fields to be initialized: refCount"
5+
"""
6+
7+
import atomics
8+
9+
type
10+
Pledge* = object
11+
p: PledgePtr
12+
13+
PledgePtr = ptr PledgeObj
14+
PledgeObj = object
15+
refCount: Atomic[int32]
16+
17+
proc main() =
18+
var pledge: Pledge
19+
pledge.p = createShared(PledgeObj)
20+
let tmp = PledgeObj() # <---- not allowed: atomics are not copyable
21+
22+
pledge.p[] = tmp
23+
24+
main()

0 commit comments

Comments
 (0)