Tests for internal dynamic dispatch (Java-only)
svn: r18209
This commit is contained in:
parent
90d8d3763a
commit
3b125d58fc
|
@ -4594,6 +4594,54 @@
|
||||||
(define/public (m) (set! f #f)))])
|
(define/public (m) (set! f #f)))])
|
||||||
(send (new d%) m)))
|
(send (new d%) m)))
|
||||||
|
|
||||||
|
(test/spec-passed
|
||||||
|
'class/c-higher-order-override-1
|
||||||
|
'(let* ([c% (contract (class/c (override [m (-> number? number?)]))
|
||||||
|
(class object% (super-new)
|
||||||
|
(define/public (m x) x)
|
||||||
|
(define/public (f x) (m x)))
|
||||||
|
'pos
|
||||||
|
'neg)]
|
||||||
|
[d% (class c% (super-new)
|
||||||
|
(define/override (m x) (add1 (super m x))))])
|
||||||
|
(send (new d%) f 3)))
|
||||||
|
|
||||||
|
(test/neg-blame
|
||||||
|
'class/c-higher-order-override-2
|
||||||
|
'(let* ([c% (contract (class/c (override [m (-> number? number?)]))
|
||||||
|
(class object% (super-new)
|
||||||
|
(define/public (m x) x)
|
||||||
|
(define/public (f x) (add1 (m x))))
|
||||||
|
'pos
|
||||||
|
'neg)]
|
||||||
|
[d% (class c% (super-new)
|
||||||
|
(define/override (m x) (zero? (super m x))))])
|
||||||
|
(send (new d%) f 3)))
|
||||||
|
|
||||||
|
(test/neg-blame
|
||||||
|
'class/c-higher-order-override-3
|
||||||
|
'(let* ([c% (contract (class/c (override [m (-> number? number?)]))
|
||||||
|
(class object% (super-new)
|
||||||
|
(define/public (m x) (zero? x))
|
||||||
|
(define/public (f x) (add1 (m x))))
|
||||||
|
'pos
|
||||||
|
'neg)]
|
||||||
|
[d% (class c% (super-new)
|
||||||
|
(define/override (m x) (super m x)))])
|
||||||
|
(send (new d%) f 3)))
|
||||||
|
|
||||||
|
(test/pos-blame
|
||||||
|
'class/c-higher-order-override-4
|
||||||
|
'(let* ([c% (contract (class/c (override [m (-> number? number?)]))
|
||||||
|
(class object% (super-new)
|
||||||
|
(define/public (m x) x)
|
||||||
|
(define/public (f x) (add1 (m #f))))
|
||||||
|
'pos
|
||||||
|
'neg)]
|
||||||
|
[d% (class c% (super-new)
|
||||||
|
(define/override (m x) (+ x (super m x))))])
|
||||||
|
(send (new d%) f 3)))
|
||||||
|
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
; ;; ;; ; ;;
|
; ;; ;; ; ;;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user