PasteRack.org
Paste # 1070
2018-09-29 00:59:58

Fork as a new paste.

Paste viewed 277 times.


Embed:

;;;; sys.rkt

(module ffi-sys racket
  (provide event?)
  (define event-symbols
    (list 'NONE
          'KEY_PRESS
          'KEY_RELEASE
          'KEY
          'MOUSE_MOVE
          'MOUSE_PRESS
          'MOUSE_RELEASE
          'MOUSE
          'KEY_PRESS_MOUSE_MOVE
          'ANY))

  (define (event? event)
    (define result (member event event-symbols))
    (if (false? result) result #t)))

(require/typed/provide 'ffi-sys
  [#:opaque Event event?])


;;;; other-module.rkt

(struct game-input ([event : Event] [key : Key] [mouse : Mouse]))

(game-input 'KEY_PRESS_MOUSE_MOVE (make-key-default) (make-mouse-default))

;;;; Type Checker error

;Type Checker: type mismatch
;   expected: Event
;   given: 'KEY_PRESS_MOUSE_MOVE
;   in: (quote KEY_PRESS_MOUSE_MOVE)