diff options
Diffstat (limited to 'tests/js/taddr.nim')
-rw-r--r-- | tests/js/taddr.nim | 38 |
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) |