Sort out whether FastString should always be Utf-8 encoded bytestrings
There are a few functions in the FastString
interface which can be used to make a FastString
but they don't agree about UTF-8 encoding.
For example, mkFastString :: String -> ByteString
does UTF-8 encode the string but mkFastStringByteString
just assumes the string is already UTF-8
encoded. It's not clear to me that all of the calls to mkFastStringByteString
obey this.
For example, the call in CoreOpt
looks like it could be subtly wrong.
Another question, do we always want to UTF-8 encode FastStrings? Does this sort of thing matter in the code generator where all the strings are z-encoded anyway.