cs: fix assignment to auto struct fields
This commit is contained in:
parent
c347bc0c99
commit
e9855fa64f
|
@ -280,7 +280,7 @@
|
|||
(let* ([l (if parent-key+size
|
||||
(prefab-key+size->prefab-key-tail parent-key+size)
|
||||
'())]
|
||||
[l (let ([mutables (immutables->mutables immutables fields-count)])
|
||||
[l (let ([mutables (immutables->mutables immutables fields-count 0)])
|
||||
(if (fx= 0 (#%vector-length mutables))
|
||||
l
|
||||
(cons mutables l)))]
|
||||
|
@ -305,14 +305,17 @@
|
|||
(define (encode-prefab-key+count-as-symbol prefab-key+count)
|
||||
(string->symbol (chez:format "~a" prefab-key+count)))
|
||||
|
||||
(define (immutables->mutables immutables init-count)
|
||||
(define (immutables->mutables immutables init-count auto-count)
|
||||
(vector->immutable-vector
|
||||
(list->vector
|
||||
(let loop ([i 0])
|
||||
(cond
|
||||
[(= i init-count) null]
|
||||
[(chez:member i immutables) (loop (add1 i))]
|
||||
[else (cons i (loop (add1 i)))])))))
|
||||
[(fx= i init-count) (let loop ([i 0])
|
||||
(cond
|
||||
[(fx= i auto-count) null]
|
||||
[else (cons (fx+ i init-count) (loop (fx+ i 1)))]))]
|
||||
[(#%memv i immutables) (loop (fx+ 1 i))]
|
||||
[else (cons i (loop (fx+ i 1)))])))))
|
||||
|
||||
(define (mutables->immutables mutables init-count)
|
||||
(let loop ([i 0])
|
||||
|
|
|
@ -508,7 +508,7 @@
|
|||
[all-immutables (if (integer? proc-spec)
|
||||
(cons proc-spec immutables)
|
||||
immutables)]
|
||||
[mutables (immutables->mutables all-immutables init-count)])
|
||||
[mutables (immutables->mutables all-immutables init-count auto-count)])
|
||||
(when (not parent-rtd*)
|
||||
(record-type-equal-procedure rtd default-struct-equal?)
|
||||
(record-type-hash-procedure rtd default-struct-hash))
|
||||
|
|
Loading…
Reference in New Issue
Block a user