Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fixes #13013, reverts previous changes to readLines() #13036

Merged
merged 10 commits into from
Jan 5, 2020
Merged
Prev Previous commit
Next Next commit
Fix destructor tests
  • Loading branch information
cooldome committed Oct 17, 2018
commit 6ad72a2e9d0b3d2082bf2c15e497ff4b7a7bb014
21 changes: 2 additions & 19 deletions tests/destructor/tprevent_assign2.nim
Original file line number Diff line number Diff line change
@@ -1,12 +1,7 @@
discard """
errormsg: "'=' is not available for type <Foo>; requires a copy because it's not the last read of 'otherTree'"

cmd: "nim check --hint[Performance]:off $file"
nimout: '''
tprevent_assign2.nim(53, 31) Error: '=' is not available for type <Foo>; requires a copy because it's not the last read of 'otherTree'; another read is done here: tprevent_assign2.nim(52, 13)
tprevent_assign2.nim(55, 31) Error: '=' is not available for type <Foo>; requires a copy because it's not the last read of 'otherTree'; another read is done here: tprevent_assign2.nim(52, 13)
tprevent_assign2.nim(66, 29) Error: '=' is not available for type <Foo>; requires a copy because it's not the last read of 'otherTree'; another read is done here: tprevent_assign2.nim(68, 9)
'''
file: "tprevent_assign2.nim"
line: 48
"""

type
Expand Down Expand Up @@ -56,17 +51,5 @@ proc preventThis() =
else:
discard

proc preventThis2() =
var otherTree: Foo
try:
try:
otherTree = createTree(44)
echo otherTree
finally:
take2(createTree(34), otherTree)
finally:
echo otherTree

allowThis()
preventThis()
preventThis2()
53 changes: 53 additions & 0 deletions tests/destructor/tprevent_assign3.nim
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
discard """
errormsg: "'=' is not available for type <Foo>; requires a copy because it's not the last read of 'otherTree'"
file: "tprevent_assign3.nim"
line: 46
"""

type
Foo = object
x: int

proc `=destroy`(f: var Foo) = f.x = 0
proc `=`(a: var Foo; b: Foo) {.error.} # = a.x = b.x
proc `=sink`(a: var Foo; b: Foo) = a.x = b.x

proc createTree(x: int): Foo =
Foo(x: x)

proc take2(a, b: sink Foo) =
echo a.x, " ", b.x

proc allowThis() =
var otherTree: Foo
try:
for i in 0..3:
while true:
#if i == 0:
otherTree = createTree(44)
case i
of 0:
echo otherTree
take2(createTree(34), otherTree)
of 1:
take2(createTree(34), otherTree)
else:
discard
finally:
discard

proc preventThis2() =
var otherTree: Foo
try:
try:
otherTree = createTree(44)
echo otherTree
finally:
take2(createTree(34), otherTree)
finally:
echo otherTree

allowThis()
preventThis2()