@safe, pure and nothrow at the beginning of a module
monarch_dodra via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Aug 16 13:48:23 PDT 2014
On Saturday, 16 August 2014 at 19:30:16 UTC, Jonathan M Davis via
Digitalmars-d-learn wrote:
> On Sat, 16 Aug 2014 14:39:00 +0200
> Artur Skawina via Digitalmars-d-learn
> <digitalmars-d-learn at puremagic.com> wrote:
>
>> On 08/16/14 13:58, Philippe Sigaud via Digitalmars-d-learn
>> wrote:
>> > On Sat, Aug 16, 2014 at 1:30 PM, Artur Skawina via
>> > Digitalmars-d-learn
>>
>> >> http://forum.dlang.org/post/mailman.125.1397731134.2763.digitalmars-d@puremagic.com
>> >
>> > Okay...
>> >
>> > So @safe includes child scopes. I suppose @trusted and
>> > @system work
>> > in the same way.
>> >
>> > *but*
>> >
>> > nothrow, @nogc and UDA's do not include child scopes.
>> > Putting them
>> > at the beginning of a module will not affect methods in
>> > aggregates...
>> >
>> > What's the situation for pure? (I don't have a D compiler
>> > handy
>> > right now, or I would test it myself).
>>
>> @safe, @trusted, @system, shared, immutable, const, inout and
>> `extern
>> (...)` affect child scopes. `synchronized` does too, but in a
>> rather
>> unintuitive way; hopefully nobody uses this. ;)
>>
>> Other attributes, including 'pure' and 'nothrow' only affect
>> symbols
>> in the current scope.
>
> It sounds like a bug to me if they're not consistent.
>
> - Jonathan M Davis
Well, you got @system to override @safe, but no @impure or
@throws. So the behavior can kind of make sense in a way. Maybe.
More information about the Digitalmars-d-learn
mailing list