racket/collects/tests/htdp-lang/prim.rkt
Matthew Flatt 3d03e8f884 fix define-primitive' and provide-primitive'
Allow the implement to follow the `define-primitive'
 or `provide-primitive' declaration.
2011-07-09 16:57:56 -06:00

18 lines
653 B
Racket

#lang racket/base
(define (check-bad form)
(with-handlers ([exn:fail? (lambda (exn)
(define msg (exn-message exn))
(unless (regexp-match #rx"unbound identifier.*y$" msg)
(raise exn)))])
(expand form)
(error 'check-bad "failed: ~v" form)))
(define (check-good form)
(expand form))
(check-bad `(,#'module m racket/base (require lang/prim) (define-primitive x y)))
(check-bad `(,#'module m racket/base (require lang/prim) (provide-primitive y)))
(check-good `(,#'module m racket/base (require lang/prim) (provide-primitive y) (define (y z) z)))