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@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.digitalmar...@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.