www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 13719] New: std.datetime no longer compiles when trivial

https://issues.dlang.org/show_bug.cgi?id=13719

          Issue ID: 13719
           Summary: std.datetime no longer compiles when trivial
                    destructor is added
           Product: D
           Version: D2
          Hardware: All
                OS: Windows
            Status: NEW
          Severity: blocker
          Priority: P1
         Component: Phobos
          Assignee: nobody puremagic.com
          Reporter: bugzilla digitalmars.com

Adding the line:

  public pure nothrow  safe  nogc ~this() { }

as a member to struct Date, and compiling with -unittest produces the errors:


std\datetime.d(19806): Error: template
std.datetime.Interval!(Date).Interval.shift cannot deduce function from
argument types !()(int, int), candidates are:
std\datetime.d(18203):        std.datetime.Interval!(Date).Interval.shift(D)(D
duration) if (__traits(compiles, begin + duration))
std\datetime.d(19813): Error: template
std.datetime.Interval!(Date).Interval.shift cannot deduce function from
argument types !()(int, int, AllowDayOverflow), candidates are:
std\datetime.d(18203):        std.datetime.Interval!(Date).Interval.shift(D)(D
duration) if (__traits(compiles, begin + duration))
std\datetime.d(19817): Error: template instance
std.datetime.__unittestL19799_294.testInterval!(Interval!(Date)) error
instantiating
std\datetime.d(19842): Error: template
std.datetime.Interval!(Date).Interval.shift cannot deduce function from
argument types !()(int), candidates are:
std\datetime.d(18203):        std.datetime.Interval!(Date).Interval.shift(D)(D
duration) if (__traits(compiles, begin + duration))
std\datetime.d(19845): Error: template
std.datetime.Interval!(Date).Interval.shift cannot deduce function from
argument types !()(int), candidates are:
std\datetime.d(18203):        std.datetime.Interval!(Date).Interval.shift(D)(D
duration) if (__traits(compiles, begin + duration))
std\datetime.d(19895): Error: template
std.datetime.Interval!(Date).Interval.expand cannot deduce function from
argument types !()(int, int), candidates are:
std\datetime.d(18300):        std.datetime.Interval!(Date).Interval.expand(D)(D
duration, Direction dir = Direction.both) if (__traits(compiles, begin +
duration))
std\datetime.d(19903): Error: template
std.datetime.Interval!(Date).Interval.expand cannot deduce function from
argument types !()(int, int, AllowDayOverflow, Direction), candidates are:
std\datetime.d(18300):        std.datetime.Interval!(Date).Interval.expand(D)(D
duration, Direction dir = Direction.both) if (__traits(compiles, begin +
duration))
std\datetime.d(19907): Error: template instance
std.datetime.__unittestL19888_296.testInterval!(Interval!(Date)) error
instantiating
std\datetime.d(19958): Error: template
std.datetime.Interval!(Date).Interval.expand cannot deduce function from
argument types !()(int), candidates are:

This is a blocker for https://github.com/D-Programming-Language/dmd/pull/4136

--
Nov 12 2014