Первый вопрос. Почему не компилится вот такой код:
using Nemerle;
using Nemerle.Compiler;
using System;
using System.Collections.Generic;
using System.Text;
namespace Rsdn.ParserTools
{
[MacroUsage (MacroPhase.WithTypedMembers, MacroTargets.Class,
Inherited = true)]
public macro AlgebraicType(t : TypeBuilder)
{
match (t.GetTydecl())
{
| <[decl: public variant $(nm : name) { $body } ]> =>
Message.Warning($"$nm");
| _ =>
Message.Error($"Not a variant");
}
}
}
Вместо этого вылетает исключение.
Второй вопрос. Опишу задачу. Есть макрос, который должен брать некий тип A, и получать из него все публичные методы, такие, что типы параметров и тип возвращаемого значения могут быть либо bool, либо типа B. Причём, A и B должны быть найдены по имени (string). Как правильно решается данная задача? Как представлять A и B? Я в иерархии сборки Nemerle.Compiler.dll для одного только представления типа нашёл около 10 способов, и в чём фишка каждого не понятно.
... << RSDN@Home 1.2.0 alpha rev. 672>>