diff --git a/collects/tests/typed-scheme/fail/pr10350.rkt b/collects/tests/typed-scheme/fail/pr10350.rkt new file mode 100644 index 0000000000..a3c78126bd --- /dev/null +++ b/collects/tests/typed-scheme/fail/pr10350.rkt @@ -0,0 +1,12 @@ +#lang typed-scheme +(require/typed +scheme/base +[values (All (T) ((Any -> Boolean) -> (Any -> Boolean : T)))]) + +(: number->string? (Any -> Boolean : (Number -> String))) +(define (number->string? x) + (((inst values (Number -> String)) procedure?) x)) + +(: f (Number -> String)) +(define f + (if (number->string? +) + number->string)) \ No newline at end of file diff --git a/collects/tests/typed-scheme/succeed/pr10319.rkt b/collects/tests/typed-scheme/succeed/pr10319.rkt new file mode 100644 index 0000000000..2da2e3c55b --- /dev/null +++ b/collects/tests/typed-scheme/succeed/pr10319.rkt @@ -0,0 +1,14 @@ + +#lang typed-scheme + +(define-type-alias LSN (Rec LSN (U '() (cons Number LSN) (cons Symbol LSN)))) + +(: sum (LSN -> Number)) +;; add all numbers in this lsn +(define (sum lsn) + (cond + [(null? lsn) 0] + [(number? (car lsn)) (+ (car lsn) (sum (cdr lsn)))] + [else (sum (cdr lsn))])) + +(sum '(a b 2 3)) \ No newline at end of file diff --git a/collects/tests/typed-scheme/succeed/pr10342.rkt b/collects/tests/typed-scheme/succeed/pr10342.rkt new file mode 100644 index 0000000000..8905605242 --- /dev/null +++ b/collects/tests/typed-scheme/succeed/pr10342.rkt @@ -0,0 +1,5 @@ +#lang typed-scheme +(require/typed + scheme/base + [opaque WeakBox weak-box?] + [make-weak-box (Any -> WeakBox)]) \ No newline at end of file diff --git a/collects/tests/typed-scheme/succeed/pr10562.rkt b/collects/tests/typed-scheme/succeed/pr10562.rkt new file mode 100644 index 0000000000..8ba15861eb --- /dev/null +++ b/collects/tests/typed-scheme/succeed/pr10562.rkt @@ -0,0 +1,4 @@ +#lang typed/racket +(: foo : (Rec this (List Number (Boxof (U #f this))))) +(define foo (list 1 (box #f))) +(set-box! (second foo) foo) diff --git a/collects/typed-scheme/types/abbrev.rkt b/collects/typed-scheme/types/abbrev.rkt index 3371df4386..43bcdbbe2f 100644 --- a/collects/typed-scheme/types/abbrev.rkt +++ b/collects/typed-scheme/types/abbrev.rkt @@ -3,7 +3,7 @@ (require "../utils/utils.rkt") (require (rep type-rep object-rep filter-rep rep-utils) - "printer.rkt" "utils.rkt" + "printer.rkt" "utils.rkt" "resolve.rkt" (utils tc-utils) scheme/list scheme/match @@ -42,7 +42,7 @@ (foldr -pair (-val '()) l)) (define (untuple t) - (match t + (match (resolve t) [(Value: '()) null] [(Pair: a b) (cond [(untuple b) => (lambda (l) (cons a l))] [else #f])]