Неявное объявление класса
От: Ziaw Россия  
Дата: 16.05.10 12:49
Оценка:
Разбираясь с NemerleUnit с удивлением обнаружил, что в примерах опускается объявление класса, методы которого генерятся макросами в Nemerle.Macros.ImplicitCTX().CurrentType, имя класса похоже берется из имени файла.

Собственно сразу возникло 3 вопроса —

  1. Где почитать про эту особенность
  2. Зачем в этот класс генерится точка входа (Main)
  3. Почему интеграция в студию генерит кучу ошибок и не работает с тестами, ожидая объявление класса, а сборка проходит без ошибок

Вот это валидный код
#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 не особо смотрится, приведен он только для однообразия
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.