DIP 1029---Add throw as Function Attribute---Community Review Round 1

Arine arine123445128843 at gmail.com
Thu Jan 16 20:19:24 UTC 2020


On Thursday, 16 January 2020 at 08:04:35 UTC, Walter Bright wrote:
> On 1/15/2020 7:26 AM, Arine wrote:
>> I'm completely blown away, you don't even know that @safe 
>> passes through to the next scope?
>
> My mistake. What actually happens is here:
>
>     sc2.stc &= STC.safeGroup;
>
>     
> https://github.com/dlang/dmd/blob/master/src/dmd/aggregate.d#L136
>
> where the storage class passed from the outer scope to the 
> struct/class scope is zeroed out except for 
> @safe/@trusted/@system.
>
> So @safe "flows through" to the struct scope, while nothrow, 
> pure, @nogc, etc., do not.

So when you were proposing @system: as a solution to the change 
to default of @safe, you thought you had to add @system to the 
top of every struct, and that's the solution you promoting as a 
best practice?

Honestly I'd prefer rebuttal about my point regarding defaults. 
If the defaults aren't what you want them to be, the language 
forces you to pollute your code with `attributes:` because they 
don't flow into the next scope. If that's the only reason, and 
there's no other reason why it behaves this way. It'd be best to 
change it so that the user the option to choose what is best for 
them. If they feel it is best add it to every scope, that's their 
option to. But right now it's forced onto us.




More information about the Digitalmars-d mailing list