blob: 615c3602430a171fe8eaf40508b65fb631256d9e (
plain) (
tree)
|
|
discard """
output: '''24
(bar: "bar")
1244
6
abcdefghijklmnopqrstuvwxyz
145 23
3
2'''
"""
import strutils
const fac4 = (var x = 1; for i in 1..4: x *= i; x)
echo fac4
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 ValueError: -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)
proc semiProblem() =
if false: echo "aye"; echo "indeed"
semiProblem()
# bug #844
import json
proc parseResponse(): JsonNode =
result = % { "key1": % { "key2": % "value" } }
for key, val in result["key1"]:
var excMsg = key & "("
if (var n=result["key2"]; n != nil):
excMsg &= n.str
raise newException(CatchableError, excMsg)
#bug #992
var se = @[1,2]
let b = (se[1] = 1; 1)
# bug #1161
type
PFooBase = ref object of RootRef
field: int
PFoo[T] = ref object of PFooBase
field2: T
var testIf =
if true:
2
else:
3
var testCase =
case 8
of 8: 9
else: 10
var testTry =
try:
PFoo[string](field: 3, field2: "asfasf")
except:
PFooBase(field: 5)
echo(testTry.field)
# bug #6166
proc quo(op: proc (x: int): bool): int =
result =
if op(3):
2
else:
0
echo(
if true:
quo do (a: int) -> bool:
a mod 2 != 0
else:
quo do (a: int) -> bool:
a mod 3 != 0
)
# bug #6980
proc fooBool: bool {.discardable.} =
true
if true:
fooBool()
else:
raise newException(ValueError, "argh")
# bug #5374
proc test1(): int64 {.discardable.} = discard
proc test2(): int {.discardable.} = discard
if true:
test1()
else:
test2()
|