From 5e4b9e3acac071cc6fdd768070e7f899cda8eccb Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 25 Apr 2012 20:31:54 -0600 Subject: [PATCH] racket/draw: pens and brushes from lists should be immutable Closes PR 12732 --- collects/racket/draw/private/brush.rkt | 1 + collects/racket/draw/private/pen.rkt | 1 + collects/tests/gracket/dc.rktl | 13 +++++++++++++ 3 files changed, 15 insertions(+) diff --git a/collects/racket/draw/private/brush.rkt b/collects/racket/draw/private/brush.rkt index ff8b6013ba..db8d1e95c8 100644 --- a/collects/racket/draw/private/brush.rkt +++ b/collects/racket/draw/private/brush.rkt @@ -212,6 +212,7 @@ (ephemeron-value e)) (let* ([f (make-object brush% col s)] [e (make-ephemeron key f)]) + (send f set-immutable) (send f s-set-key key) (hash-set! brushes key e) f))) diff --git a/collects/racket/draw/private/pen.rkt b/collects/racket/draw/private/pen.rkt index 24c6102eff..0f4f916319 100644 --- a/collects/racket/draw/private/pen.rkt +++ b/collects/racket/draw/private/pen.rkt @@ -164,6 +164,7 @@ (ephemeron-value e)) (let* ([f (make-object pen% col w s c j)] [e (make-ephemeron key f)]) + (send f set-immutable) (send f s-set-key key) (hash-set! pens key e) f))) diff --git a/collects/tests/gracket/dc.rktl b/collects/tests/gracket/dc.rktl index 801350d6cd..6e23667a03 100644 --- a/collects/tests/gracket/dc.rktl +++ b/collects/tests/gracket/dc.rktl @@ -507,4 +507,17 @@ ;; ---------------------------------------- +(define (check-immutable v) + (test 'immutable 'immutable + (with-handlers ([exn:fail? (lambda (x) + (if (regexp-match #rx"immutable" (exn-message x)) + 'immutable + x))]) + (send v set-color "red")))) + +(check-immutable (send the-brush-list find-or-create-brush "white" 'solid)) +(check-immutable (send the-pen-list find-or-create-pen "white" 1 'solid)) + +;; ---------------------------------------- + (report-errs)