summary refs log tree commit diff stats
path: root/tests/js
diff options
context:
space:
mode:
authorTimothee Cour <timothee.cour2@gmail.com>2020-11-13 14:44:44 -0800
committerGitHub <noreply@github.com>2020-11-13 14:44:44 -0800
commit1a47fc2291b285ceb6b2f330f45997944b754b3a (patch)
treef4b7ba7e81167207c350430faa892ad9db39e075 /tests/js
parent562c6275b879613efeec6687dd31d3e81807dffd (diff)
downloadNim-1a47fc2291b285ceb6b2f330f45997944b754b3a.tar.gz
strengthen taddr.nim: add test case for #14578; reference other issues; test cpp (#15960)
Diffstat (limited to 'tests/js')
-rw-r--r--tests/js/taddr.nim139
1 files changed, 0 insertions, 139 deletions
diff --git a/tests/js/taddr.nim b/tests/js/taddr.nim
deleted file mode 100644
index 9c45621a8..000000000
--- a/tests/js/taddr.nim
+++ /dev/null
@@ -1,139 +0,0 @@
-discard """
-  targets: "c js"
-"""
-
-type T = object
-  x: int
-  s: string
-
-var obj: T
-var fieldAddr = addr(obj.x)
-var objAddr = addr(obj)
-
-# Integer tests
-var field = fieldAddr[]
-doAssert field == 0
-
-var objDeref = objAddr[]
-doAssert objDeref.x == 0
-
-# Change value
-obj.x = 42
-
-doAssert field == 0
-doAssert objDeref.x == 0
-
-field = fieldAddr[]
-objDeref = objAddr[]
-
-doAssert field == 42
-doAssert objDeref.x == 42
-
-# String tests
-obj.s = "lorem ipsum dolor sit amet"
-var indexAddr = addr(obj.s[2])
-
-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)
-
-var someGlobal = 5
-proc getSomeGlobalPtr(): ptr int = addr someGlobal
-let someGlobalPtr = getSomeGlobalPtr()
-doAssert(someGlobalPtr[] == 5)
-someGlobalPtr[] = 10
-doAssert(someGlobal == 10)
-
-block:
-  # issue #14576
-  # lots of these used to give: Error: internal error: genAddr: 2
-  proc byLent[T](a: T): lent T = a
-  proc byPtr[T](a: T): ptr T = a.unsafeAddr
-
-  block:
-    let a = (10,11)
-    let (x,y) = byLent(a)
-    doAssert (x,y) == a
-
-  block:
-    when defined(c) and defined(release):
-      # bug; pending https://github.com/nim-lang/Nim/issues/14578
-      discard
-    else:
-      let a = 10
-      doAssert byLent(a) == 10
-      let a2 = byLent(a)
-      doAssert a2 == 10
-
-  block:
-    let a = [11,12]
-    doAssert byLent(a) == [11,12]
-    let a2 = (11,)
-    doAssert byLent(a2) == (11,)
-
-  block:
-    when defined(c) and defined(release):
-      discard # probably not a bug since optimizer is free to pass by value, and `unsafeAddr` is used
-    else:
-      var a = @[12]
-      doAssert byPtr(a)[] == @[12]
-      let a2 = [13]
-      doAssert byPtr(a2)[] == [13]
-      let a3 = 14
-      doAssert byPtr(a3)[] == 14
-
-  block:
-    proc byLent2[T](a: seq[T]): lent T = a[1]
-    var a = @[20,21,22]
-    doAssert byLent2(a) == 21
-
-  block: # sanity checks
-    proc bar[T](a: var T): var T = a
-    var a = (10, 11)
-    let (k,v) = bar(a)
-    doAssert (k, v) == a
-    doAssert k == 10
-    bar(a)[0]+=100
-    doAssert a == (110, 11)
-    var a2 = 12
-    doAssert bar(a2) == a2
-    bar(a2).inc
-    doAssert a2 == 13
-
-  block: # xxx: bug this doesn't work
-    when false:
-      proc byLent2[T](a: T): lent type(a[0]) = a[0]