summary refs log tree commit diff stats
path: root/tests/closure
diff options
context:
space:
mode:
authorClyybber <darkmine956@gmail.com>2020-02-02 13:52:21 +0100
committerGitHub <noreply@github.com>2020-02-02 13:52:21 +0100
commitd43e5bef3909c791ef41ba8cad5decc164170ebe (patch)
treeb26879b13bc9aa5761c09aae0c5e9f4c8afaedc6 /tests/closure
parent45a5c64c9a01cb198450fa1a7b108710241c8768 (diff)
downloadNim-d43e5bef3909c791ef41ba8cad5decc164170ebe.tar.gz
Fix capture for object types (#13315)
* Fix capture for object|tuple|... types

* Add test case
Diffstat (limited to 'tests/closure')
-rw-r--r--tests/closure/tcapture.nim18
1 files changed, 16 insertions, 2 deletions
diff --git a/tests/closure/tcapture.nim b/tests/closure/tcapture.nim
index 304a76285..ff3490f07 100644
--- a/tests/closure/tcapture.nim
+++ b/tests/closure/tcapture.nim
@@ -1,6 +1,9 @@
 discard """
   output: '''
-to be, or not to be'''
+to be, or not to be
+(v: 1)
+(v: 1)
+'''
   joinable: false
 """
 
@@ -9,4 +12,15 @@ import sequtils, sugar
 let m = @[proc (s: string): string = "to " & s, proc (s: string): string = "not to " & s]
 var l = m.mapIt(capture([it], proc (s: string): string = it(s)))
 let r = l.mapIt(it("be"))
-echo r[0] & ", or " & r[1]
\ No newline at end of file
+echo r[0] & ", or " & r[1]
+
+type O = object
+  v: int
+var o = O(v: 1)
+var execute: proc()
+capture [o]:
+  execute = proc() =
+    echo o
+execute()
+o.v = -1
+execute()