Господа, написал в конфу, но никто не ответил, мож сообщение не дошло
Макрос:
[Nemerle.MacroUsage (Nemerle.MacroPhase.WithTypedMembers,
Nemerle.MacroTargets.Class,
Inherited = false, AllowMultiple = false)]
macro AddMethWithNotNullParam(tb : TypeBuilder, macros = <[ ]>)
{
def t = tb.InternalType.Object;
def attrs = Modifiers (NemerleAttributes.None, [macros]);
def prm = <[ parameter: ..$attrs $("_prm" : usesite) : $(t : typed) ]> :: [];
def bd = <[ object() ]>;
def meth = <[ decl: SomeMeth (..$prm) : $(t : typed) $bd ]>;
tb.DefineAndReturn (meth).HasBeenUsed = true;
}
Применяю его:
[AddMethWithNotNullParam(NotNull)]
class A
{
static Main() : void
{
_ = A().SomeMeth(null);
}
}
Мне надо чтоб сгенерилось что-то вроде:
class A
{
static Main() : void
{
_ = A().SomeMeth(null);
}
SomeMeth(_prm : object) : object
{
when (_prm == null)
throw AssertionException(...);
object()
}
}
Метод то создается, а вот макрос NotNull не раскрывается
Как мне для вновь сгенеренных мемберов прогнать макросы?
... << RSDN@Home 1.2.0 alpha rev. 0>>