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

Ivan A Eryshov ivan.eryshov at gmail.com
Wed Feb 28 06:40:50 CET 2007


Kamil, Michał,
What method TypeBuilder.add_macros_from_parsedmems(...) does?

On 26/02/07, Ivan A Eryshov <ivan.eryshov at gmail.com> wrote:
> 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