mirror of
https://github.com/dlang/phobos.git
synced 2025-04-27 21:51:40 +03:00
Remove use of automatic adjacent string literal concatenation from phobos
This commit is contained in:
parent
cf5a46d716
commit
a656f26e9e
26 changed files with 94 additions and 94 deletions
|
@ -4799,8 +4799,8 @@ unittest
|
|||
{
|
||||
debug(std_algorithm) scope(success)
|
||||
writeln("unittest @", __FILE__, ":", __LINE__, " done.");
|
||||
string h = "/homes/aalexand/d/dmd/bin/../lib/libphobos.a(dmain2.o)"
|
||||
"(.gnu.linkonce.tmain+0x74): In function `main' undefined reference"
|
||||
string h = "/homes/aalexand/d/dmd/bin/../lib/libphobos.a(dmain2.o)"~
|
||||
"(.gnu.linkonce.tmain+0x74): In function `main' undefined reference"~
|
||||
" to `_Dmain':";
|
||||
string[] ns = ["libphobos", "function", " undefined", "`", ":"];
|
||||
foreach (n ; ns) {
|
||||
|
@ -7008,7 +7008,7 @@ minCount(alias pred = "a < b", Range)(Range range)
|
|||
alias RetType = Tuple!(T, size_t);
|
||||
|
||||
static assert (is(typeof(RetType(range.front, 1))),
|
||||
format("Error: Cannot call minCount on a %s, because it is not possible "
|
||||
format("Error: Cannot call minCount on a %s, because it is not possible "~
|
||||
"to copy the result value (a %s) into a Tuple.", Range.stringof, T.stringof));
|
||||
|
||||
enforce(!range.empty, "Can't count elements from an empty range");
|
||||
|
@ -7071,7 +7071,7 @@ minCount(alias pred = "a < b", Range)(Range range)
|
|||
}
|
||||
else
|
||||
static assert(false,
|
||||
format("Sorry, can't find the minCount of a %s: Don't know how "
|
||||
format("Sorry, can't find the minCount of a %s: Don't know how "~
|
||||
"to keep track of the smallest %s element.", Range.stringof, T.stringof));
|
||||
}
|
||||
|
||||
|
@ -10389,7 +10389,7 @@ bool isSorted(alias less = "a < b", Range)(Range r) if (isForwardRange!(Range))
|
|||
if (!binaryFun!less(r[i + 1], r[i])) continue;
|
||||
assert(
|
||||
!binaryFun!less(r[i], r[i + 1]),
|
||||
text("Predicate for isSorted is not antisymmetric. Both"
|
||||
text("Predicate for isSorted is not antisymmetric. Both",
|
||||
" pred(a, b) and pred(b, a) are true for a=", r[i],
|
||||
" and b=", r[i+1], " in positions ", i, " and ",
|
||||
i + 1));
|
||||
|
@ -10408,7 +10408,7 @@ bool isSorted(alias less = "a < b", Range)(Range r) if (isForwardRange!(Range))
|
|||
// Check for antisymmetric predicate
|
||||
assert(
|
||||
!binaryFun!less(r.front, ahead.front),
|
||||
text("Predicate for isSorted is not antisymmetric. Both"
|
||||
text("Predicate for isSorted is not antisymmetric. Both",
|
||||
" pred(a, b) and pred(b, a) are true for a=", r.front,
|
||||
" and b=", ahead.front, " in positions ", i, " and ",
|
||||
i + 1));
|
||||
|
|
|
@ -103,7 +103,7 @@ private template createAccessors(
|
|||
{
|
||||
// getter
|
||||
enum result = "@property @safe "~T.stringof~" "~name~"() pure nothrow const { auto result = "
|
||||
"("~store~" & "
|
||||
~"("~store~" & "
|
||||
~ myToString(maskAllElse) ~ ") >>"
|
||||
~ myToString(offset) ~ ";"
|
||||
~ (T.min < 0
|
||||
|
@ -116,9 +116,9 @@ private template createAccessors(
|
|||
~"assert(v >= "~name~"_min); "
|
||||
~"assert(v <= "~name~"_max); "
|
||||
~store~" = cast(typeof("~store~"))"
|
||||
" (("~store~" & ~cast(typeof("~store~"))"~myToString(maskAllElse)~")"
|
||||
" | ((cast(typeof("~store~")) v << "~myToString(offset)~")"
|
||||
" & "~myToString(maskAllElse)~"));}\n"
|
||||
~" (("~store~" & ~cast(typeof("~store~"))"~myToString(maskAllElse)~")"
|
||||
~" | ((cast(typeof("~store~")) v << "~myToString(offset)~")"
|
||||
~" & "~myToString(maskAllElse)~"));}\n"
|
||||
// constants
|
||||
~"enum "~T.stringof~" "~name~"_min = cast("~T.stringof~")"
|
||||
~myToString(minVal)~"; "
|
||||
|
|
|
@ -626,7 +626,7 @@ private void _send(T...)( MsgType type, Tid tid, T vals )
|
|||
void receive(T...)( T ops )
|
||||
in
|
||||
{
|
||||
assert(mbox !is null, "Cannot receive a message until a thread was spawned "
|
||||
assert(mbox !is null, "Cannot receive a message until a thread was spawned "~
|
||||
"or thisTid was passed to a running thread.");
|
||||
}
|
||||
body
|
||||
|
@ -708,7 +708,7 @@ private template receiveOnlyRet(T...)
|
|||
receiveOnlyRet!(T) receiveOnly(T...)()
|
||||
in
|
||||
{
|
||||
assert(mbox !is null, "Cannot receive a message until a thread was spawned "
|
||||
assert(mbox !is null, "Cannot receive a message until a thread was spawned "~
|
||||
"or thisTid was passed to a running thread.");
|
||||
}
|
||||
body
|
||||
|
@ -775,7 +775,7 @@ unittest
|
|||
bool receiveTimeout(T...)( Duration duration, T ops )
|
||||
in
|
||||
{
|
||||
assert(mbox !is null, "Cannot receive a message until a thread was spawned "
|
||||
assert(mbox !is null, "Cannot receive a message until a thread was spawned "~
|
||||
"or thisTid was passed to a running thread.");
|
||||
}
|
||||
body
|
||||
|
|
|
@ -2403,7 +2403,7 @@ Target parse(Target, Source)(ref Source p)
|
|||
{ case '-': sexp++;
|
||||
goto case;
|
||||
case '+': p.popFront(); enforce(!p.empty,
|
||||
new ConvException("Error converting input"
|
||||
new ConvException("Error converting input"~
|
||||
" to floating point"));
|
||||
break;
|
||||
default: {}
|
||||
|
@ -2421,7 +2421,7 @@ Target parse(Target, Source)(ref Source p)
|
|||
ndigits = 1;
|
||||
}
|
||||
exp += (sexp) ? -e : e;
|
||||
enforce(ndigits, new ConvException("Error converting input"
|
||||
enforce(ndigits, new ConvException("Error converting input"~
|
||||
" to floating point"));
|
||||
|
||||
if (msdec)
|
||||
|
|
|
@ -396,7 +396,7 @@ auto csvReader(Contents = string,
|
|||
// Test standard iteration over input.
|
||||
unittest
|
||||
{
|
||||
string str = `one,"two ""quoted"""` ~ "\n\"three\nnew line\",""\nfive,six";
|
||||
string str = `one,"two ""quoted"""` ~ "\n\"three\nnew line\",\nfive,six";
|
||||
auto records = csvReader(str);
|
||||
|
||||
int count;
|
||||
|
@ -700,7 +700,7 @@ unittest
|
|||
return text[0];
|
||||
}
|
||||
}
|
||||
auto ir = InputRange("Name,Occupation,Salary\r"d
|
||||
auto ir = InputRange("Name,Occupation,Salary\r"d~
|
||||
"Joe,Carpenter,300000\nFred,Blacksmith,400000\r\n"d);
|
||||
|
||||
foreach(record; csvReader(ir, cast(string[])null))
|
||||
|
@ -1178,7 +1178,7 @@ public:
|
|||
if(_input.rowLength != 0)
|
||||
if(_input.col != _input.rowLength)
|
||||
throw new CSVException(
|
||||
format("Row %s's length %s does not match "
|
||||
format("Row %s's length %s does not match "~
|
||||
"previous length of %s.", _input.row,
|
||||
_input.col, _input.rowLength));
|
||||
return;
|
||||
|
@ -1187,7 +1187,7 @@ public:
|
|||
if(_input.rowLength != 0)
|
||||
if(_input.col > _input.rowLength)
|
||||
throw new CSVException(
|
||||
format("Row %s's length %s does not match "
|
||||
format("Row %s's length %s does not match "~
|
||||
"previous length of %s.", _input.row,
|
||||
_input.col, _input.rowLength));
|
||||
}
|
||||
|
|
|
@ -296,7 +296,7 @@ unittest
|
|||
digest = crc32Of("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");
|
||||
assert(digest == cast(ubyte[])x"d2e6c21f");
|
||||
|
||||
digest = crc32Of("1234567890123456789012345678901234567890"
|
||||
digest = crc32Of("1234567890123456789012345678901234567890"~
|
||||
"1234567890123456789012345678901234567890");
|
||||
assert(digest == cast(ubyte[])x"724aa97c");
|
||||
|
||||
|
|
|
@ -883,7 +883,7 @@ class WrapperDigest(T) if(isDigest!T) : Digest
|
|||
}
|
||||
body
|
||||
{
|
||||
enum string msg = "Buffer needs to be at least " ~ digestLength!(T).stringof ~ " bytes "
|
||||
enum string msg = "Buffer needs to be at least " ~ digestLength!(T).stringof ~ " bytes " ~
|
||||
"big, check " ~ typeof(this).stringof ~ ".length!";
|
||||
asArray!(digestLength!T)(buf, msg) = _digest.finish();
|
||||
return buf[0 .. digestLength!T];
|
||||
|
@ -919,7 +919,7 @@ class WrapperDigest(T) if(isDigest!T) : Digest
|
|||
}
|
||||
body
|
||||
{
|
||||
enum string msg = "Buffer needs to be at least " ~ digestLength!(T).stringof ~ " bytes "
|
||||
enum string msg = "Buffer needs to be at least " ~ digestLength!(T).stringof ~ " bytes " ~
|
||||
"big, check " ~ typeof(this).stringof ~ ".length!";
|
||||
asArray!(digestLength!T)(buf, msg) = _digest.peek();
|
||||
return buf[0 .. digestLength!T];
|
||||
|
|
|
@ -467,7 +467,7 @@ unittest
|
|||
digest = md5Of("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");
|
||||
assert(digest == cast(ubyte[])x"d174ab98d277d9f5a5611c2c9f419d9f");
|
||||
|
||||
digest = md5Of("1234567890123456789012345678901234567890"
|
||||
digest = md5Of("1234567890123456789012345678901234567890"~
|
||||
"1234567890123456789012345678901234567890");
|
||||
assert(digest == cast(ubyte[])x"57edf4a22be3c955ac49da2e2107b67a");
|
||||
|
||||
|
|
|
@ -629,7 +629,7 @@ unittest
|
|||
digest = ripemd160Of("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");
|
||||
assert(digest == cast(ubyte[])x"b0e20b6e3116640286ed3a87a5713079b21f5189");
|
||||
|
||||
digest = ripemd160Of("1234567890123456789012345678901234567890"
|
||||
digest = ripemd160Of("1234567890123456789012345678901234567890"~
|
||||
"1234567890123456789012345678901234567890");
|
||||
assert(digest == cast(ubyte[])x"9b752e45573d4b39f4dbd3323cab82bf63326bfb");
|
||||
|
||||
|
|
|
@ -528,7 +528,7 @@ unittest
|
|||
digest = sha1Of("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");
|
||||
assert(digest == cast(ubyte[])x"761c457bf73b14d27e9e9265c46f4b4dda11f940");
|
||||
|
||||
digest = sha1Of("1234567890123456789012345678901234567890"
|
||||
digest = sha1Of("1234567890123456789012345678901234567890"~
|
||||
"1234567890123456789012345678901234567890");
|
||||
assert(digest == cast(ubyte[])x"50abf5706a150990a08b2c5ea40fa0e585554732");
|
||||
|
||||
|
|
|
@ -819,9 +819,9 @@ template EncoderInstance(CharType : Windows1252Char)
|
|||
}
|
||||
|
||||
immutable wstring charMap =
|
||||
"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021"
|
||||
"\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD"
|
||||
"\uFFFD\u2018\u2019\u201C\u201D\u2022\u2103\u2014"
|
||||
"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021"~
|
||||
"\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD"~
|
||||
"\uFFFD\u2018\u2019\u201C\u201D\u2022\u2103\u2014"~
|
||||
"\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178"
|
||||
;
|
||||
|
||||
|
@ -2463,7 +2463,7 @@ class EncodingSchemeASCII : EncodingScheme
|
|||
"ISO_646.irv:1991",
|
||||
"US-ASCII",
|
||||
"cp367",
|
||||
"csASCII"
|
||||
"csASCII",
|
||||
"iso-ir-6",
|
||||
"us"
|
||||
];
|
||||
|
|
|
@ -410,11 +410,11 @@ unittest
|
|||
"delegate void() " ~
|
||||
(EncloseSafe ? "@safe " : "") ~
|
||||
(EnclosePure ? "pure " : "") ~
|
||||
"{ ""enforce(true, { "
|
||||
"{ enforce(true, { " ~
|
||||
"int n; " ~
|
||||
(BodySafe ? "" : "auto p = &n + 10; " ) ~ // unsafe code
|
||||
(BodyPure ? "" : "static int g; g = 10; ") ~ // impure code
|
||||
"}); "
|
||||
"}); " ~
|
||||
"}";
|
||||
enum expect =
|
||||
(BodySafe || !EncloseSafe) && (!EnclosePure || BodyPure);
|
||||
|
|
|
@ -139,7 +139,7 @@ L_unrolled:
|
|||
~ indexedLoopUnroll( 8,
|
||||
"mov EAX, [@*4-8*4+EDX+ECX*4];"
|
||||
~ ( op == '+' ? "adc" : "sbb" ) ~ " EAX, [@*4-8*4+ESI+ECX*4];"
|
||||
"mov [@*4-8*4+EDI+ECX*4], EAX;")
|
||||
~ "mov [@*4-8*4+EDI+ECX*4], EAX;")
|
||||
~ "}");
|
||||
asm {
|
||||
setc AL; // save carry
|
||||
|
@ -156,7 +156,7 @@ L_residual:
|
|||
~ indexedLoopUnroll( 1,
|
||||
"mov EAX, [@*4+EDX+ECX*4];"
|
||||
~ ( op == '+' ? "adc" : "sbb" ) ~ " EAX, [@*4+ESI+ECX*4];"
|
||||
"mov [@*4+EDI+ECX*4], EAX;") ~ "}");
|
||||
~ "mov [@*4+EDI+ECX*4], EAX;") ~ "}");
|
||||
asm {
|
||||
setc AL; // save carry
|
||||
add ECX, 1;
|
||||
|
|
|
@ -162,14 +162,14 @@ version(LittleEndian)
|
|||
{
|
||||
static assert(real.mant_dig == 53 || real.mant_dig==64
|
||||
|| real.mant_dig == 113,
|
||||
"Only 64-bit, 80-bit, and 128-bit reals"
|
||||
"Only 64-bit, 80-bit, and 128-bit reals"~
|
||||
" are supported for LittleEndian CPUs");
|
||||
}
|
||||
else
|
||||
{
|
||||
static assert(real.mant_dig == 53 || real.mant_dig==106
|
||||
|| real.mant_dig == 113,
|
||||
"Only 64-bit and 128-bit reals are supported for BigEndian CPUs."
|
||||
"Only 64-bit and 128-bit reals are supported for BigEndian CPUs."~
|
||||
" double-double reals have partial support");
|
||||
}
|
||||
|
||||
|
|
|
@ -3748,7 +3748,7 @@ struct Curl
|
|||
{
|
||||
_onReceiveHeader = (in char[] od)
|
||||
{
|
||||
throwOnStopped("Receive header callback called on "
|
||||
throwOnStopped("Receive header callback called on "~
|
||||
"cleaned up Curl instance");
|
||||
callback(od);
|
||||
};
|
||||
|
@ -3866,7 +3866,7 @@ struct Curl
|
|||
{
|
||||
_onSocketOption = (curl_socket_t sock, CurlSockType st)
|
||||
{
|
||||
throwOnStopped("Socket option callback called on "
|
||||
throwOnStopped("Socket option callback called on "~
|
||||
"cleaned up Curl instance");
|
||||
return callback(sock, st);
|
||||
};
|
||||
|
@ -3908,7 +3908,7 @@ struct Curl
|
|||
{
|
||||
_onProgress = (size_t dlt, size_t dln, size_t ult, size_t uln)
|
||||
{
|
||||
throwOnStopped("Progress callback called on cleaned "
|
||||
throwOnStopped("Progress callback called on cleaned "~
|
||||
"up Curl instance");
|
||||
return callback(dlt, dln, ult, uln);
|
||||
};
|
||||
|
@ -4186,9 +4186,9 @@ private static size_t _receiveAsyncLines(Terminator, Unit)
|
|||
// onReceive. Can be up to a max of 4 bytes.
|
||||
enforceEx!CurlException(data.length <= 4,
|
||||
format(
|
||||
"Too many bytes left not decoded %s"
|
||||
" > 4. Maybe the charset specified in"
|
||||
" headers does not match "
|
||||
"Too many bytes left not decoded %s"~
|
||||
" > 4. Maybe the charset specified in"~
|
||||
" headers does not match "~
|
||||
"the actual content downloaded?",
|
||||
data.length));
|
||||
leftOverBytes ~= data;
|
||||
|
|
|
@ -229,7 +229,7 @@ EmailStatus isEmail (Char) (const(Char)[] email, CheckDns checkDNS = CheckDns.no
|
|||
break;
|
||||
|
||||
default:
|
||||
throw new Exception("More text found where none is allowed, but unrecognised prior "
|
||||
throw new Exception("More text found where none is allowed, but unrecognised prior " ~
|
||||
"context: " ~ to!(string)(contextPrior));
|
||||
}
|
||||
}
|
||||
|
@ -345,7 +345,7 @@ EmailStatus isEmail (Char) (const(Char)[] email, CheckDns checkDNS = CheckDns.no
|
|||
break;
|
||||
|
||||
default:
|
||||
throw new Exception("More text found where none is allowed, but unrecognised prior "
|
||||
throw new Exception("More text found where none is allowed, but unrecognised prior " ~
|
||||
"context: " ~ to!(string)(contextPrior));
|
||||
}
|
||||
|
||||
|
@ -851,19 +851,19 @@ unittest
|
|||
// EmailStatusCode.any).statusCode == EmailStatusCode.dnsWarningNoRecord);
|
||||
// DNS check is currently not implemented
|
||||
|
||||
assert(`abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghiklm@abcdefghijklmnopqrstuvwxyz`
|
||||
`abcdefghijklmnopqrstuvwxyzabcdefghikl.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghikl.`
|
||||
`abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghij`.isEmail(CheckDns.no,
|
||||
assert((`abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghiklm@abcdefghijklmnopqrstuvwxyz`~
|
||||
`abcdefghijklmnopqrstuvwxyzabcdefghikl.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghikl.`~
|
||||
`abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghij`).isEmail(CheckDns.no,
|
||||
EmailStatusCode.any).statusCode == EmailStatusCode.rfc5322TooLong);
|
||||
|
||||
assert(`a@abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghikl.abcdefghijklmnopqrstuvwxyz`
|
||||
`abcdefghijklmnopqrstuvwxyzabcdefghikl.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghikl.`
|
||||
`abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefg.hij`.isEmail(CheckDns.no,
|
||||
assert((`a@abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghikl.abcdefghijklmnopqrstuvwxyz`~
|
||||
`abcdefghijklmnopqrstuvwxyzabcdefghikl.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghikl.`~
|
||||
`abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefg.hij`).isEmail(CheckDns.no,
|
||||
EmailStatusCode.any).statusCode == EmailStatusCode.rfc5322TooLong);
|
||||
|
||||
assert(`a@abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghikl.abcdefghijklmnopqrstuvwxyz`
|
||||
`abcdefghijklmnopqrstuvwxyzabcdefghikl.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghikl.`
|
||||
`abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefg.hijk`.isEmail(CheckDns.no,
|
||||
assert((`a@abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghikl.abcdefghijklmnopqrstuvwxyz`~
|
||||
`abcdefghijklmnopqrstuvwxyzabcdefghikl.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghikl.`~
|
||||
`abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefg.hijk`).isEmail(CheckDns.no,
|
||||
EmailStatusCode.any).statusCode == EmailStatusCode.rfc5322DomainTooLong);
|
||||
|
||||
assert(`"test"@iana.org`.isEmail(CheckDns.no, EmailStatusCode.any).statusCode ==
|
||||
|
@ -1000,7 +1000,7 @@ unittest
|
|||
EmailStatusCode.foldingWhitespace, `Folding whitespace`);
|
||||
|
||||
assert("\u000D\u000A \u000D\u000A test@iana.org".isEmail(CheckDns.no, EmailStatusCode.any).statusCode ==
|
||||
EmailStatusCode.deprecatedFoldingWhitespace, `FWS with one line composed entirely of WSP`
|
||||
EmailStatusCode.deprecatedFoldingWhitespace, `FWS with one line composed entirely of WSP`~
|
||||
` -- only allowed as obsolete FWS (someone might allow only non-obsolete FWS)`);
|
||||
|
||||
assert(`(comment)test@iana.org`.isEmail(CheckDns.no, EmailStatusCode.any).statusCode == EmailStatusCode.comment);
|
||||
|
@ -1025,21 +1025,21 @@ unittest
|
|||
assert(`test@(comment)abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghikl.com`.isEmail(CheckDns.no,
|
||||
EmailStatusCode.any).statusCode == EmailStatusCode.deprecatedCommentFoldingWhitespaceNearAt);
|
||||
|
||||
assert(`(comment)test@abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghik.abcdefghijklmnopqrstuvwxyz`
|
||||
`abcdefghijklmnopqrstuvwxyzabcdefghik.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.`
|
||||
`abcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstu`.isEmail(CheckDns.no,
|
||||
assert((`(comment)test@abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghik.abcdefghijklmnopqrstuvwxyz`~
|
||||
`abcdefghijklmnopqrstuvwxyzabcdefghik.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.`~
|
||||
`abcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstu`).isEmail(CheckDns.no,
|
||||
EmailStatusCode.any).statusCode == EmailStatusCode.comment);
|
||||
|
||||
assert("test@iana.org\u000A".isEmail(CheckDns.no, EmailStatusCode.any).statusCode ==
|
||||
EmailStatusCode.errorExpectingText);
|
||||
|
||||
assert(`test@xn--hxajbheg2az3al.xn--jxalpdlp`.isEmail(CheckDns.no, EmailStatusCode.any).statusCode ==
|
||||
EmailStatusCode.valid, `A valid IDN from ICANN's <a href="http://idn.icann.org/#The_example.test_names">`
|
||||
EmailStatusCode.valid, `A valid IDN from ICANN's <a href="http://idn.icann.org/#The_example.test_names">`~
|
||||
`IDN TLD evaluation gateway</a>`);
|
||||
|
||||
assert(`xn--test@iana.org`.isEmail(CheckDns.no, EmailStatusCode.any).statusCode == EmailStatusCode.valid,
|
||||
`RFC 3490: "unless the email standards are revised to invite the use of IDNA for local parts, a domain label`
|
||||
` that holds the local part of an email address SHOULD NOT begin with the ACE prefix, and even if it does,`
|
||||
`RFC 3490: "unless the email standards are revised to invite the use of IDNA for local parts, a domain label`~
|
||||
` that holds the local part of an email address SHOULD NOT begin with the ACE prefix, and even if it does,`~
|
||||
` it is to be interpreted literally as a local part that happens to begin with the ACE prefix"`);
|
||||
|
||||
assert(`test@iana.org-`.isEmail(CheckDns.no, EmailStatusCode.any).statusCode ==
|
||||
|
@ -1179,7 +1179,7 @@ unittest
|
|||
EmailStatusCode.foldingWhitespace, `FWS`);
|
||||
|
||||
assert("test@iana.org\u000D\u000A \u000D\u000A ".isEmail(CheckDns.no, EmailStatusCode.any).statusCode ==
|
||||
EmailStatusCode.deprecatedFoldingWhitespace, `FWS with one line composed entirely of WSP -- `
|
||||
EmailStatusCode.deprecatedFoldingWhitespace, `FWS with one line composed entirely of WSP -- `~
|
||||
`only allowed as obsolete FWS (someone might allow only non-obsolete FWS)`);
|
||||
|
||||
assert("test@iana.org\u000D\u000A".isEmail(CheckDns.no, EmailStatusCode.any).statusCode ==
|
||||
|
@ -1316,13 +1316,13 @@ string statusCodeDescription (EmailStatusCode statusCode)
|
|||
case EmailStatusCode.dnsWarning: return "Address is valid but a DNS check was not successful";
|
||||
case EmailStatusCode.rfc5321: return "Address is valid for SMTP but has unusual elements";
|
||||
|
||||
case EmailStatusCode.cFoldingWhitespace: return "Address is valid within the message but cannot be used"
|
||||
case EmailStatusCode.cFoldingWhitespace: return "Address is valid within the message but cannot be used"~
|
||||
" unmodified for the envelope";
|
||||
|
||||
case EmailStatusCode.deprecated_: return "Address contains deprecated elements but may still be valid in"
|
||||
case EmailStatusCode.deprecated_: return "Address contains deprecated elements but may still be valid in"~
|
||||
" restricted contexts";
|
||||
|
||||
case EmailStatusCode.rfc5322: return "The address is only valid according to the broad definition of RFC 5322."
|
||||
case EmailStatusCode.rfc5322: return "The address is only valid according to the broad definition of RFC 5322."~
|
||||
" It is otherwise invalid";
|
||||
|
||||
case EmailStatusCode.any: return "";
|
||||
|
@ -1334,7 +1334,7 @@ string statusCodeDescription (EmailStatusCode statusCode)
|
|||
case EmailStatusCode.valid: return "Address is valid";
|
||||
|
||||
// Address is valid but a DNS check was not successful
|
||||
case EmailStatusCode.dnsWarningNoMXRecord: return "Could not find an MX record for this domain but an A-record"
|
||||
case EmailStatusCode.dnsWarningNoMXRecord: return "Could not find an MX record for this domain but an A-record"~
|
||||
" does exist";
|
||||
|
||||
case EmailStatusCode.dnsWarningNoRecord: return "Could not find an MX record or an A-record for this domain";
|
||||
|
@ -1342,13 +1342,13 @@ string statusCodeDescription (EmailStatusCode statusCode)
|
|||
// Address is valid for SMTP but has unusual elements
|
||||
case EmailStatusCode.rfc5321TopLevelDomain: return "Address is valid but at a Top Level Domain";
|
||||
|
||||
case EmailStatusCode.rfc5321TopLevelDomainNumeric: return "Address is valid but the Top Level Domain begins"
|
||||
case EmailStatusCode.rfc5321TopLevelDomainNumeric: return "Address is valid but the Top Level Domain begins"~
|
||||
" with a number";
|
||||
|
||||
case EmailStatusCode.rfc5321QuotedString: return "Address is valid but contains a quoted string";
|
||||
case EmailStatusCode.rfc5321AddressLiteral: return "Address is valid but at a literal address not a domain";
|
||||
|
||||
case EmailStatusCode.rfc5321IpV6Deprecated: return "Address is valid but contains a :: that only elides one"
|
||||
case EmailStatusCode.rfc5321IpV6Deprecated: return "Address is valid but contains a :: that only elides one"~
|
||||
" zero group";
|
||||
|
||||
|
||||
|
@ -1359,7 +1359,7 @@ string statusCodeDescription (EmailStatusCode statusCode)
|
|||
// Address contains deprecated elements but may still be valid in restricted contexts
|
||||
case EmailStatusCode.deprecatedLocalPart: return "The local part is in a deprecated form";
|
||||
|
||||
case EmailStatusCode.deprecatedFoldingWhitespace: return "Address contains an obsolete form of"
|
||||
case EmailStatusCode.deprecatedFoldingWhitespace: return "Address contains an obsolete form of"~
|
||||
" Folding White Space";
|
||||
|
||||
case EmailStatusCode.deprecatedQuotedText: return "A quoted string contains a deprecated character";
|
||||
|
@ -1367,11 +1367,11 @@ string statusCodeDescription (EmailStatusCode statusCode)
|
|||
case EmailStatusCode.deprecatedComment: return "Address contains a comment in a position that is deprecated";
|
||||
case EmailStatusCode.deprecatedCommentText: return "A comment contains a deprecated character";
|
||||
|
||||
case EmailStatusCode.deprecatedCommentFoldingWhitespaceNearAt: return "Address contains a comment or"
|
||||
case EmailStatusCode.deprecatedCommentFoldingWhitespaceNearAt: return "Address contains a comment or"~
|
||||
" Folding White Space around the @ sign";
|
||||
|
||||
// The address is only valid according to the broad definition of RFC 5322
|
||||
case EmailStatusCode.rfc5322Domain: return "Address is RFC 5322 compliant but contains domain characters that"
|
||||
case EmailStatusCode.rfc5322Domain: return "Address is RFC 5322 compliant but contains domain characters that"~
|
||||
" are not allowed by DNS";
|
||||
|
||||
case EmailStatusCode.rfc5322TooLong: return "Address is too long";
|
||||
|
@ -1380,7 +1380,7 @@ string statusCodeDescription (EmailStatusCode statusCode)
|
|||
case EmailStatusCode.rfc5322LabelTooLong: return "The domain part contains an element that is too long";
|
||||
case EmailStatusCode.rfc5322DomainLiteral: return "The domain literal is not a valid RFC 5321 address literal";
|
||||
|
||||
case EmailStatusCode.rfc5322DomainLiteralObsoleteText: return "The domain literal is not a valid RFC 5321"
|
||||
case EmailStatusCode.rfc5322DomainLiteralObsoleteText: return "The domain literal is not a valid RFC 5321"~
|
||||
" address literal and it contains obsolete characters";
|
||||
|
||||
case EmailStatusCode.rfc5322IpV6GroupCount:
|
||||
|
@ -1407,7 +1407,7 @@ string statusCodeDescription (EmailStatusCode statusCode)
|
|||
|
||||
case EmailStatusCode.errorTextAfterQuotedString: return "Address contains text after a quoted string";
|
||||
|
||||
case EmailStatusCode.errorTextAfterDomainLiteral: return "Extra characters were found after the end of"
|
||||
case EmailStatusCode.errorTextAfterDomainLiteral: return "Extra characters were found after the end of"~
|
||||
" the domain literal";
|
||||
|
||||
case EmailStatusCode.errorExpectingQuotedPair:
|
||||
|
|
|
@ -1662,7 +1662,7 @@ public:
|
|||
alias args[0..$ - 1] args2;
|
||||
alias Args[0..$ - 1] Args2;
|
||||
enforce(buf.length == len,
|
||||
text("Can't use a user supplied buffer that's the wrong "
|
||||
text("Can't use a user supplied buffer that's the wrong ",
|
||||
"size. (Expected :", len, " Got: ", buf.length));
|
||||
}
|
||||
else static if(randAssignable!(Args[$ - 1]) && Args.length > 1)
|
||||
|
|
|
@ -621,7 +621,7 @@ Parameter for the generator.
|
|||
mti = n;
|
||||
if(range.empty && j < n)
|
||||
{
|
||||
throw new Exception(format("MersenneTwisterEngine.seed: Input range didn't provide enough"
|
||||
throw new Exception(format("MersenneTwisterEngine.seed: Input range didn't provide enough"~
|
||||
" elements: Need %s elemnets.", n));
|
||||
}
|
||||
|
||||
|
|
|
@ -2941,15 +2941,15 @@ if (Rs.length > 1 && allSatisfy!(isInputRange, staticMap!(Unqual, Rs)))
|
|||
static string makeSwitchIncrementCounter()
|
||||
{
|
||||
string result =
|
||||
"auto next = _current == Rs.length - 1 ? 0 : _current + 1;\n"
|
||||
"auto next = _current == Rs.length - 1 ? 0 : _current + 1;\n"~
|
||||
"switch (next) {\n";
|
||||
foreach (i, R; Rs)
|
||||
{
|
||||
auto si = to!string(i);
|
||||
auto si_1 = to!string(i ? i - 1 : Rs.length - 1);
|
||||
result ~= "case "~si~": "
|
||||
"if (!source["~si~"].empty) { _current = "~si~"; return; }\n"
|
||||
"if ("~si~" == _current) { _current = _current.max; return; }\n"
|
||||
result ~= "case "~si~": "~
|
||||
"if (!source["~si~"].empty) { _current = "~si~"; return; }\n"~
|
||||
"if ("~si~" == _current) { _current = _current.max; return; }\n"~
|
||||
"goto case "~to!string((i + 1) % Rs.length)~";\n";
|
||||
}
|
||||
return result ~ "default: assert(0); }";
|
||||
|
|
|
@ -6845,16 +6845,16 @@ unittest
|
|||
TestVectors( `[-+*/\p{in-mathematical-operators}]{2}`, "a+\u2212", "y", "$&", "+\u2212"),
|
||||
TestVectors( `\p{Ll}+`, "XabcD", "y", "$&", "abc"),
|
||||
TestVectors( `\p{Lu}+`, "абвГДЕ", "y", "$&", "ГДЕ"),
|
||||
TestVectors( `^\p{Currency Symbol}\p{Sc}` "$₤", "y", "$&", "$₤"),
|
||||
TestVectors( `\p{Common}\p{Thai}` "!ฆ", "y", "$&", "!ฆ"),
|
||||
TestVectors( `^\p{Currency Symbol}\p{Sc}`, "$₤", "y", "$&", "$₤"),
|
||||
TestVectors( `\p{Common}\p{Thai}`, "!ฆ", "y", "$&", "!ฆ"),
|
||||
TestVectors( `[\d\s]*\D`, "12 \t3\U00001680\u0F20_2", "y", "$&", "12 \t3\U00001680\u0F20_"),
|
||||
TestVectors( `[c-wф]фф`, "ффф", "y", "$&", "ффф"),
|
||||
//case insensitive:
|
||||
TestVectors( `^abcdEf$`, "AbCdEF" "y", "$&", "AbCdEF", "i"),
|
||||
TestVectors( `^abcdEf$`, "AbCdEF", "y", "$&", "AbCdEF", "i"),
|
||||
TestVectors( `Русский язык`, "рУсскИй ЯзЫк", "y", "$&", "рУсскИй ЯзЫк", "i"),
|
||||
TestVectors( `ⒶⒷⓒ` , "ⓐⓑⒸ", "y", "$&", "ⓐⓑⒸ", "i"),
|
||||
TestVectors( "\U00010400{2}", "\U00010428\U00010400 ", "y", "$&", "\U00010428\U00010400", "i"),
|
||||
TestVectors( `[adzУ-Я]{4}`, "DzюА" "y", "$&", "DzЮа", "i"),
|
||||
TestVectors( `[adzУ-Я]{4}`, "DzюА", "y", "$&", "DzЮа", "i"),
|
||||
TestVectors( `\p{L}\p{Lu}{10}`, "абвгдеЖЗИКЛ", "y", "$&", "абвгдеЖЗИКЛ", "i"),
|
||||
TestVectors( `(?:Dåb){3}`, "DåbDÅBdÅb", "y", "$&", "DåbDÅBdÅb", "i"),
|
||||
//escapes:
|
||||
|
|
|
@ -732,7 +732,7 @@ unittest
|
|||
static assert(fqn!(typeof(cFuncPtr)) == format("extern(C) %s function(double, string)", inner_name));
|
||||
|
||||
// Delegate type with qualified function type
|
||||
static assert(fqn!(typeof(attrDeleg)) == format("shared(immutable(%s) "
|
||||
static assert(fqn!(typeof(attrDeleg)) == format("shared(immutable(%s) "~
|
||||
"delegate(ref double, scope string) nothrow @trusted shared const)", inner_name));
|
||||
|
||||
// Variable argument function types
|
||||
|
|
|
@ -2730,7 +2730,7 @@ template generateAssertTrap(C, func.../+[BUG 4217]+/)
|
|||
{
|
||||
static if (functionAttributes!(func) & FunctionAttribute.nothrow_) //XXX
|
||||
{
|
||||
pragma(msg, "Warning: WhiteHole!(", C, ") used assert(0) instead "
|
||||
pragma(msg, "Warning: WhiteHole!(", C, ") used assert(0) instead ",
|
||||
"of Error for the auto-implemented nothrow function ",
|
||||
C, ".", __traits(identifier, func));
|
||||
enum string generateAssertTrap =
|
||||
|
|
|
@ -3767,7 +3767,7 @@ private:
|
|||
curIndex = idxB; // open-right
|
||||
}
|
||||
|
||||
enum errMsg = "non-monotonic prefix function(s), an unsorted range or "
|
||||
enum errMsg = "non-monotonic prefix function(s), an unsorted range or "~
|
||||
"duplicate key->value mapping";
|
||||
|
||||
public:
|
||||
|
@ -4919,7 +4919,7 @@ else
|
|||
"N", "Number",
|
||||
"P", "Punctuation",
|
||||
"S", "Symbol",
|
||||
"Z", "Separator"
|
||||
"Z", "Separator",
|
||||
"Graphical",
|
||||
"any",
|
||||
"ascii"
|
||||
|
|
12
std/uuid.d
12
std/uuid.d
|
@ -1475,7 +1475,7 @@ enum x500Namespace = UUID("6ba7b814-9dad-11d1-80b4-00c04fd430c8");
|
|||
* writeln(found);
|
||||
* -------------------
|
||||
*/
|
||||
enum uuidRegex = r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}"
|
||||
enum uuidRegex = "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}"~
|
||||
"-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}";
|
||||
|
||||
///
|
||||
|
@ -1484,11 +1484,11 @@ unittest
|
|||
import std.algorithm;
|
||||
import std.regex;
|
||||
|
||||
string test = "Lorem ipsum dolor sit amet, consetetur "
|
||||
"6ba7b814-9dad-11d1-80b4-00c04fd430c8 sadipscing \n"
|
||||
"elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore \r\n"
|
||||
"magna aliquyam erat, sed diam voluptua. "
|
||||
"8ab3060e-2cba-4f23-b74c-b52db3bdfb46 At vero eos et accusam et "
|
||||
string test = "Lorem ipsum dolor sit amet, consetetur "~
|
||||
"6ba7b814-9dad-11d1-80b4-00c04fd430c8 sadipscing \n"~
|
||||
"elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore \r\n"~
|
||||
"magna aliquyam erat, sed diam voluptua. "~
|
||||
"8ab3060e-2cba-4f23-b74c-b52db3bdfb46 At vero eos et accusam et "~
|
||||
"justo duo dolores et ea rebum.";
|
||||
|
||||
auto r = regex(uuidRegex, "g");
|
||||
|
|
|
@ -566,7 +566,7 @@ public:
|
|||
else static if (is(T : const(VariantN)))
|
||||
{
|
||||
static assert(false,
|
||||
"Assigning Variant objects from const Variant"
|
||||
"Assigning Variant objects from const Variant"~
|
||||
" objects is currently not supported.");
|
||||
}
|
||||
else
|
||||
|
|
|
@ -2350,7 +2350,7 @@ private
|
|||
int n = 0;
|
||||
if (s.startsWith("'yes'") || s.startsWith("\"yes\"")) n = 5;
|
||||
else if (s.startsWith("'no'" ) || s.startsWith("\"no\"" )) n = 4;
|
||||
else fail("standalone attribute value must be 'yes', \"yes\","
|
||||
else fail("standalone attribute value must be 'yes', \"yes\","~
|
||||
" 'no' or \"no\"");
|
||||
s = s[n..$];
|
||||
}
|
||||
|
@ -2686,7 +2686,7 @@ unittest
|
|||
}
|
||||
catch(CheckException e)
|
||||
{
|
||||
int n = e.toString().indexOf("end tag name \"genres\" differs"
|
||||
int n = e.toString().indexOf("end tag name \"genres\" differs"~
|
||||
" from start tag name \"genre\"");
|
||||
assert(n != -1);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue