diff --git a/collects/deinprogramm/define-record-procedures.rkt b/collects/deinprogramm/define-record-procedures.rkt index f4d20f511c..fe49289b57 100644 --- a/collects/deinprogramm/define-record-procedures.rkt +++ b/collects/deinprogramm/define-record-procedures.rkt @@ -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) diff --git a/collects/deinprogramm/define-record-procedures.scm b/collects/deinprogramm/define-record-procedures.scm index 24864a4c74..337854378d 100644 --- a/collects/deinprogramm/define-record-procedures.scm +++ b/collects/deinprogramm/define-record-procedures.scm @@ -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