diff --git a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/utils/any-wrap.rkt b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/utils/any-wrap.rkt index 75f2b2f45d..7a9b79a381 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/utils/any-wrap.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/utils/any-wrap.rkt @@ -1,6 +1,7 @@ #lang racket/base (require racket/match racket/contract/base racket/contract/combinator + racket/fixnum racket/flonum racket/set (only-in (combine-in racket/private/promise) promise? @@ -11,7 +12,11 @@ (define (base-val? e) (or (number? e) (string? e) (char? e) (symbol? e) (null? e) (regexp? e) (eq? undef e) (path? e) - (regexp? e) (keyword? e) (bytes? e) (boolean? e) (void? e))) + (regexp? e) (keyword? e) (bytes? e) (boolean? e) (void? e) + ;; Base values because you can only store flonums/fixnums in these + ;; and not any higher-order values. This isn't sound if we ever + ;; introduce bounded polymorphism for Flvector/Fxvector. + (flvector? e) (fxvector? e))) (define (val-first-projection b) (define (fail neg-party v) diff --git a/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/succeed/pr14374.rkt b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/succeed/pr14374.rkt new file mode 100644 index 0000000000..872dbe039f --- /dev/null +++ b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/succeed/pr14374.rkt @@ -0,0 +1,11 @@ +#lang typed/racket + +;; Test for PR 14374. Ensure that flvector is okay for Any + +(require typed/rackunit + racket/fixnum + racket/flonum) + +(check-equal? (flvector 0.0) (flvector 0.0)) +(check-equal? (fxvector 0) (fxvector 0)) +