Skip to content

Commit be49754

Browse files
authored
Merge pull request #5748 from MartinNowak/merge_stable
Merge remote-tracking branch 'upstream/stable' into merge_stable merged-on-behalf-of: Sebastian Wilzbach <sebi.wilzbach@gmail.com>
2 parents 4cc1737 + 32d76b9 commit be49754

5 files changed

Lines changed: 173 additions & 25 deletions

File tree

std/conv.d

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3154,9 +3154,10 @@ if (isInputRange!Source && isSomeChar!(ElementType!Source) && !is(Source == enum
31543154
assert(to!string(r) == to!string(real.max));
31553155
}
31563156

3157-
//Tests for the double implementation
3158-
@safe unittest
3157+
// Tests for the double implementation
3158+
@system unittest
31593159
{
3160+
// @system because strtod is not @safe.
31603161
static if (real.mant_dig == 53)
31613162
{
31623163
import core.stdc.stdlib, std.exception, std.math;

std/datetime/date.d

Lines changed: 99 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3106,7 +3106,7 @@ public:
31063106
import std.format : format;
31073107
import std.string : strip;
31083108

3109-
immutable str = strip(isoString);
3109+
auto str = strip(isoString);
31103110

31113111
enforce(str.length >= 15, new DateTimeException(format("Invalid ISO String: %s", isoString)));
31123112
auto t = str.countUntil('T');
@@ -3172,6 +3172,18 @@ public:
31723172
assert(DateTime.fromISOString(" 19990706T123033 ") == DateTime(Date(1999, 7, 6), TimeOfDay(12, 30, 33)));
31733173
}
31743174

3175+
// bug# 17801
3176+
@safe unittest
3177+
{
3178+
import std.conv : to;
3179+
import std.meta : AliasSeq;
3180+
foreach (C; AliasSeq!(char, wchar, dchar))
3181+
{
3182+
foreach (S; AliasSeq!(C[], const(C)[], immutable(C)[]))
3183+
assert(DateTime.fromISOString(to!S("20121221T141516")) == DateTime(2012, 12, 21, 14, 15, 16));
3184+
}
3185+
}
3186+
31753187

31763188
/++
31773189
Creates a $(LREF DateTime) from a string with the format
@@ -3194,7 +3206,7 @@ public:
31943206
import std.format : format;
31953207
import std.string : strip;
31963208

3197-
immutable str = strip(isoExtString);
3209+
auto str = strip(isoExtString);
31983210

31993211
enforce(str.length >= 15, new DateTimeException(format("Invalid ISO Extended String: %s", isoExtString)));
32003212
auto t = str.countUntil('T');
@@ -3259,6 +3271,18 @@ public:
32593271
assert(DateTime.fromISOExtString(" 1999-07-06T12:30:33 ") == DateTime(Date(1999, 7, 6), TimeOfDay(12, 30, 33)));
32603272
}
32613273

3274+
// bug# 17801
3275+
@safe unittest
3276+
{
3277+
import std.conv : to;
3278+
import std.meta : AliasSeq;
3279+
foreach (C; AliasSeq!(char, wchar, dchar))
3280+
{
3281+
foreach (S; AliasSeq!(C[], const(C)[], immutable(C)[]))
3282+
assert(DateTime.fromISOExtString(to!S("2012-12-21T14:15:16")) == DateTime(2012, 12, 21, 14, 15, 16));
3283+
}
3284+
}
3285+
32623286

32633287
/++
32643288
Creates a $(LREF DateTime) from a string with the format
@@ -3281,7 +3305,7 @@ public:
32813305
import std.format : format;
32823306
import std.string : strip;
32833307

3284-
immutable str = strip(simpleString);
3308+
auto str = strip(simpleString);
32853309

32863310
enforce(str.length >= 15, new DateTimeException(format("Invalid string format: %s", simpleString)));
32873311
auto t = str.countUntil(' ');
@@ -3350,6 +3374,18 @@ public:
33503374
DateTime(Date(1999, 7, 6), TimeOfDay(12, 30, 33)));
33513375
}
33523376

