mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-30 01:44:37 +00:00
* fix https://github.com/timotheecour/Nim/issues/133; $(a: float) works in nim js like in other backends * fix tests * fix test for windows that prints 1.1e17 differently than other OS
124 lines
1.9 KiB
Nim
124 lines
1.9 KiB
Nim
discard """
|
|
output: '''
|
|
foo 12
|
|
bar 12
|
|
2
|
|
foo 12
|
|
bar 12
|
|
2
|
|
12.5
|
|
(nums: @[5.0, 5.0, 10.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0])
|
|
(nums: @[5.0, 5.0, 50.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0])
|
|
(nums: @[5.0, 5.0, 45.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0])
|
|
(nums: @[5.0, 5.0, 9.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0])
|
|
asd
|
|
'''
|
|
"""
|
|
|
|
# bug #1489
|
|
proc foo(x: int) = echo "foo ", x
|
|
proc bar(y: var int) = echo "bar ", y
|
|
|
|
var x = 12
|
|
foo(x)
|
|
bar(x)
|
|
|
|
# bug #1490
|
|
var y = 1
|
|
y *= 2
|
|
echo y
|
|
|
|
proc main =
|
|
var x = 12
|
|
foo(x)
|
|
bar(x)
|
|
|
|
var y = 1
|
|
y *= 2
|
|
echo y
|
|
|
|
main()
|
|
|
|
# Test: pass var seq to var openarray
|
|
var s = @[2, 1]
|
|
proc foo(a: var openarray[int]) = a[0] = 123
|
|
|
|
proc bar(s: var seq[int], a: int) =
|
|
doAssert(a == 5)
|
|
foo(s)
|
|
s.bar(5)
|
|
doAssert(s == @[123, 1])
|
|
|
|
import tables
|
|
block: # Test get addr of byvar return value
|
|
var t = initTable[string, int]()
|
|
t["hi"] = 5
|
|
let a = addr t["hi"]
|
|
a[] = 10
|
|
doAssert(t["hi"] == 10)
|
|
|
|
block: # Test var arg inside case expression. #5244
|
|
proc foo(a: var string) =
|
|
a = case a
|
|
of "a": "error"
|
|
of "b": "error"
|
|
else: a
|
|
var a = "ok"
|
|
foo(a)
|
|
doAssert(a == "ok")
|
|
|
|
|
|
proc mainowar =
|
|
var x = 9.0
|
|
x += 3.5
|
|
echo x
|
|
|
|
mainowar()
|
|
|
|
|
|
# bug #5608
|
|
|
|
type Foo = object
|
|
nums : seq[float]
|
|
|
|
proc newFoo(len : int, default = 0.0) : Foo =
|
|
result = Foo()
|
|
result.nums = newSeq[float](len)
|
|
for i in 0..(len - 1):
|
|
result.nums[i] = default
|
|
|
|
proc `[]=`(f : var Foo, i : int, v : float) =
|
|
f.nums[i] = v
|
|
|
|
proc `[]`(f : Foo, i : int) : float = f.nums[i]
|
|
|
|
proc `[]`(f : var Foo, i : int) : var float = f.nums[i]
|
|
|
|
var f = newFoo(10,5)
|
|
|
|
f[2] += 5
|
|
echo f
|
|
f[2] *= 5
|
|
echo f
|
|
f[2] -= 5
|
|
echo f
|
|
f[2] /= 5
|
|
echo f
|
|
|
|
# regression for #5608
|
|
import tables
|
|
|
|
type
|
|
SomeObj = ref object
|
|
s: cstring
|
|
|
|
var a = initTable[cstring, Table[cstring, SomeObj]]()
|
|
|
|
var b = initTable[cstring, SomeObj]()
|
|
|
|
b.add(cstring"b", SomeObj(s: cstring"asd"))
|
|
|
|
a.add(cstring"a", b)
|
|
|
|
echo a[cstring"a"][cstring"b"].s
|