:end to terminate attribute:
ZombineDev via Digitalmars-d
digitalmars-d at puremagic.com
Wed Sep 28 02:48:27 PDT 2016
On Wednesday, 28 September 2016 at 09:43:38 UTC, Mike Parker
wrote:
> Let's try this again.
>
> This attribute block can be terminated by a corresponding
> protection attribute block:
>
> // Begin private
> private:
> void foo() {}
>
> // End private
> public:
> void bar() {}
>
> But not all attributes have a corresponding attribute to turn
> them off:
>
> // Begin @nogc
> @nogc:
> ...
>
> // End with scope/file
>
> It would be a nice convenience to have something like this:
>
> @nogc:
>
> :end
>
> Yes, I'm aware I could do this:
>
> @nogc {}
>
> But given the choice of : and {}, I'm tending to prefer the
> former these days. The lack of a way to turn off some
> attributes forces me to use {}. I recall discussions about
> something like @nogc(off) or some such. Was that ever approved?
> If not, I'd love to have something like :end, though I'm not
> attached to the name.
AFAIR, last year or so, Andrei approved the proposal for
attr(bool expr), eg:
@nogc:
// no gc code here
@nogc(false):
// code that's allowed to use the gc here
class Base(bool overridableImpl)
{
final:
final(overridableImpl) void impl() { /* ... */
}
But still no one has stepped in to do the implementation.
More information about the Digitalmars-d
mailing list