Как узнать если аргумент вида "params Name : Type" ?
using Nemerle;
using Nemerle.Collections;
using Nemerle.Compiler;
using Nemerle.Compiler.Parsetree;
using Nemerle.Compiler.Typedtree;
using Nemerle.Text;
using Nemerle.Utility;
using System;
using System.Collections.Generic;
using System.Linq;
namespace MacroLibrary1
{
[MacroUsage(MacroPhase.BeforeTypedMembers, MacroTargets.Method)]
macro Macro1(typeBuilder : TypeBuilder, method : ClassMember.Function)
{
Macro1Impl.DoTransform(Macros.ImplicitCTX(), typeBuilder, method)
}
module Macro1Impl
{
public DoTransform(typer : Typer, typeBuilder : TypeBuilder, method : ClassMember.Function) : void
{
Macros.DefineCTX(typer);
// TODO: Add implementation here.
_ = typeBuilder;
_ = method;
def pparameters = method.header.ParsedParameters;
foreach (p in pparameters)
{
match (p.Type)
{
| <[ ref $_ ]> => Message.Hint("Ref");
| <[ out $_ ]> => Message.Hint("Out");
// | <[ params $_ ]> => Message.Hint("Params"); // Как делать ?
| _ => ()
}
}
}
}
}
Здравствуйте, _nn_, Вы писали:
__>Как узнать если аргумент вида "params Name : Type" ?
foreach (p in method.header.ParsedParameters)
{
| <[ parameter: params $_ : $_ ]> => Message.Hint(p.Location, "params!");
| _ => ()
}