summary refs log tree commit diff stats
path: root/tests/js/taddr.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/js/taddr.nim')
-rw-r--r--tests/js/taddr.nim38
1 files changed, 37 insertions, 1 deletions
diff --git a/tests/js/taddr.nim b/tests/js/taddr.nim
index 6a60aa902..1fba30d55 100644
--- a/tests/js/taddr.nim
+++ b/tests/js/taddr.nim
@@ -1,3 +1,7 @@
+discard """
+  action: run
+"""
+
 type T = object
   x: int
   s: string
@@ -29,8 +33,40 @@ doAssert objDeref.x == 42
 obj.s = "lorem ipsum dolor sit amet"
 var indexAddr = addr(obj.s[2])
 
-doAssert indexAddr[] == '4'
+doAssert indexAddr[] == 'r'
 
 indexAddr[] = 'd'
 
 doAssert indexAddr[] == 'd'
+
+doAssert obj.s == "lodem ipsum dolor sit amet"
+
+# Bug #2148
+var x: array[2, int]
+var y = addr x[1]
+
+y[] = 12
+doAssert(x[1] == 12)
+
+type
+  Foo = object
+    bar: int
+
+var foo: array[2, Foo]
+var z = addr foo[1]
+
+z[].bar = 12345
+doAssert(foo[1].bar == 12345)
+
+var t : tuple[a, b: int]
+var pt = addr t[1]
+pt[] = 123
+doAssert(t.b == 123)
+
+#block: # Test "untyped" pointer.
+proc testPtr(p: pointer, a: int) =
+  doAssert(a == 5)
+  (cast[ptr int](p))[] = 124
+var i = 123
+testPtr(addr i, 5)
+doAssert(i == 124)