Fix naming of the native latin1 encodings
authorKai Ruemmler <kai.ruemmler@gmx.net>
Thu, 1 Dec 2016 22:59:50 +0000 (17:59 -0500)
committerBen Gamari <ben@smart-cactus.org>
Thu, 1 Dec 2016 23:00:35 +0000 (18:00 -0500)
textEncodingName is notjust a string, it must be a valid input for
mkTextEncoding, as stated in libraries/base/GHC/IO/Encoding/Types.hs.

Test Plan:
A working latin1 locale is required on the system.  Reason: ghc's
initial locale encoding defaults to ASCII, if either an unknown locale
or unknown charset is used.  For the bug to show up, ghc must start up
using the latin1 encoding.

From main directory in ghc do:
$ ./configure && make clean && make boot && make inplace/bin/ghc-stage2
$ LC_CTYPE="de_DE.ISO-8859-1" ./inplace/bin/ghc-stage2

Before the patch, the last line leads to the exception thrown:
ghc-stage2: mkTextEncoding: does not exist (unknown
encoding:ISO8859-1(checked)//TRANSLIT)

After the patch, ghc-stage2 prints a short usage summary as expected.
Moreover,
$ make test TEST=encoding005
continues to  pass after the patch.

Reviewers: austin, hvr, rwbarton, bgamari

Reviewed By: bgamari

Subscribers: mpickering, rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D2667

libraries/base/GHC/IO/Encoding/Latin1.hs

index efef240..730379e 100644 (file)
@@ -50,7 +50,7 @@ latin1 = mkLatin1 ErrorOnCodingFailure
 
 -- | @since 4.4.0.0
 mkLatin1 :: CodingFailureMode -> TextEncoding
-mkLatin1 cfm = TextEncoding { textEncodingName = "ISO8859-1",
+mkLatin1 cfm = TextEncoding { textEncodingName = "ISO-8859-1",
                               mkTextDecoder = latin1_DF cfm,
                               mkTextEncoder = latin1_EF cfm }
 
@@ -79,7 +79,7 @@ latin1_checked = mkLatin1_checked ErrorOnCodingFailure
 
 -- | @since 4.4.0.0
 mkLatin1_checked :: CodingFailureMode -> TextEncoding
-mkLatin1_checked cfm = TextEncoding { textEncodingName = "ISO8859-1(checked)",
+mkLatin1_checked cfm = TextEncoding { textEncodingName = "ISO-8859-1",
                                       mkTextDecoder = latin1_DF cfm,
                                       mkTextEncoder = latin1_checked_EF cfm }