summary refs log tree commit diff stats
path: root/tests/js/tbyvar.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/js/tbyvar.nim')
-rw-r--r--tests/js/tbyvar.nim86
1 files changed, 83 insertions, 3 deletions
diff --git a/tests/js/tbyvar.nim b/tests/js/tbyvar.nim
index 9714cd56b..93724a2f1 100644
--- a/tests/js/tbyvar.nim
+++ b/tests/js/tbyvar.nim
@@ -1,10 +1,17 @@
 discard """
-  output: '''foo 12
+  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
 '''
 """
 
@@ -32,12 +39,85 @@ proc main =
 
 main()
 
-# Test: pass var seq to var openarray
+# Test: pass var seq to var openArray
 var s = @[2, 1]
-proc foo(a: var openarray[int]) = a[0] = 123
+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