mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 08:54:53 +00:00
* defaults to Orc * bootstrap using refc * use gc * init orc defines * unregister orc * fix gc * fix commands * add prepareMutation for orc * enable deepcopy for orc * prepareMutation * more fixes * some cases * bug #20081 * partial fixes * partial fixes * fixes command line * more fixes * build Nim with refc * use gc * more fixes * rstore * orc doesn't support threadpool * more shallowCopy * more fixes * fixes unsafeNew * workarounds * small * more fixes * fixes some megatest * tcodegenbugs1 refc * fxies megatest * build nimble with refc * workaround tensordsl tests * replace shallowCopy with move * fixes action * workaround * add todo * fixes important packages * unpublic unregisterArcOrc * fixes cpp * enable windows Co-authored-by: xflywind <43030857+xflywind@users.noreply.github.com>
43 lines
786 B
Nim
43 lines
786 B
Nim
discard """
|
|
matrix: "--mm:refc"
|
|
ccodeCheck: "@'genericDeepCopy(' .*"
|
|
action: compile
|
|
"""
|
|
|
|
# bug #2286
|
|
|
|
import threadPool
|
|
|
|
type
|
|
Person = ref object
|
|
name: string
|
|
friend: Person
|
|
|
|
var
|
|
people: seq[Person] = @[]
|
|
|
|
proc newPerson(name:string): Person =
|
|
result.new()
|
|
result.name = name
|
|
|
|
proc greet(p:Person) =
|
|
p.friend.name &= "-MUT" # this line crashes the program
|
|
echo "Person {",
|
|
" name:", p.name, "(", cast[int](addr p.name),"),",
|
|
" friend:", p.friend.name, "(", cast[int](addr p.friend.name),") }"
|
|
|
|
proc setup =
|
|
for i in 0 ..< 10:
|
|
people.add newPerson("Person" & $(i + 1))
|
|
for i in 0 ..< 10:
|
|
people[i].friend = people[9-i]
|
|
|
|
proc update =
|
|
parallel:
|
|
for i in 0 .. people.high:
|
|
spawn people[i].greet()
|
|
|
|
when true:
|
|
setup()
|
|
update()
|