diff --git a/collects/tests/typed-racket/optimizer/tests/pr13788.rkt b/collects/tests/typed-racket/optimizer/tests/pr13788.rkt new file mode 100644 index 00000000..ee11b30f --- /dev/null +++ b/collects/tests/typed-racket/optimizer/tests/pr13788.rkt @@ -0,0 +1,9 @@ +#; +( +TR opt: pr13788.rkt 9:0 (vector-length (vector 1 2 3)) -- known-length vector-length +3 +) + +#lang typed/racket + +(vector-length (vector 1 2 3)) ; should not print the vector diff --git a/collects/typed-racket/optimizer/vector.rkt b/collects/typed-racket/optimizer/vector.rkt index d22fd487..b83e3229 100644 --- a/collects/typed-racket/optimizer/vector.rkt +++ b/collects/typed-racket/optimizer/vector.rkt @@ -44,7 +44,7 @@ (add-disappeared-use #'op) (match (type-of #'v) [(tc-result1: (HeterogeneousVector: es)) - #`(begin v.opt #,(length es))]))) ; v may have side effects + #`(let () v.opt #,(length es))]))) ; v may have side effects ;; we can optimize vector-length on all vectors. ;; since the program typechecked, we know the arg is a vector. ;; we can optimize no matter what.