From cb959879de21406571fb0127ded88c54e171c0eb Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 3 Jun 2021 16:57:38 -0600 Subject: [PATCH] cs: repair application of parameter guard as an applicable struct Closes #3865 --- pkgs/racket-test-core/tests/racket/param.rktl | 10 ++++++++++ racket/src/cs/rumble/parameter.ss | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/pkgs/racket-test-core/tests/racket/param.rktl b/pkgs/racket-test-core/tests/racket/param.rktl index 49bfcf1733..2295d2b961 100644 --- a/pkgs/racket-test-core/tests/racket/param.rktl +++ b/pkgs/racket-test-core/tests/racket/param.rktl @@ -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)] diff --git a/racket/src/cs/rumble/parameter.ss b/racket/src/cs/rumble/parameter.ss index 176f900d01..98cd76ee1d 100644 --- a/racket/src/cs/rumble/parameter.ss +++ b/racket/src/cs/rumble/parameter.ss @@ -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))]))