racket/pkgs/racket-test/tests/generic/pr13737.rkt
Matthew Flatt 2d4f3e2ac9 remove the "racket-pkgs" directory layer
The layer is now redundant, since everything left in "pkgs" is in the
"racket-pkgs" category.
2014-12-08 05:22:59 -07:00

33 lines
740 B
Racket

#lang racket
(require racket/generic
rackunit)
;; This tests PR 13737 (keyword arguments and #:defaults did
;; not work together)
(define-generics thing
(foo thing #:stuff other)
#:defaults
{[number?
(define (foo thing #:stuff other) (+ thing other))]})
(check-equal? (foo 1 #:stuff 2) 3)
;; This tests that the keyword & defaults issue doesn't occur for
;; forged generics either
(let ()
(local-require racket/private/generic)
(define-primitive-generics
(foo gen:foo prop:foo foo-methods foo? foo-supports?)
#:fast-defaults ([number? number? (define (meth foo #:kw kw) kw)])
#:defaults ()
#:fallbacks ()
#:derive-properties ()
(meth foo #:kw kw))
(check-equal? (meth 3 #:kw 5) 5))