[nem-en] Perform macro on members defined by macro.

Ivan A Eryshov ivan.eryshov at gmail.com
Mon Feb 26 12:55:00 CET 2007


I define macro:
<nemerle>
  [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;
  }
</nemerle>
usage:
<nemerle>
  [AddMethWithNotNullParam(NotNull)]
  class A
  {
    static Main() : void
    {
      _ = A().SomeMeth(null);
    }
  }
</nemerle>
but AssertionException doesn't throw. How I can run NotNull macro?



More information about the devel-en mailing list