fixed immutable boxes and vectors
svn: r18407
This commit is contained in:
parent
c856b1b72e
commit
d7f8c62371
|
@ -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]
|
||||
|
|
|
@ -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))
|
||||
|
|
Loading…
Reference in New Issue
Block a user