[racket] TR Regression: Types for regexp operations

From: Richard Lawrence (richard.lawrence at berkeley.edu)
Date: Mon Jun 20 01:15:38 EDT 2011

Hi Typed Racket folks,

I checked out the development version of Racket today, and noticed what
I believe to be a regression: TR thinks that regexp-match and friends
return a String when given an Input-Port, but in fact they return Bytes:

; as expected: string input returns String
(regexp-match #rx"^[0-9]" "100")
- : (U False (Pairof String (Listof (U String False))))
'("1")

; wrong: bytes typed as String
(regexp-match #rx"^[0-9]" (open-input-string "100"))
- : (U False (Pairof String (Listof (U String False))))
;                    ^^^^^^
'(#"1")

; in 5.1.1:
(regexp-match #rx"^[0-9]" (open-input-string "100"))
- : (U False (Listof (U Bytes False)))
'(#"1")

Also affected:
regexp-match*
regexp-try-match
regexp-match-peek
regexp-match-peek-immediate
regexp-split
(possibly others)

I have not confirmed this but I suspect commit #
029651b9eeaed6b4cecb800da2c01fa6cbed1270.

By the way, is there a more official way to submit a bug report?  I
couldn't see one on racket-lang.org...should I have sent this to the dev
list?

Best,
Richard



Posted on the users mailing list.