http://bugzilla.gdcproject.org/show_bug.cgi?id=224
--- Comment #3 from Iain Buclaw <ibuc...@gdcproject.org> --- This is the "reduced" test. --- import core.time; import core.sys.posix.sys.time; struct Clock { static currTime(immutable TimeZone = LocalTime()) { return SysTime(currStdTime); } static currStdTime() { return convert!("seconds", "hnsecs")(0); } } struct SysTime { import std.typecons; this(TimeZone) { } this(DateTime) { } this(Date date, immutable TimeZone tz = null) { _timezone = tz is null ? LocalTime() : tz; try { immutable adjustedTime = (date - Date()).total!"hnsecs"; immutable standardTime = _timezone.tzToUTC(adjustedTime); this(standardTime); } catch assert(0); } this(long stdTime, immutable TimeZone tz = null) { _stdTime = stdTime; _timezone = tz is null ? LocalTime() : tz; } @property stdTime() { return _stdTime; } @property dayOfGregorianCal() { adjTime; long hnsecs; days = hnsecs; return 0; } Date opCast() { return Date(dayOfGregorianCal); } DateTime opCast()() if(is(Unqual)) { } string toISOString() { import std.format; try { auto dateTime = DateTime(); return format("%s", dateTime.toISOString); } catch assert(0); } @property adjTime() { _timezone.utcToTZ(_stdTime); } long _stdTime; Rebindable!(immutable TimeZone) _timezone; } struct Date { short _year; ubyte _day; this(int, int) { } this(int) { } @property year() { } @property month() { } @property day() { } @property day() { return _day; } Duration opBinary(string op)(Date) { return dur!"days"(dayOfGregorianCal); } @property dayOfGregorianCal() { return 0; } } struct TimeOfDay { @property second() { } } struct DateTime { this(Date) { } this(int) { } @property date() { } @property timeOfDay() { } string toISOString() { return ""; } } class TimeZone { long utcToTZ(long) const; long tzToUTC(long) const; this() immutable { } Duration utcOffsetAt(long stdTime) { return dur!"hnsecs"(stdTime); } } class LocalTime : TimeZone { static immutable(LocalTime) opCall() { return (cast()&singleton)(); } bool hasDST() { try { cast(Date)Clock.currTime; auto janOffset = SysTime(Date()).stdTime - SysTime(Date()).stdTime; auto julyOffset = SysTime(Date()).stdTime - SysTime(Date()).stdTime; return janOffset != julyOffset; } catch assert(0); } this() immutable { } static localTime = new immutable(LocalTime); immutable(LocalTime) singleton() { synchronized return localTime; } } time_t stdTimeToUnixTime() { return cast(time_t)convert!("hnsecs", "seconds")(0); } SysTime DosFileTimeToSysTime() { try return SysTime(DateTime()); catch assert(0); } -- You are receiving this mail because: You are watching all bug changes.