Make the DeinProgramm / DMdA one-of' /
case' contracts use beginner-equal?.
svn: r16556
This commit is contained in:
parent
a68c6c8005
commit
2a8e5d64be
|
@ -10,7 +10,8 @@
|
|||
scheme/promise
|
||||
(for-syntax scheme/base)
|
||||
(for-syntax syntax/stx)
|
||||
(for-syntax stepper/private/shared))
|
||||
(for-syntax stepper/private/shared)
|
||||
(only-in lang/private/teachprims beginner-equal?))
|
||||
|
||||
(define-for-syntax (phase-lift stx)
|
||||
(with-syntax ((?stx stx))
|
||||
|
@ -46,7 +47,7 @@
|
|||
(syntax->list #'((?temp ?exp) ...)))))
|
||||
#'(let ((?temp ?exp) ...)
|
||||
?check ...
|
||||
(make-case-contract '?name (list ?temp ...) ?stx)))))
|
||||
(make-case-contract '?name (list ?temp ...) beginner-equal? ?stx)))))
|
||||
((predicate ?exp)
|
||||
(with-syntax ((?stx (phase-lift stx))
|
||||
(?name name))
|
||||
|
|
|
@ -194,7 +194,7 @@
|
|||
syntax
|
||||
#f))
|
||||
|
||||
(define (make-case-contract name cases syntax)
|
||||
(define (make-case-contract name cases =? syntax)
|
||||
(make-contract
|
||||
name
|
||||
(lambda (self obj)
|
||||
|
@ -203,12 +203,12 @@
|
|||
((null? cases)
|
||||
(contract-violation obj self #f #f)
|
||||
obj)
|
||||
((equal? (car cases) obj)
|
||||
((=? (car cases) obj)
|
||||
obj)
|
||||
(else
|
||||
(loop (cdr cases))))))
|
||||
syntax
|
||||
(delay (apply arbitrary-one-of equal? cases))))
|
||||
(delay (apply arbitrary-one-of =? cases))))
|
||||
|
||||
(define-struct procedure-to-blame (proc syntax))
|
||||
|
||||
|
|
|
@ -129,7 +129,7 @@
|
|||
|
||||
(test-case
|
||||
"case"
|
||||
(define foo-or-bar (make-case-contract 'foo-or-bar '("foo" "bar") 'foo-or-bar-marker))
|
||||
(define foo-or-bar (make-case-contract 'foo-or-bar '("foo" "bar") equal? 'foo-or-bar-marker))
|
||||
(check-equal? (say-no (apply-contract foo-or-bar #f))
|
||||
'no)
|
||||
(check-equal? (say-no (apply-contract foo-or-bar "foo"))
|
||||
|
|
Loading…
Reference in New Issue
Block a user