On 2015-05-27 21:41, Idan Arye wrote:

I think it's more important to be explicit in the macro invocation than
in the macro declaration. You can tell from the macro declaration that
it's a macro you are looking at, even without the `macro` keyword,

It depends. As far as I can see, just looking at the macro declaration it's just a regular function declaration. You need to look at the types.

First, you need to know that "Auto" is a special type. Second, you need to know that it's only a special type if the fully qualified name is "core.macros.Auto".

It's not enough to look at the imports in the current module, since D supports public imports:

module foo;

public import core.macros;

module bar;

import foo;

Auto myAssert(Auto condition, Auto message)
{
    return message;
}

Not so easy to tell that "myAssert" is a macro declaration just by looking in the module "bar".

--
/Jacob Carlborg

Reply via email to