From 7fac9193fa75c6a0618095d645503c0f3611c0b4 Mon Sep 17 00:00:00 2001 From: Mike Sperber Date: Sun, 18 Dec 2011 14:11:39 +0100 Subject: [PATCH] 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? ()) --- collects/deinprogramm/define-record-procedures.rkt | 2 +- collects/deinprogramm/define-record-procedures.scm | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) 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