summary refs log blame commit diff stats
path: root/tests/closure/tdonotation.nim
blob: cc4f46bab85f3a55ccb47f1dae9cd10c1b664a20 (plain) (tree)
1
2
3
4
5
6
7
8
9
10


              
            

                                  
                                  


                                  






















                                                               

                     



                     
                                

         
                            
         
 



                                                  
 
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")