summary refs log tree commit diff stats
path: root/tests
diff options
context:
space:
mode:
authorCharles Blake <cblake@csail.mit.edu>2015-08-09 06:58:36 -0400
committerCharles Blake <cblake@csail.mit.edu>2015-08-09 06:58:36 -0400
commit9c3c48a6d0b89447e2f2efac953bce34a2b96fa8 (patch)
tree577c4cb15baead3a22fd4e11588d1bb6fd134330 /tests
parent26f7a53d4a526b6305a2bca3d28c3c5eb9cfa297 (diff)
parent34ca9dd5861d5504bbbeb71469318c8c8caba6d7 (diff)
downloadNim-9c3c48a6d0b89447e2f2efac953bce34a2b96fa8.tar.gz
Merge ../Nim into devel
Diffstat (limited to 'tests')
-rw-r--r--tests/destructor/tdestructor3.nim47
-rw-r--r--tests/exception/tdefer1.nim27
-rw-r--r--tests/generics/mclosed_sym.nim10
-rw-r--r--tests/generics/tclosed_sym.nim11
-rw-r--r--tests/generics/tdictdestruct.nim (renamed from tests/destructor/tdictdestruct.nim)0
-rw-r--r--tests/stdlib/tunittest.nim5
-rw-r--r--tests/template/twhen_gensym.nim13
7 files changed, 112 insertions, 1 deletions
diff --git a/tests/destructor/tdestructor3.nim b/tests/destructor/tdestructor3.nim
new file mode 100644
index 000000000..0968f1fd7
--- /dev/null
+++ b/tests/destructor/tdestructor3.nim
@@ -0,0 +1,47 @@
+discard """
+  output: '''assign
+destroy
+destroy
+destroy Foo: 5
+5
+destroy Foo: 123
+123'''
+"""
+
+# bug #2821
+{.experimental.}
+
+type T = object
+
+proc `=`(lhs: var T, rhs: T) =
+    echo "assign"
+
+proc `=destroy`(v: var T) =
+    echo "destroy"
+
+block:
+    var v1 : T
+    var v2 : T = v1
+
+
+# bug #1632
+
+type
+  Foo = object of RootObj
+    x: int
+
+proc `=destroy`(a: var Foo) =
+  echo "destroy Foo: " & $a.x
+
+template toFooPtr(a: int{lit}): ptr Foo =
+  var temp = Foo(x:a)
+  temp.addr
+
+proc test(a: ptr Foo) =
+  echo a[].x
+
+proc main =
+  test(toFooPtr(5))
+  test(toFooPtr(123))
+
+main()
diff --git a/tests/exception/tdefer1.nim b/tests/exception/tdefer1.nim
index 61439530a..cb3d09b01 100644
--- a/tests/exception/tdefer1.nim
+++ b/tests/exception/tdefer1.nim
@@ -1,6 +1,11 @@
 discard """
   output: '''hi
-hi'''
+hi
+1
+hi
+2
+B
+A'''
 """
 
 # bug #1742
@@ -16,3 +21,23 @@ import strutils
 let x = try: parseInt("133a")
         except: -1
         finally: echo "hi"
+
+
+template atFuncEnd =
+  defer:
+    echo "A"
+  defer:
+    echo "B"
+
+template testB(): expr =
+    let a = 0
+    defer: echo "hi" # Delete this line to make it work
+    a
+
+proc main =
+  atFuncEnd()
+  echo 1
+  let i = testB()
+  echo 2
+
+main()
diff --git a/tests/generics/mclosed_sym.nim b/tests/generics/mclosed_sym.nim
new file mode 100644
index 000000000..bcccd9a85
--- /dev/null
+++ b/tests/generics/mclosed_sym.nim
@@ -0,0 +1,10 @@
+
+type R* = object
+
+type Data*[T] = object
+  d*: T
+
+proc same(r:R, d:int) = echo "TEST2"
+
+proc doIt*(d:Data, r:R) =
+  r.same(1)      # Expecting this to invoke the local `same()` method
diff --git a/tests/generics/tclosed_sym.nim b/tests/generics/tclosed_sym.nim
new file mode 100644
index 000000000..ff620c267
--- /dev/null
+++ b/tests/generics/tclosed_sym.nim
@@ -0,0 +1,11 @@
+discard """
+  output: "TEST2"
+"""
+
+# bug #2664
+
+import mclosed_sym
+
+proc same(r:R, d:int) = echo "TEST1"
+
+doIt(Data[int](d:123), R())
diff --git a/tests/destructor/tdictdestruct.nim b/tests/generics/tdictdestruct.nim
index 17ded4853..17ded4853 100644
--- a/tests/destructor/tdictdestruct.nim
+++ b/tests/generics/tdictdestruct.nim
diff --git a/tests/stdlib/tunittest.nim b/tests/stdlib/tunittest.nim
index fb9b02243..1389214ea 100644
--- a/tests/stdlib/tunittest.nim
+++ b/tests/stdlib/tunittest.nim
@@ -21,6 +21,11 @@ test "unittest typedescs":
   check(none(int) != some(1))
 
 
+test "unittest multiple requires":
+  require(true)
+  require(true)
+
+
 import math
 from strutils import parseInt
 proc defectiveRobot() =
diff --git a/tests/template/twhen_gensym.nim b/tests/template/twhen_gensym.nim
new file mode 100644
index 000000000..d84ee6f03
--- /dev/null
+++ b/tests/template/twhen_gensym.nim
@@ -0,0 +1,13 @@
+discard """
+  output: "hi"
+"""
+
+# bug #2670
+template testTemplate(b: bool): stmt =
+    when b:
+        var a = "hi"
+    else:
+        var a = 5
+    echo a
+
+testTemplate(true)