[Баг?] Поиск имен Nemerle vs. C#
От: _NN_ www.nemerleweb.com
Дата: 01.01.14 13:40
Оценка:
Вопрос возник в связи с этим дефектом: https://github.com/rsdn/nemerle/issues/590
Поведение языков отличаются:

C# здесь выберет IA<T>.F
interface IA
{
    void F();
}
interface IA<T> : IA
{
    new void F();
}
interface IX<T> : IA<T>, IA
{
}

class Program
{
    static void Main(string[] args)
    {
        var a = (IX<int>) null;
        a.F();
    }
}


Nemerle в аналогичном коде выбирает IA.F !
  Скрытый текст
interface IA
{
    F() : void;
}
interface IA[T] : IA
{
    new F() : void;
}
interface IX[T] : IA[T], IA
{
}

Происходит это потому как TypeInfo.LookupMember выкидывает все методы 'new' : https://github.com/rsdn/nemerle/blob/master/ncc/hierarchy/TypeInfo.n#L793
Обычно это хорошо, но в данном случае не совсем.

Вопрос это баг или "фича" ?
http://rsdn.nemerleweb.com
http://nemerleweb.com
баг
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.