In the DMdA languages, create arbitrary for record signature without fields.

This way, you don't have to use define-record-procedures-parametric
for records like this:

(define-record-procedures empty
  make-empty empty?
  ())
This commit is contained in:
Mike Sperber 2011-12-18 14:11:39 +01:00
parent c080940d02
commit 7fac9193fa
2 changed files with 9 additions and 3 deletions

View File

@ -13,7 +13,7 @@
deinprogramm/signature/signature
deinprogramm/signature/signature-german
deinprogramm/signature/signature-syntax
(only-in deinprogramm/quickcheck/quickcheck arbitrary-record))
(only-in deinprogramm/quickcheck/quickcheck arbitrary-record arbitrary-one-of))
(require (for-syntax scheme/base)
(for-syntax deinprogramm/syntax-checkers)

View File

@ -169,8 +169,14 @@
(syntax->list #'(?param ...)))))
(with-syntax ((base-signature
(stepper-syntax-property
#'(define ?type-name
(signature ?type-name (predicate real-predicate)))
#`(define ?type-name
(let ((sig (signature ?type-name (predicate real-predicate))))
#,(if (null? (syntax->list #'(?field-spec ...)))
#'(set-signature-arbitrary-promise!
sig
(delay (arbitrary-one-of equal? (?constructor))))
#'(begin))
sig))
'stepper-skip-completely
#t))
(constructor-signature