Thread overview | |||||||||
---|---|---|---|---|---|---|---|---|---|
|
September 28, 2016 :end to terminate attribute: | ||||
---|---|---|---|---|
| ||||
Given public: |
September 28, 2016 Re: :end to terminate attribute: | ||||
---|---|---|---|---|
| ||||
Posted in reply to Mike Parker | 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. |
September 28, 2016 Re: :end to terminate attribute: | ||||
---|---|---|---|---|
| ||||
Posted in reply to Mike Parker | 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.
|
September 28, 2016 Re: :end to terminate attribute: | ||||
---|---|---|---|---|
| ||||
Posted in reply to ZombineDev | On Wednesday, 28 September 2016 at 09:48:27 UTC, ZombineDev wrote:
> On Wednesday, 28 September 2016 at 09:43:38 UTC, Mike Parker wrote:
>> [...]
>
> 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.
I meant:
class Base(bool overridableImpl)
{
final:
/* final methods here */
final(!overridableImpl) void impl() { /* ... */ }
/* final methods here */
}
|
September 28, 2016 Re: :end to terminate attribute: | ||||
---|---|---|---|---|
| ||||
Posted in reply to ZombineDev | On Wednesday, 28 September 2016 at 09:48:27 UTC, ZombineDev wrote:
> AFAIR, last year or so, Andrei approved the proposal for attr(bool expr), eg:
>
Yeah, that's what I couldn't remember. I'll dig up the discussion read up on it again.
|
September 28, 2016 Re: :end to terminate attribute: | ||||
---|---|---|---|---|
| ||||
Posted in reply to ZombineDev | On 9/28/16 11:48 AM, ZombineDev wrote:
>
> AFAIR, last year or so, Andrei approved the proposal for attr(bool
> expr), eg:
>
> @nogc:
>
> // no gc code here
>
> @nogc(false):
Yah, we've got to have something. There's been quibbles over syntax but nothing better came up that is as comprehensive. @nogc(true) and generally @nogc(ctBoolean) should work as well. -- Andrei
|
September 28, 2016 Re: :end to terminate attribute: | ||||
---|---|---|---|---|
| ||||
Posted in reply to Mike Parker | On Wednesday, 28 September 2016 at 10:14:25 UTC, Mike Parker wrote: > Yeah, that's what I couldn't remember. I'll dig up the discussion read up on it again. These two DIPs drafts also try to tackle the attribute problem: http://wiki.dlang.org/DIP64 http://wiki.dlang.org/DIP79 |
Copyright © 1999-2021 by the D Language Foundation