Не знаю, сохранился ли в новых версиях беты следующий баг.
using System;
using System.Console;
using Nemerle.Utility;
[Record] class GEventArgs[T] { [Accessor] _value : T }
delegate GEventHandler[T](sender : object, ea : GEventArgs[T]) : void;
delegate StringEventHandler(sender : object, ea : GEventArgs[string]) : void;
module Program
{
event Foo : GEventHandler[string];
event Bar : StringEventHandler;
public Main() : void
{
Foo += (_, ea) => { WriteLine(ea.Value) };
Bar += (_, ea) => { WriteLine(ea.Value) };
}
}
Вторую анонимную функцию компилятор неявно преобразовывает в делегат. Первую, с генериком — в бете не хочет, при этом в декабрьском CTP всё работало нормально.
Если сохранился, то я могу запостить на баг-трекер.
Здравствуйте, Аноним, Вы писали:
Упрощенный тест:
delegate GEventHandler[T] (ea : list[T]) : void;
delegate StringEventHandler(ea : list[string]) : void;
module Program
{
public Main() : void
{
def x : StringEventHandler = fun(_ : list[string]) { };
def x : GEventHandler[string] = fun(_ : list[string]) { }; //E: expected GEventHandler[string], got list[string] -> void in type-enforced expression: list
}
}
Вот его в багрепорт и стоит добавить. (чем проще тест, тем проще выявить ошибку)
Здравствуйте, Аноним, Вы писали:
Fix bug #1235.
http://nemerle.org/bugs/view.php?id=1213