Re: Beta 2.089.0

2019-10-29 Thread FeepingCreature via Digitalmars-d-announce
On Tuesday, 29 October 2019 at 06:06:56 UTC, FeepingCreature 
wrote:

On Sunday, 27 October 2019 at 16:50:00 UTC, baz wrote:
What does the author of the deprecation think about this case 
("feep" IIRC ) ?


Yeah that's a non-fix. It's a blind replacement of "a" with 
"a.get" that ignores the fact that Nullable!string has its own 
toString, ie. this is one of the cases where the `a.get` is 
actually not triggered at runtime. The fact that the 
deprecation still triggers is an issue with traits that has no 
clear and obvious solution. (I advocate Adam's approach of just 
disabling deprecations in traits outright.)


I take it back. Actually on looking into it deeper, while the 
general issue is gnarly, the solution to the *specific issue* in 
the bug report is very simple, lol.


PR up: https://github.com/dlang/phobos/pull/7257


Re: Beta 2.089.0

2019-10-29 Thread FeepingCreature via Digitalmars-d-announce

On Sunday, 27 October 2019 at 16:50:00 UTC, baz wrote:

On Sunday, 27 October 2019 at 16:38:30 UTC, baz wrote:

On Sunday, 27 October 2019 at 15:04:34 UTC, drug wrote:

27.10.2019 17:20, baz пишет:

On Sunday, 27 October 2019 at 12:59:52 UTC, baz wrote:
On Thursday, 17 October 2019 at 06:02:33 UTC, Martin Nowak 
wrote:

As usual please report any bugs at
https://issues.dlang.org

-Martin


Hi, I've tested my old stuff and found 2 regs.

One deprecation in phobos due to Nullable.get and that was 
not detected and some weird linking errors, maybe due to 
typeinfo.


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


Only 20328 is valid actually.
I confirm the bugs related to Nullable.get (I have another 
one). I have no the reduced case but there are definitly 
issues with deprecated Nullable.get


According to a little investigation the message would be 
caused by this unittest [1].


I would suggest to disable it (using version(none)) or to 
extract it from the struct to the global scope. It's not 
recommended to add unittest blocks in templatized types 
anyway, because when the test is not dependent on the template 
params, like here, it's always the same that gets executed for 
each instance.


[1]: 
https://github.com/dlang/phobos/blob/master/std/typecons.d#L2889-L2897


BTW you're not allowed to do that

// Issue 19799
@safe unittest
{
import std.format : format;

const Nullable!string a = const(Nullable!string)();

format!"%s"(a.get); // added .get here
}

because the Nullable is in a null state, .get call crash the 
program in assert mode.
Maybe you should revert the whole stuff ? What does the author 
of the deprecation think about this case ("feep" IIRC ) ?


Yeah that's a non-fix. It's a blind replacement of "a" with 
"a.get" that ignores the fact that Nullable!string has its own 
toString, ie. this is one of the cases where the `a.get` is 
actually not triggered at runtime. The fact that the deprecation 
still triggers is an issue with traits that has no clear and 
obvious solution. (I advocate Adam's approach of just disabling 
deprecations in traits outright.)