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

Reply via email to