summary refs log tree commit diff stats
path: root/tests/closure/tdonotation.nim
blob: cc4f46bab85f3a55ccb47f1dae9cd10c1b664a20 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
discard """
output: '''
click at 10,20
lost focus 1
lost focus 2
registered handler for UserEvent 1
registered handler for UserEvent 2
registered handler for UserEvent 3
registered handler for UserEvent 4
'''
"""

import future

type
  Button = object
  Event = object
    x, y: int

proc onClick(x: Button, handler: proc(x: Event)) =
  handler(Event(x: 10, y: 20))

proc onFocusLost(x: Button, handler: proc()) =
  handler()

proc onUserEvent(x: Button, eventName: string, handler: proc) =
  echo "registered handler for ", eventName

var b = Button()

b.onClick do (e: Event):
  echo "click at ", e.x, ",", e.y

b.onFocusLost:
  echo "lost focus 1"

b.onFocusLost do:
  echo "lost focus 2"

b.onUserEvent("UserEvent 1") do:
  discard

b.onUserEvent "UserEvent 2":
  discard

b.onUserEvent("UserEvent 3"):
  discard

b.onUserEvent("UserEvent 4", () => echo "event 4")