diff options
author | Hans Bolinder <[email protected]> | 2017-04-19 16:10:15 +0200 |
---|---|---|
committer | Hans Bolinder <[email protected]> | 2017-04-24 14:51:03 +0200 |
commit | ef0dbc4f2a43d629d086c3e2b9a762bbc00d034b (patch) | |
tree | de3dd7b8d268f0819453920f8b6e8efb7212477e /lib/stdlib/test | |
parent | 739bca3fc267c55d84c8f5c193d16c0b2a7eee13 (diff) | |
download | otp-ef0dbc4f2a43d629d086c3e2b9a762bbc00d034b.tar.gz otp-ef0dbc4f2a43d629d086c3e2b9a762bbc00d034b.tar.bz2 otp-ef0dbc4f2a43d629d086c3e2b9a762bbc00d034b.zip |
stdlib: Add Unicode modifier t to control sequences w and W
As of the introduction of Unicode characters in atoms, the control
sequences 'w' and 'W' can return non-Latin-1 characters, unless some
measure is taken.
This commit makes sure that '~w' and '~W' always return Latin-1
characters, or bytes, which can be output to ports or written to raw
files.
The Unicode translation modifier 't' is needed to return non-Latin-1
characters.
Diffstat (limited to 'lib/stdlib/test')
-rw-r--r-- | lib/stdlib/test/io_SUITE.erl | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/stdlib/test/io_SUITE.erl b/lib/stdlib/test/io_SUITE.erl index b2754e47ba..fb62e3aa3c 100644 --- a/lib/stdlib/test/io_SUITE.erl +++ b/lib/stdlib/test/io_SUITE.erl @@ -2348,4 +2348,19 @@ otp_14285(_Config) -> L1 = [S || C <- Chars, S <- io_lib:write_atom(list_to_atom([C])), not is_latin1(S)], L1 = lists:seq(256, 512), + + latin1_fmt("~w", ['кирилли́ческий атом']), + latin1_fmt("~w", ['\x{10FFFF}']), + "'кирилли́ческий атом'" = fmt("~tw", ['кирилли́ческий атом']), + [$',16#10FFFF,$'] = fmt("~tw", ['\x{10FFFF}']), + + latin1_fmt("~W", ['кирилли́ческий атом', 13]), + latin1_fmt("~W", ['\x{10FFFF}', 13]), + "'кирилли́ческий атом'" = fmt("~tW", ['кирилли́ческий атом', 13]), + [$',16#10FFFF,$'] = fmt("~tW", ['\x{10FFFF}', 13]), + ok. + +latin1_fmt(Fmt, Args) -> + L = fmt(Fmt, Args), + true = lists:all(fun is_latin1/1, L). |