diff --git a/collects/tests/typed-scheme/fail/ann-map-funcs.ss b/collects/tests/typed-scheme/fail/ann-map-funcs.ss new file mode 100644 index 00000000..f8ba9fb4 --- /dev/null +++ b/collects/tests/typed-scheme/fail/ann-map-funcs.ss @@ -0,0 +1,17 @@ +#; +(exn-pred 3) +#lang typed-scheme + +(: map-with-funcs (All (b a ...) ((a ... a -> b) * -> (a ... a -> (Listof b))))) + +(define (map-with-funcs . fs) + (lambda as + (map (lambda: ([f : (a ... a -> b)]) + (apply f as)) + fs))) + +(ann (map-with-funcs + - * /) (Number Number * -> (Listof Integer))) + +(ann (map-with-funcs + - * /) (Number * -> (Listof Number))) + +(ann (map-with-funcs + - * /) (Integer * -> (Listof Number))) diff --git a/collects/tests/typed-scheme/fail/apply-dots.ss b/collects/tests/typed-scheme/fail/apply-dots.ss index 69d6a129..d798f8c3 100644 --- a/collects/tests/typed-scheme/fail/apply-dots.ss +++ b/collects/tests/typed-scheme/fail/apply-dots.ss @@ -1,3 +1,5 @@ +#; +(exn-pred 2) #lang typed-scheme (plambda: (a ...) ([z : String] . [w : Number *]) diff --git a/collects/tests/typed-scheme/main.ss b/collects/tests/typed-scheme/main.ss index d7dfca88..81726da0 100644 --- a/collects/tests/typed-scheme/main.ss +++ b/collects/tests/typed-scheme/main.ss @@ -20,10 +20,12 @@ (lambda (val) (and (exn? val) (for/and ([e args]) - (if (procedure? e) - (e val) - (begin - (regexp-match e (exn-message val))))))) + (cond [(procedure? e) (e val)] + [(number? e) + (and (exn:fail:syntax? val) + (= e (length (exn:fail:syntax-exprs val))))] + [(or (string? e) (regexp? e) (bytes? e)) + (regexp-match e (exn-message val))])))) args)) (define (exn-pred p) diff --git a/collects/tests/typed-scheme/succeed/ann-map-funcs.ss b/collects/tests/typed-scheme/succeed/ann-map-funcs.ss index d5784431..a7835a36 100644 --- a/collects/tests/typed-scheme/succeed/ann-map-funcs.ss +++ b/collects/tests/typed-scheme/succeed/ann-map-funcs.ss @@ -8,4 +8,4 @@ (apply f as)) fs))) -(ann (map-with-funcs + - * /) (Integer Integer * -> (Listof Number))) \ No newline at end of file +(ann (map-with-funcs + - * /) (Number Number * -> (Listof Number)))