Remove use of automatic adjacent string literal concatenation from phobos

This commit is contained in:
Daniel Murphy 2014-01-20 03:42:21 +11:00
parent cf5a46d716
commit a656f26e9e
26 changed files with 94 additions and 94 deletions

View file

@ -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));

View file

@ -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)~"; "

View file

@ -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

View file

@ -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)

View file

@ -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));
}

View file

@ -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");

View file

@ -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];

View file

@ -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");

View file

@ -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");

View file

@ -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");

View file

@ -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"
];

View file

@ -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);

View file

@ -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;

View file

@ -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");
}

View file

@ -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;

View file

@ -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:

View file

@ -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)

View file

@ -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));
}

View file

@ -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); }";

View file

@ -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:

View file

@ -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

View file

@ -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 =

View file

@ -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"

View file

@ -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");

View file

@ -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

View file

@ -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);
}