forked from racket/racket
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtop-level.rkt
27 lines (22 loc) · 823 Bytes
/
top-level.rkt
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
#lang racket/base
;; check that generics work at the top-level
(require racket/generic
rackunit)
(define ns (make-base-namespace))
(check-not-exn
(λ ()
(eval '(require racket/generic) ns)
(eval '(define-generics foobar [foo foobar a1] [bar foobar a1]
#:defaults ([keyword?
(define/generic gbar bar)
(define (bar foobar a1) (gbar a1 '#:dummy))])
#:fallbacks [(define/generic gfoo foo)
(define (foo foobar a1) 'foo)
(define (bar foobar a1) (gfoo a1 foobar))])
ns)
(eval '(struct inst ()
;; make sure `gen:foobar` doesn't cause an
;; error here
#:methods gen:foobar
[(define (foo foobar a1) 0)])
ns)))