fix is-a?/c opter

This commit is contained in:
Robby Findler 2013-04-26 09:28:46 -05:00
parent df4bf43ca3
commit ae5bde175d
3 changed files with 16 additions and 8 deletions

View File

@ -152,7 +152,7 @@
#:lifts lifts2
#:superlifts null
#:partials null
#:flat #'(is-a? cls-x val)
#:flat #'(is-a? val cls-x)
#:opt #f
#:stronger-ribs '()
#:chaperone #t

View File

@ -109,7 +109,8 @@
val
(raise-blame-error blame
val
"none of the branches of the or/c matched"))))]
'("none of the branches of the or/c matched" given: "~e")
val))))]
[(= (length hos) 1)
(with-syntax ([ho-ctc ho-ctc]
[val (opt/info-val opt/info)])

View File

@ -12128,13 +12128,20 @@ so that propagation occurs.
(contract-eval `(class* object% (,i<%>) (super-new)))
#f))
(let ([i<%> (contract-eval '(interface ()))]
[c% (contract-eval '(class object% (super-new)))])
(test-flat-contract `(is-a?/c ,i<%>)
(contract-eval `(new (class* object% (,i<%>) (super-new))))
(begin
(contract-eval '(define flat-is-a-test<%> (interface ())))
(contract-eval '(define flat-is-a-test% (class object% (super-new))))
(test-flat-contract `(is-a?/c flat-is-a-test<%>)
(contract-eval `(new (class* object% (flat-is-a-test<%>) (super-new))))
(contract-eval '(new object%)))
(test-flat-contract `(is-a?/c ,c%)
(contract-eval `(new ,c%))
(test-flat-contract `(is-a?/c flat-is-a-test%)
(contract-eval `(new flat-is-a-test%))
(contract-eval '(new object%)))
(test-flat-contract `(or/c #f (is-a?/c flat-is-a-test<%>))
(contract-eval `(new (class* object% (flat-is-a-test<%>) (super-new))))
(contract-eval '(new object%)))
(test-flat-contract `(or/c #f (is-a?/c flat-is-a-test%))
(contract-eval `(new flat-is-a-test%))
(contract-eval '(new object%))))
(test-flat-contract '(listof boolean?) (list #t #f) (list #f 3 #t))