fixed immutable boxes and vectors

svn: r18407
This commit is contained in:
Robby Findler 2010-03-01 14:47:38 +00:00
parent c856b1b72e
commit d7f8c62371
2 changed files with 12 additions and 2 deletions

View File

@ -356,7 +356,11 @@
`(cons ,(recur (mcar expr)) ,(recur (mcdr expr)))))
`(mcons ,(recur (mcar expr)) ,(recur (mcdr expr))))]
[(weak-box? expr) `(make-weak-box ,(recur (weak-box-value expr)))]
[(box? expr) `(box ,(recur (unbox expr)))]
[(box? expr)
`(,(if (immutable? expr)
'box-immutable
'box)
,(recur (unbox expr)))]
[(hash-table? expr)
(let ([contents
(hash-table-map
@ -372,7 +376,11 @@
(if (null? contents)
`(,constructor)
`(,constructor (list ,@contents))))]
[(vector? expr) `(vector ,@(map recur (vector->list expr)))]
[(vector? expr)
`(,(if (immutable? expr)
'vector-immutable
'vector)
,@(map recur (vector->list expr)))]
[(symbol? expr) `',expr]
[(keyword? expr) `',expr]
[(string? expr) expr]

View File

@ -163,6 +163,7 @@
'(cons 3/2+3/2i empty))
(make-same-test (vector 0 0 0 0 0 0 0 0 0 0) '(vector 0 0 0 0 0 0 0 0 0 0))
(make-same-test (vector-immutable 1 2 3 4 5) '(vector-immutable 1 2 3 4 5))
(make-same-test #t 'true)
(make-same-test #f 'false)
@ -171,6 +172,7 @@
(make-same-test (delay 1) '(delay ...))
(make-same-test (let () (define-struct a (a) #:inspector (make-inspector)) (make-a 3)) '(make-a 3))
(make-same-test (box 3) '(box 3))
(make-same-test (box-immutable 4) '(box-immutable 4))
(make-pctest null 'empty 'empty 'empty '`() '`() '`() 'empty)
(make-same-test add1 'add1)
(make-same-test (void) '(void))