Почему не компилируется такой код Бага? Причем, если закоментировать выделенный код, то компиляция проходит успешно
namespace ConsoleApplication1
{
public class First[T] where T : First[T], new()
{
public static CreateInstance() : T
{
T();
}
}
public class Second : First[Second]
{
}
module Program
{
Main() : void
{
def c = Second.CreateInstance();
}
}
}
Текст ошибки:
Main.n(28,3):Error: CheckSTV for ConsoleApplication1.First[ConsoleApplication1.First[ConsoleApplication1.First[ConsoleApplication1.First[...]]]] failed: cyclic type found
R>Main.n(28,3):Error: CheckSTV for ConsoleApplication1.First[ConsoleApplication1.First[ConsoleApplication1.First[ConsoleApplication1.First[...]]]] failed: cyclic type found
Интересно, а что ты этим кодом хотел добиться? Ну, сказано же тебе, рекурсивный тип получился.
Здравствуйте, VladD2, Вы писали:
VD>Однозначно — баг. Надо отписать в багтрекер.
Понятно. Набросал примеры из BLToolkit.Demo на Немерле, так студия просто схлопывается Завтра посмотрю, может сам где накосячил
VD>Хотя конечно пример из серии "через зад автогеном...".
Здравствуйте, rameel, Вы писали:
R>Понятно. Набросал примеры из BLToolkit.Demo на Немерле, так студия просто схлопывается Завтра посмотрю, может сам где накосячил
Это тоже в багтрекер. Схлопывание — это значит рекурсивное переполнение стека. Это надо вычищать.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Сергей Туленцев, Вы писали:
СТ>>Интересно, а что ты этим кодом хотел добиться? Ну, сказано же тебе, рекурсивный тип получился.
СТ>Гм. Впрочем, тут надо позвать nikov'а.
D> public class B[U] {}
D> public class A[T] : B[A[A[T]]] {}
D>
D>компилируется, но не проходит верификацию
Там в спецификации есть дополнительное ограничение. См. Ecma-335, 9.2 Generics and recursive inheritance graphs
Интересно, что Ecma-334 не содержит подобного требования.
Здравствуйте, nikov, Вы писали:
N>Здравствуйте, desco, Вы писали:
N>Там в спецификации есть дополнительное ограничение. См. Ecma-335, 9.2 Generics and recursive inheritance graphs N>Интересно, что Ecma-334 не содержит подобного требования.
Здравствуйте, desco, Вы писали:
N>>Там в спецификации есть дополнительное ограничение. См. Ecma-335, 9.2 Generics and recursive inheritance graphs N>>Интересно, что Ecma-334 не содержит подобного требования.
D>в курсе пример оттуда и взят
Вы в баг-трекер отписали?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, desco, Вы писали:
N>>>Там в спецификации есть дополнительное ограничение. См. Ecma-335, 9.2 Generics and recursive inheritance graphs N>>>Интересно, что Ecma-334 не содержит подобного требования.
D>>в курсе пример оттуда и взят
VD>Вы в баг-трекер отписали?
Здравствуйте, VladD2, Вы писали:
IT>>Трудно в это поверить?
VD>Звучит несколько нездорово. Все же, согласись, содание экземпляров абстрактных классов не совсем нормальное занятие.
В C# — это единственный способ догенерировать класс в рантайме.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
VD>>Звучит несколько нездорово. Все же, согласись, содание экземпляров абстрактных классов не совсем нормальное занятие.
IT>В C# — это единственный способ догенерировать класс в рантайме.
Не понятно утверждение. Для того чтобы догененерировать класс в рантайме, надо создать экземпляр абстрактного класса?