Add `defined?' assertions to fix DrRacket.

original commit: e70ccafd7b591df218a1ae036f599c671eb57824
This commit is contained in:
Sam Tobin-Hochstadt 2010-12-08 18:53:56 -05:00
parent 1527fba4b3
commit eacda65291
5 changed files with 8 additions and 4 deletions

View File

@ -14,4 +14,4 @@
(for-syntax "private/base-types-extra.rkt"))
(provide (rename-out [with-handlers: with-handlers])
(for-syntax (all-from-out "private/base-types-extra.rkt"))
assert with-type for for*)
assert defined? with-type for for*)

View File

@ -186,6 +186,7 @@
[assert (-poly (a b) (cl->*
(Univ (make-pred-ty (list a) Univ b) . -> . b)
(-> (Un a (-val #f)) a)))]
[defined? (->* (list Univ) -Boolean : (-FS (-not-filter -Undefined 0 null) (-filter -Undefined 0 null)))]
[gensym (->opt [Sym] Sym)]
[string-append (->* null -String -String)]
[open-input-string (-> -String -Input-Port)]

View File

@ -1,5 +1,5 @@
#lang scheme/base
(provide assert)
(provide assert defined?)
(define-syntax assert
(syntax-rules ()
@ -8,3 +8,6 @@
((assert v pred)
(let ((val v))
(if (pred val) val (error "Assertion failed"))))))
(define (defined? v)
(not (equal? v (letrec ([x x]) x))))

View File

@ -14,5 +14,5 @@
(for-syntax typed-scheme/private/base-types-extra))
(provide (rename-out [with-handlers: with-handlers]
[define-type-alias define-type])
assert with-type for for*
assert defined? with-type for for*
(for-syntax (all-from-out typed-scheme/private/base-types-extra)))

View File

@ -14,5 +14,5 @@
(for-syntax typed-scheme/private/base-types-extra))
(provide (rename-out [with-handlers: with-handlers]
[define-type-alias define-type])
assert with-type for for*
assert defined? with-type for for*
(for-syntax (all-from-out typed-scheme/private/base-types-extra)))