: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