diff --git a/collects/2htdp/private/world.rkt b/collects/2htdp/private/world.rkt index 997a8c06a9..cf141ea04b 100644 --- a/collects/2htdp/private/world.rkt +++ b/collects/2htdp/private/world.rkt @@ -37,17 +37,18 @@ ;; ----------------------------------------------------------------------------- ;; packages for broadcasting information to the universe -(define-struct package (world message) #:transparent) - -;; World Sexp -> Package -(define (create-package w m) - (check-arg 'make-package (sexp? m) 'sexp "second" m) - (make-package w m)) +(define-values (make-package package? package-world package-message) + (let () + (struct package (world message) #:transparent) + (define (make-package w m) + (check-arg 'make-package (sexp? m) 'sexp "second" m) + (package w m)) + (values make-package package? package-world package-message))) (provide - (rename-out (create-package make-package)) ;; World S-expression -> Package - package? ;; Any -> Package - package-world + make-package ;; World S-expression -> Package + package? ;; Any -> Package + package-world ;; Package -> World ) (define world% diff --git a/collects/2htdp/tests/error-messages.rkt b/collects/2htdp/tests/error-messages.rkt new file mode 100644 index 0000000000..dc50974779 --- /dev/null +++ b/collects/2htdp/tests/error-messages.rkt @@ -0,0 +1,16 @@ +#lang racket + +(require 2htdp/universe) + +(with-handlers ((exn:fail:contract? + (lambda (x) + (unless (regexp-match "make-package" (exn-message x)) + (raise x))))) + (make-package 1 2 3)) + +(with-handlers ((exn:fail:contract? + (lambda (x) + (unless (regexp-match "make-bundle" (exn-message x)) + (raise x))))) + (make-bundle 1 2)) + diff --git a/collects/2htdp/xtest b/collects/2htdp/xtest index f98d6e4019..a67cdddca5 100755 --- a/collects/2htdp/xtest +++ b/collects/2htdp/xtest @@ -42,4 +42,4 @@ run name.rkt run pad1.rkt run pad1-handler.rkt run pad1-in-bsl.rkt - +run error-messages.rkt