3377+
// bug# 17801
3378+
@safe unittest
3379+
{
3380+
import std.conv : to;
3381+
import std.meta : AliasSeq;
3382+
foreach (C; AliasSeq!(char, wchar, dchar))
3383+
{
3384+
foreach (S; AliasSeq!(C[], const(C)[], immutable(C)[]))
3385+
assert(DateTime.fromSimpleString(to!S("2012-Dec-21 14:15:16")) == DateTime(2012, 12, 21, 14, 15, 16));
3386+
}
3387+
}
3388+
33533389

33543390
/++
33553391
Returns the $(LREF DateTime) farthest in the past which is representable
@@ -7467,6 +7503,18 @@ public:
74677503
assert(Date.fromISOString(" 19990706 ") == Date(1999, 7, 6));
74687504
}
74697505

7506+
// bug# 17801
7507+
@safe unittest
7508+
{
7509+
import std.conv : to;
7510+
import std.meta : AliasSeq;
7511+
foreach (C; AliasSeq!(char, wchar, dchar))
7512+
{
7513+
foreach (S; AliasSeq!(C[], const(C)[], immutable(C)[]))
7514+
assert(Date.fromISOString(to!S("20121221")) == Date(2012, 12, 21));
7515+
}
7516+
}
7517+
74707518

74717519
/++
74727520
Creates a $(LREF Date) from a string with the format YYYY-MM-DD.
@@ -7596,6 +7644,18 @@ public:
75967644
assert(Date.fromISOExtString(" 1999-07-06 ") == Date(1999, 7, 6));
75977645
}
75987646

7647+
// bug# 17801
7648+
@safe unittest
7649+
{
7650+
import std.conv : to;
7651+
import std.meta : AliasSeq;
7652+
foreach (C; AliasSeq!(char, wchar, dchar))
7653+
{
7654+
foreach (S; AliasSeq!(C[], const(C)[], immutable(C)[]))
7655+
assert(Date.fromISOExtString(to!S("2012-12-21")) == Date(2012, 12, 21));
7656+
}
7657+
}
7658+
75997659

76007660
/++
76017661
Creates a $(LREF Date) from a string with the format YYYY-Mon-DD.
@@ -7722,6 +7782,18 @@ public:
77227782
assert(Date.fromSimpleString(" 1999-Jul-06 ") == Date(1999, 7, 6));
77237783
}
77247784

7785+
// bug# 17801
7786+
@safe unittest
7787+
{
7788+
import std.conv : to;
7789+
import std.meta : AliasSeq;
7790+
foreach (C; AliasSeq!(char, wchar, dchar))
7791+
{
7792+
foreach (S; AliasSeq!(C[], const(C)[], immutable(C)[]))
7793+
assert(Date.fromSimpleString(to!S("2012-Dec-21")) == Date(2012, 12, 21));
7794+
}
7795+
}
7796+
77257797

77267798
/++
77277799
Returns the $(LREF Date) farthest in the past which is representable by
@@ -8986,6 +9058,18 @@ public:
89869058
assert(TimeOfDay.fromISOString(" 011217 ") == TimeOfDay(1, 12, 17));
89879059
}
89889060

9061+
// bug# 17801
9062+
@safe unittest
9063+
{
9064+
import std.conv : to;
9065+
import std.meta : AliasSeq;
9066+
foreach (C; AliasSeq!(char, wchar, dchar))
9067+
{
9068+
foreach (S; AliasSeq!(C[], const(C)[], immutable(C)[]))
9069+
assert(TimeOfDay.fromISOString(to!S("141516")) == TimeOfDay(14, 15, 16));
9070+
}
9071+
}
9072+
89899073

