[nem-en] [macro] building setter body

Sergey Shishmintzev sergey.shishmintzev at gmail.com
Thu Mar 8 20:15:42 CET 2007


Hi,
I want to enhance Accessor macro. Here sample for test case:
// code:
[Nemerle.MacroUsage (Nemerle.MacroPhase.BeforeInheritance,
                     Nemerle.MacroTargets.Field,
                     Inherited = false, AllowMultiple = true)]
macro PropertyBuilder (current_type : TypeBuilder, storage_field :
ParsedField, params args : list [PExpr])
{
  def evnt_name = storage_field.Name+"_Changed";
  mutable setter_body = <[ $(evnt_name : dyn)(); ]>;
  unless (args.IsEmpty)
    setter_body =
      <[ when ($(args.Nth(0)))
           $setter_body; ]>;
  def prop = <[ decl:
        public $(storage_field.Name+"_Prop" : dyn) : $(storage_field.ty)
        {
          set { $setter_body }
        }
      ]>;
  current_type.Define (prop);
}

// usage:
public class Model2
{
  [PropertyBuilder(field2 != value)]
  public mutable field2 : string;
  public field2_Changed() : void {};
}

Problem:
ncc.exe says "error: unbound name `value'"

Any solutions?
-- 
Serg



More information about the devel-en mailing list