diff --git a/collects/tests/typed-scheme/succeed/or-sym.rkt b/collects/tests/typed-scheme/succeed/or-sym.rkt new file mode 100644 index 00000000..767af129 --- /dev/null +++ b/collects/tests/typed-scheme/succeed/or-sym.rkt @@ -0,0 +1,25 @@ +#lang typed/scheme + +#;#; +(: g (Any -> Boolean : (U 'r 's))) +(define (g x) + (let ([q x]) + (let ([op2 (eq? 'r x)]) + (if op2 op2 (eq? 's x))))) + + +(define: f? : (Any -> Boolean : (U 'q 'r 's)) + (lambda (x) + (let ([op1 (eq? 'q x)]) + (if op1 op1 + (let ([op2 (eq? 'r x)]) + (if op2 + ;; !#f_op2 + op2 + (eq? 's x))))))) + +(define: f2? : (Any -> Boolean : (U 'q 'r 's)) + (lambda (x) + (or (eq? 'q x) + (eq? 'r x) + (eq? 's x)))) diff --git a/collects/tests/typed-scheme/unit-tests/typecheck-tests.rkt b/collects/tests/typed-scheme/unit-tests/typecheck-tests.rkt index 142385a5..67d520a8 100644 --- a/collects/tests/typed-scheme/unit-tests/typecheck-tests.rkt +++ b/collects/tests/typed-scheme/unit-tests/typecheck-tests.rkt @@ -794,6 +794,14 @@ [tc-e (floor 1/2) -Integer] [tc-e (ceiling 1/2) -Integer] [tc-e (truncate 0.5) -Flonum] + [tc-e/t (ann (lambda (x) (lambda (x) x)) + (Integer -> (All (X) (X -> X)))) + (t:-> -Integer (-poly (x) (t:-> x x)))] + [tc-e/t (lambda: ([x : Any]) + (or (eq? 'q x) + (eq? 'r x) + (eq? 's x))) + (make-pred-ty (t:Un (-val 'q) (-val 'r) (-val 's)))] ) (test-suite "check-type tests"