Разбираясь с NemerleUnit с удивлением обнаружил, что в примерах опускается объявление класса, методы которого генерятся макросами в Nemerle.Macros.ImplicitCTX().CurrentType, имя класса похоже берется из имени файла.
Собственно сразу возникло 3 вопроса —
Где почитать про эту особенность
Зачем в этот класс генерится точка входа (Main)
Почему интеграция в студию генерит кучу ошибок и не работает с тестами, ожидая объявление класса, а сборка проходит без ошибок
Вот это валидный код
#pragma indent
using NemerleUnit;
test "length of an empty list"
assert [].Length equals 0;
Я хотел перенять подобный синтаксис для миграций
#pragma indent
using NRails.Migraions;
up
create Test
Id : Guid(pk)
down
drop Test;
Вместо:
#pragma indent
using NRails.Migraions;
public class Test : Migration
public Test()
base("Test")
protected override up() : void
create Test
Id : Guid(pk)
protected override up() : void
drop Test
но проблемы с интеграцией перевешивают все плюсы, самый очевидный из которых — избежать дублирование имени файла, имени класса и имени миграции. Пока планирую побороть эти проблемы генерацией файла по шаблону, но это не самый лучший выход.
собственно здесь даже PLI не особо смотрится, приведен он только для однообразия