Вызов макросов у вновь сгенеренных мемберов.
От: ie Россия http://ziez.blogspot.com/
Дата: 27.02.07 05:25
Оценка:
Господа, написал в конфу, но никто не ответил, мож сообщение не дошло
Макрос:
 [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>>
Превратим окружающую нас среду в воскресенье.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.