racket/collects/tests/generic/syntax-errors.rkt

42 lines
895 B
Racket

#lang racket
(require racket/generic rackunit)
(define-namespace-anchor generic-env)
(define-syntax-rule (check-syntax exp ...)
(begin
(check-exn
exn:fail:syntax?
(lambda () (eval '(module foo racket/base
(require racket/generic)
exp)
(namespace-anchor->namespace generic-env))))
...))
(check-syntax
(define-generics stream
(stream-first stream)
(stream-rest stream)
(stream-empty? stream)
#:defaults
foo)
(define-generics stream
(stream-first stream)
(stream-rest stream)
(stream-empty? stream)
#:defaults
([list?
(define stream-first car)
(define stream-rest cdr)
(define stream-rest 5)
(define stream-empty? null?)]))
(define-generics stream
(stream-first stream)
(stream-rest stream)
(stream-empty? stream)
#:defaults
([])))