Revert attributes to their defaults with default keywords

Daniel Kozák via Digitalmars-d digitalmars-d at puremagic.com
Fri Jan 9 04:47:02 PST 2015


V Fri, 09 Jan 2015 07:21:02 -0500
Steven Schveighoffer via Digitalmars-d <digitalmars-d at puremagic.com>
napsáno:

> On 1/9/15 6:57 AM, Daniel Kozak wrote:
> > I often have code like this:
> >
> > class A {
> >      final:
> >      nothrow:
> >      ...
> >      some methods
> >      ...
> > }
> >
> > Problem comes when I need add methods which for eg.: throws or need
> > to be virtual.
> >
> > I can put them before final: but this is not perfect, because I
> > prefer when methods are place in specific order (method abc call
> > method asd so asd is bellow abc and so on).
> >
> > So today I download dmd source and make some small modification
> > (only few lines) and this is the result:
> >
> > http://dpaste.dzfl.pl/472afc938397
> 
> Nice, but I don't like the fact that it bluntly returns all
> attributes to default.
> 
> For example, if you need to remove the final attribute, but not
> nothrow, I'm assuming it looks something like:
> 
> default nothrow void foo()
> 
> which doesn't read very well.
> 
> If we are going to do this, I'd rather see something like has been 
> suggested before -- parameterizing attributes:
> 
> final(false) -> remove final
> 
> This allows compile-time booleans to modify attributes in ways that
> are extremely difficult in templates today.
> 
> -Steve

I think both ways shoud be available

when I need remove just one attr than attr!false is nice but when I
need remove for eg: 3 or more it will look like:

void someFunc final(false) pure(false) nothrow(false)

in this case I think that:

default void foo() nothrow looks OK now :)



More information about the Digitalmars-d mailing list