more intuitive behaviour for 'discardable' in expression bodies
This commit is contained in:
parent
af441e607f
commit
f8af7ed6b4
6 changed files with 99 additions and 22 deletions
66
tests/run/tstmtexprs.nim
Normal file
66
tests/run/tstmtexprs.nim
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
discard """
|
||||
output: '''(bar: bar)
|
||||
1244
|
||||
6
|
||||
abcdefghijklmnopqrstuvwxyz
|
||||
145 23'''
|
||||
"""
|
||||
|
||||
import strutils
|
||||
|
||||
when true:
|
||||
proc test(foo: proc (x, y: int): bool) =
|
||||
echo foo(5, 5)
|
||||
|
||||
|
||||
type Foo = object
|
||||
bar: string
|
||||
|
||||
proc newfoo(): Foo =
|
||||
result.bar = "bar"
|
||||
|
||||
echo($newfoo())
|
||||
|
||||
|
||||
proc retInt(x, y: int): int =
|
||||
if (var yy = 0; yy != 0):
|
||||
echo yy
|
||||
else:
|
||||
echo(try: parseInt("1244") except EINvalidValue: -1)
|
||||
result = case x
|
||||
of 23: 3
|
||||
of 64:
|
||||
case y
|
||||
of 1: 2
|
||||
of 2: 3
|
||||
of 3: 6
|
||||
else: 8
|
||||
else: 1
|
||||
|
||||
echo retInt(64, 3)
|
||||
|
||||
proc buildString(): string =
|
||||
result = ""
|
||||
for x in 'a'..'z':
|
||||
result.add(x)
|
||||
|
||||
echo buildString()
|
||||
|
||||
#test(
|
||||
# proc (x, y: int): bool =
|
||||
# if x == 5: return true
|
||||
# if x == 2: return false
|
||||
# if y == 78: return true
|
||||
#)
|
||||
|
||||
proc q(): int {.discardable.} = 145
|
||||
proc p(): int =
|
||||
q()
|
||||
|
||||
proc p2(a: int): int =
|
||||
# result enforces a void context:
|
||||
if a == 2:
|
||||
result = 23
|
||||
q()
|
||||
|
||||
echo p(), " ", p2(2)
|
||||
Loading…
Add table
Add a link
Reference in a new issue