diff --git a/collects/tests/typed-racket/succeed/any-wrap-list.rkt b/collects/tests/typed-racket/succeed/any-wrap-list.rkt new file mode 100644 index 0000000000..9576df4b77 --- /dev/null +++ b/collects/tests/typed-racket/succeed/any-wrap-list.rkt @@ -0,0 +1,11 @@ +#lang racket/load + +(module m typed/racket + (provide f) + (define: f : Any '(a (2 3)))) + +(module n racket + (require 'm) + (list? (second f))) + +(require 'n) diff --git a/collects/typed-racket/utils/any-wrap.rkt b/collects/typed-racket/utils/any-wrap.rkt index 9974543c2e..ce72581899 100644 --- a/collects/typed-racket/utils/any-wrap.rkt +++ b/collects/typed-racket/utils/any-wrap.rkt @@ -7,12 +7,15 @@ (lambda (v p write?) (fprintf p "#" (any-wrap-val v)))) +(define undef (letrec ([x x]) x)) + (define (traverse wrap?) (define (t v) (match v [(? (lambda (e) (and (any-wrap? e) (not wrap?)))) (any-wrap-val v)] [(? (lambda (e) (or (number? e) (string? e) (char? e) (symbol? e) + (null? e) (regexp? e) (eq? undef e) (keyword? e) (bytes? e) (boolean? e) (void? e)))) v] [(cons x y) (cons (t x) (t y))]