Skip to content

Commit f235d21

Browse files
committed
std.datetime: Construct struct timespec using named arguments
It is not guaranteed that the fields of the struct are in the assumed order, for example, Musl. See dlang/dmd#21249.
1 parent 24711b9 commit f235d21

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

std/datetime/systime.d

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2614,37 +2614,37 @@ public:
26142614
immutable tv_sec = toUnixTime!(typeof(timespec.tv_sec))();
26152615
immutable fracHNSecs = removeUnitsFromHNSecs!"seconds"(_stdTime - 621_355_968_000_000_000L);
26162616
immutable tv_nsec = cast(typeof(timespec.tv_nsec))convert!("hnsecs", "nsecs")(fracHNSecs);
2617-
return timespec(tv_sec, tv_nsec);
2617+
return timespec(tv_sec: tv_sec, tv_nsec: tv_nsec);
26182618
}
26192619

26202620
@safe unittest
26212621
{
26222622
import core.time;
2623-
assert(SysTime(DateTime(1970, 1, 1), UTC()).toTimeSpec() == timespec(0, 0));
2624-
assert(SysTime(DateTime(1970, 1, 1), hnsecs(9), UTC()).toTimeSpec() == timespec(0, 900));
2625-
assert(SysTime(DateTime(1970, 1, 1), hnsecs(10), UTC()).toTimeSpec() == timespec(0, 1000));
2626-
assert(SysTime(DateTime(1970, 1, 1), usecs(7), UTC()).toTimeSpec() == timespec(0, 7000));
2623+
assert(SysTime(DateTime(1970, 1, 1), UTC()).toTimeSpec() == timespec(tv_sec: 0, tv_nsec: 0));
2624+
assert(SysTime(DateTime(1970, 1, 1), hnsecs(9), UTC()).toTimeSpec() == timespec(tv_sec: 0, tv_nsec: 900));
2625+
assert(SysTime(DateTime(1970, 1, 1), hnsecs(10), UTC()).toTimeSpec() == timespec(tv_sec: 0, tv_nsec: 1000));
2626+
assert(SysTime(DateTime(1970, 1, 1), usecs(7), UTC()).toTimeSpec() == timespec(tv_sec: 0, tv_nsec: 7000));
26272627

2628-
assert(SysTime(DateTime(1970, 1, 1, 0, 0, 1), UTC()).toTimeSpec() == timespec(1, 0));
2629-
assert(SysTime(DateTime(1970, 1, 1, 0, 0, 1), hnsecs(9), UTC()).toTimeSpec() == timespec(1, 900));
2630-
assert(SysTime(DateTime(1970, 1, 1, 0, 0, 1), hnsecs(10), UTC()).toTimeSpec() == timespec(1, 1000));
2631-
assert(SysTime(DateTime(1970, 1, 1, 0, 0, 1), usecs(7), UTC()).toTimeSpec() == timespec(1, 7000));
2628+
assert(SysTime(DateTime(1970, 1, 1, 0, 0, 1), UTC()).toTimeSpec() == timespec(tv_sec: 1, tv_nsec: 0));
2629+
assert(SysTime(DateTime(1970, 1, 1, 0, 0, 1), hnsecs(9), UTC()).toTimeSpec() == timespec(tv_sec: 1, tv_nsec: 900));
2630+
assert(SysTime(DateTime(1970, 1, 1, 0, 0, 1), hnsecs(10), UTC()).toTimeSpec() == timespec(tv_sec: 1, tv_nsec: 1000));
2631+
assert(SysTime(DateTime(1970, 1, 1, 0, 0, 1), usecs(7), UTC()).toTimeSpec() == timespec(tv_sec: 1, tv_nsec: 7000));
26322632

26332633
assert(SysTime(DateTime(1969, 12, 31, 23, 59, 59), hnsecs(9_999_999), UTC()).toTimeSpec() ==
2634-
timespec(0, -100));
2634+
timespec(tv_sec: 0, tv_nsec: -100));
26352635
assert(SysTime(DateTime(1969, 12, 31, 23, 59, 59), hnsecs(9_999_990), UTC()).toTimeSpec() ==
2636-
timespec(0, -1000));
2636+
timespec(tv_sec: 0, tv_nsec: -1000));
26372637

26382638
assert(SysTime(DateTime(1969, 12, 31, 23, 59, 59), usecs(999_999), UTC()).toTimeSpec() ==
2639-
timespec(0, -1_000));
2639+
timespec(tv_sec: 0, tv_nsec: -1_000));
26402640
assert(SysTime(DateTime(1969, 12, 31, 23, 59, 59), usecs(999), UTC()).toTimeSpec() ==
2641-
timespec(0, -999_001_000));
2641+
timespec(tv_sec: 0, tv_nsec: -999_001_000));
26422642
assert(SysTime(DateTime(1969, 12, 31, 23, 59, 59), msecs(999), UTC()).toTimeSpec() ==
2643-
timespec(0, -1_000_000));
2643+
timespec(tv_sec: 0, tv_nsec: -1_000_000));
26442644
assert(SysTime(DateTime(1969, 12, 31, 23, 59, 59), UTC()).toTimeSpec() ==
2645-
timespec(-1, 0));
2645+
timespec(tv_sec: -1, tv_nsec: 0));
26462646
assert(SysTime(DateTime(1969, 12, 31, 23, 59, 58), usecs(17), UTC()).toTimeSpec() ==
2647-
timespec(-1, -999_983_000));
2647+
timespec(tv_sec: -1, tv_nsec: -999_983_000));
26482648

26492649
static void testScope(scope ref SysTime st) @safe
26502650
{

0 commit comments

Comments
 (0)