Где баг в рантайме или в компиляторе?
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.03.16 21:55
Оценка: 13 (2)
Приведенный ниже код успешно компилируется, но при запуске получаем:

TypeLoadException: Could not load type 'D'

Вот код.
struct A<T> { }

struct D
{
  public A<D> ar;
}

class Program
{
  static void Main()
  {
    System.Console.WriteLine(new D().ar); ;
  }
}


С одной стороны D используется в параметре типа структуры вложенной D, т.е. имеем рекурсивное определение структуры.

Но с другой ведь параметр типа не использован нигде в A или может быть использован для задания параметра типа у ссылочного типа (т.е. не приводит к проблеме рекурсии).

Короче, вопрос: где баг, в компиляторе (который не сообщает об ошибке) или в рантайме, который вылетает не по делу?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Отредактировано 30.03.2016 22:08 VladD2 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.