cs: repair application of parameter guard as an applicable struct

Closes #3865
This commit is contained in:
Matthew Flatt 2021-06-03 16:57:38 -06:00
parent f31c7172c5
commit cb959879de
2 changed files with 11 additions and 1 deletions

View File

@ -73,6 +73,12 @@
(add1 'x)))))
(define test-param3 (make-parameter 'three list))
(define test-param4 (make-derived-parameter test-param3 box list))
(define test-param5 (make-parameter
'five
(let ()
(struct s (x)
#:property prop:procedure 0)
(s (lambda (x) x)))))
(test 'one test-param1)
(test 'two test-param2)
@ -127,6 +133,10 @@
(test '(#&yet-another-three) test-param3)
(test '((#&yet-another-three)) test-param4))
(test 'five test-param5)
(test (void) test-param5 5)
(test 5 test-param5)
(let ([cd (make-derived-parameter current-directory values values)])
(test (current-directory) cd)
(let* ([v (current-directory)]

View File

@ -101,7 +101,7 @@
(let ([c (or (parameter-cell data)
default-c)])
(thread-cell-set! c (if guard
(guard v)
(|#%app| guard v)
v)))])
3
data))]))