89909074
/++
89919075
Creates a $(LREF TimeOfDay) from a string with the format HH:MM:SS.
@@ -9101,6 +9185,18 @@ public:
91019185
assert(TimeOfDay.fromISOExtString(" 01:12:17 ") == TimeOfDay(1, 12, 17));
91029186
}
91039187

9188+
// bug# 17801
9189+
@safe unittest
9190+
{
9191+
import std.conv : to;
9192+
import std.meta : AliasSeq;
9193+
foreach (C; AliasSeq!(char, wchar, dchar))
9194+
{
9195+
foreach (S; AliasSeq!(C[], const(C)[], immutable(C)[]))
9196+
assert(TimeOfDay.fromISOExtString(to!S("14:15:16")) == TimeOfDay(14, 15, 16));
9197+
}
9198+
}
9199+
91049200

91059201
/++
91069202
Returns midnight.

std/datetime/systime.d

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8480,6 +8480,21 @@ public:
84808480
test("20101222T172201.45+08:00", SysTime(DateTime(2010, 12, 22, 17, 22, 01), hnsecs(4_500_000), east480));
84818481
}
84828482

8483+
// bug# 17801
8484+
@safe unittest
8485+
{
8486+
import std.conv : to;
8487+
import std.meta : AliasSeq;
8488+
foreach (C; AliasSeq!(char, wchar, dchar))
8489+
{
8490+
foreach (S; AliasSeq!(C[], const(C)[], immutable(C)[]))
8491+
{
8492+
assert(SysTime.fromISOString(to!S("20121221T141516Z")) ==
8493+
SysTime(DateTime(2012, 12, 21, 14, 15, 16), UTC()));
8494+
}
8495+
}
8496+
}
8497+
84838498

84848499
/++
84858500
Creates a $(LREF SysTime) from a string with the format
@@ -8706,6 +8721,21 @@ public:
87068721
test("2010-12-22T17:22:01.45+08:00", SysTime(DateTime(2010, 12, 22, 17, 22, 01), hnsecs(4_500_000), east480));
87078722
}
87088723

8724+
// bug# 17801
8725+
@safe unittest
8726+
{
8727+
import std.conv : to;
8728+
import std.meta : AliasSeq;
8729+
foreach (C; AliasSeq!(char, wchar, dchar))
8730+
{
8731+
foreach (S; AliasSeq!(C[], const(C)[], immutable(C)[]))
8732+
{
8733+
assert(SysTime.fromISOExtString(to!S("2012-12-21T14:15:16Z")) ==
8734+
SysTime(DateTime(2012, 12, 21, 14, 15, 16), UTC()));
8735+
}
8736+
}
8737+
}
8738+
87098739

87108740
/++
87118741
Creates a $(LREF SysTime) from a string with the format
@@ -8935,6 +8965,21 @@ public:
89358965
test("2010-Dec-22 17:22:01.45+08:00", SysTime(DateTime(2010, 12, 22, 17, 22, 01), hnsecs(4_500_000), east480));
89368966
}
89378967

8968+
// bug# 17801
8969+
@safe unittest
8970+
{
8971+
import std.conv : to;
8972+
import std.meta : AliasSeq;
8973+
foreach (C; AliasSeq!(char, wchar, dchar))
8974+
{
8975+
foreach (S; AliasSeq!(C[], const(C)[], immutable(C)[]))
8976+
{
8977+
assert(SysTime.fromSimpleString(to!S("2012-Dec-21 14:15:16Z")) ==
8978+
SysTime(DateTime(2012, 12, 21, 14, 15, 16), UTC()));
8979+
}
8980+
}
8981+
}
8982+
89388983

89398984
/++
89408985
Returns the $(LREF SysTime) farthest in the past which is representable

std/traits.d

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@
9999
* $(LREF isPointer)
100100
* $(LREF isScalarType)
101101
* $(LREF isSigned)
102+
* $(LREF isSIMDVector)
102103
* $(LREF isSomeChar)
103104
* $(LREF isSomeString)
104105
* $(LREF isStaticArray)

0 commit comments

Comments
 (0)