On Thursday, 6 August 2015 at 21:16:20 UTC, Steven Schveighoffer
wrote:
On 8/6/15 4:24 PM, "Per =?UTF-8?B?Tm9yZGzDtnci?=
<[email protected]>" wrote:
On Tuesday, 4 August 2015 at 20:54:43 UTC, Steven
Schveighoffer wrote:
How complete is the dip25 implementation?
For example, should this be expected to be an error?
struct S
{
int[5] x;
auto foo() { return x[];}
}
You need to (at least) qualify `foo` as @safe.
According to 2.067.0 it was an error without annotating as
@safe if you use -dip25. I don't understand the "relaxing" of
it in the latest version, but maybe I'm missing something.
If x was a function local, you don't need to mark foo @safe to
get an error. I thought dip25 was supposed to make that the
norm for all data that it could prove was being improperly
escaped.
Per DIP 25, it's only supposed to apply to @safe code initially:
"For the initial release, the requirement of returns for ref
parameter data to be marked with return will only apply to @safe
functions. The reasons for this are to avoid breaking existing
code, and because it's not yet clear whether this feature will
interfere with valid constructs in a system language."
So, it was a bug in 2.067 if it required anything with -dip25 for
@system or @trusted code.
- Jonathan M Davis