mirror of
https://github.com/dlang/phobos.git
synced 2025-05-02 16:10:45 +03:00
Merge pull request #8866 from eoan-ermine/issue#24075
Fix issue 24075 - Can't use toChars with `ushort` or `ubyte`
This commit is contained in:
commit
713ac8032b
1 changed files with 25 additions and 4 deletions
29
std/conv.d
29
std/conv.d
|
@ -5712,8 +5712,8 @@ private auto hexStrLiteral(String)(scope String hexData)
|
|||
* radix = 2, 8, 10, 16
|
||||
* Char = character type for output
|
||||
* letterCase = lower for deadbeef, upper for DEADBEEF
|
||||
* value = integer to convert. Can be uint or ulong. If radix is 10, can also be
|
||||
* int or long.
|
||||
* value = integer to convert. Can be ubyte, ushort, uint or ulong. If radix
|
||||
* is 10, can also be byte, short, int or long.
|
||||
* Returns:
|
||||
* Random access range with slicing and everything
|
||||
*/
|
||||
|
@ -5721,8 +5721,7 @@ private auto hexStrLiteral(String)(scope String hexData)
|
|||
auto toChars(ubyte radix = 10, Char = char, LetterCase letterCase = LetterCase.lower, T)(T value)
|
||||
pure nothrow @nogc @safe
|
||||
if ((radix == 2 || radix == 8 || radix == 10 || radix == 16) &&
|
||||
(is(immutable T == immutable uint) || is(immutable T == immutable ulong) ||
|
||||
radix == 10 && (is(immutable T == immutable int) || is(immutable T == immutable long))))
|
||||
isIntegral!T && (radix == 10 || isUnsigned!T))
|
||||
{
|
||||
alias UT = Unqual!T;
|
||||
|
||||
|
@ -5870,8 +5869,12 @@ if ((radix == 2 || radix == 8 || radix == 10 || radix == 16) &&
|
|||
assert(toChars(123) == toChars(123));
|
||||
|
||||
{
|
||||
assert(toChars!2(ubyte(0)).array == "0");
|
||||
assert(toChars!2(ushort(0)).array == "0");
|
||||
assert(toChars!2(0u).array == "0");
|
||||
assert(toChars!2(0Lu).array == "0");
|
||||
assert(toChars!2(ubyte(1)).array == "1");
|
||||
assert(toChars!2(ushort(1)).array == "1");
|
||||
assert(toChars!2(1u).array == "1");
|
||||
assert(toChars!2(1Lu).array == "1");
|
||||
|
||||
|
@ -5884,10 +5887,14 @@ if ((radix == 2 || radix == 8 || radix == 10 || radix == 16) &&
|
|||
assert(s.retro.array == "01");
|
||||
}
|
||||
{
|
||||
assert(toChars!8(ubyte(0)).array == "0");
|
||||
assert(toChars!8(ushort(0)).array == "0");
|
||||
assert(toChars!8(0u).array == "0");
|
||||
assert(toChars!8(0Lu).array == "0");
|
||||
assert(toChars!8(1u).array == "1");
|
||||
assert(toChars!8(1234567Lu).array == "4553207");
|
||||
assert(toChars!8(ubyte.max).array == "377");
|
||||
assert(toChars!8(ushort.max).array == "177777");
|
||||
|
||||
auto r = toChars!8(8u);
|
||||
assert(r.length == 2);
|
||||
|
@ -5898,10 +5905,14 @@ if ((radix == 2 || radix == 8 || radix == 10 || radix == 16) &&
|
|||
assert(s.retro.array == "01");
|
||||
}
|
||||
{
|
||||
assert(toChars!10(ubyte(0)).array == "0");
|
||||
assert(toChars!10(ushort(0)).array == "0");
|
||||
assert(toChars!10(0u).array == "0");
|
||||
assert(toChars!10(0Lu).array == "0");
|
||||
assert(toChars!10(1u).array == "1");
|
||||
assert(toChars!10(1234567Lu).array == "1234567");
|
||||
assert(toChars!10(ubyte.max).array == "255");
|
||||
assert(toChars!10(ushort.max).array == "65535");
|
||||
assert(toChars!10(uint.max).array == "4294967295");
|
||||
assert(toChars!10(ulong.max).array == "18446744073709551615");
|
||||
|
||||
|
@ -5918,10 +5929,16 @@ if ((radix == 2 || radix == 8 || radix == 10 || radix == 16) &&
|
|||
assert(toChars!10(0L).array == "0");
|
||||
assert(toChars!10(1).array == "1");
|
||||
assert(toChars!10(1234567L).array == "1234567");
|
||||
assert(toChars!10(byte.max).array == "127");
|
||||
assert(toChars!10(short.max).array == "32767");
|
||||
assert(toChars!10(int.max).array == "2147483647");
|
||||
assert(toChars!10(long.max).array == "9223372036854775807");
|
||||
assert(toChars!10(-byte.max).array == "-127");
|
||||
assert(toChars!10(-short.max).array == "-32767");
|
||||
assert(toChars!10(-int.max).array == "-2147483647");
|
||||
assert(toChars!10(-long.max).array == "-9223372036854775807");
|
||||
assert(toChars!10(byte.min).array == "-128");
|
||||
assert(toChars!10(short.min).array == "-32768");
|
||||
assert(toChars!10(int.min).array == "-2147483648");
|
||||
assert(toChars!10(long.min).array == "-9223372036854775808");
|
||||
|
||||
|
@ -5938,6 +5955,10 @@ if ((radix == 2 || radix == 8 || radix == 10 || radix == 16) &&
|
|||
assert(toChars!(16)(0Lu).array == "0");
|
||||
assert(toChars!(16)(10u).array == "a");
|
||||
assert(toChars!(16, char, LetterCase.upper)(0x12AF34567Lu).array == "12AF34567");
|
||||
assert(toChars!(16)(ubyte(0)).array == "0");
|
||||
assert(toChars!(16)(ushort(0)).array == "0");
|
||||
assert(toChars!(16)(ubyte.max).array == "ff");
|
||||
assert(toChars!(16)(ushort.max).array == "ffff");
|
||||
|
||||
auto r = toChars!(16)(16u);
|
||||
assert(r.length == 2);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue