CheckSTV
От: rameel https://github.com/rsdn/CodeJam
Дата: 30.04.07 20:41
Оценка: 14 (1)
Вечер добрый!

Почему не компилируется такой код Бага? Причем, если закоментировать выделенный код, то компиляция проходит успешно
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

... << RSDN@Home 1.2.0 alpha rev. 677>>
Re: CheckSTV
От: Сергей Туленцев Россия http://software.tulentsev.com
Дата: 30.04.07 21:09
Оценка:
Здравствуйте, rameel, Вы писали:

R>Вечер добрый!



R>Текст ошибки:

R>

R>Main.n(28,3):Error: CheckSTV for ConsoleApplication1.First[ConsoleApplication1.First[ConsoleApplication1.First[ConsoleApplication1.First[...]]]] failed: cyclic type found


Интересно, а что ты этим кодом хотел добиться? Ну, сказано же тебе, рекурсивный тип получился.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
--
Re[2]: CheckSTV
От: Сергей Туленцев Россия http://software.tulentsev.com
Дата: 30.04.07 21:11
Оценка:
Здравствуйте, Сергей Туленцев, Вы писали:

СТ>Интересно, а что ты этим кодом хотел добиться? Ну, сказано же тебе, рекурсивный тип получился.


Гм. Впрочем, тут надо позвать nikov'а.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
--
Re: CheckSTV
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.04.07 21:15
Оценка: 5 (1)
Здравствуйте, rameel, Вы писали:

R>Почему не компилируется такой код Бага? Причем, если закоментировать выделенный код, то компиляция проходит успешно


Однозначно — баг. Надо отписать в багтрекер.

Хотя конечно пример из серии "через зад автогеном...".
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: CheckSTV
От: rameel https://github.com/rsdn/CodeJam
Дата: 30.04.07 22:37
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Однозначно — баг. Надо отписать в багтрекер.


Понятно. Набросал примеры из BLToolkit.Demo на Немерле, так студия просто схлопывается Завтра посмотрю, может сам где накосячил

VD>Хотя конечно пример из серии "через зад автогеном...".


... << RSDN@Home 1.2.0 alpha rev. 677>>
Re[3]: CheckSTV
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.05.07 12:23
Оценка:
Здравствуйте, rameel, Вы писали:

R>Понятно. Набросал примеры из BLToolkit.Demo на Немерле, так студия просто схлопывается Завтра посмотрю, может сам где накосячил


Это тоже в багтрекер. Схлопывание — это значит рекурсивное переполнение стека. Это надо вычищать.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: CheckSTV
От: nikov США http://www.linkedin.com/in/nikov
Дата: 01.05.07 17:10
Оценка:
Здравствуйте, Сергей Туленцев, Вы писали:

СТ>>Интересно, а что ты этим кодом хотел добиться? Ну, сказано же тебе, рекурсивный тип получился.


СТ>Гм. Впрочем, тут надо позвать nikov'а.


Тут я.
Однозначно, бага. А код вполне нормальный.
Re[2]: CheckSTV
От: IT Россия linq2db.com
Дата: 01.05.07 18:28
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Хотя конечно пример из серии "через зад автогеном...".


В BLToolkit это использовалось для создания экземпляров абстрактных классов.
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: CheckSTV
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.05.07 20:41
Оценка:
Здравствуйте, IT, Вы писали:

IT>В BLToolkit это использовалось для создания экземпляров абстрактных классов.


Э... что?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: CheckSTV
От: IT Россия linq2db.com
Дата: 01.05.07 22:43
Оценка:
Здравствуйте, VladD2, Вы писали:

IT>>В BLToolkit это использовалось для создания экземпляров абстрактных классов.


VD>Э... что?


Трудно в это поверить?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: CheckSTV
От: desco США http://v2matveev.blogspot.com
Дата: 02.05.07 08:19
Оценка:
Здравствуйте, VladD2, Вы писали:


VD>Хотя конечно пример из серии "через зад автогеном...".


пример из этой же серии

    public class B[U] {}
    public class A[T] : B[A[A[T]]] {}


компилируется, но не проходит верификацию

Microsoft (R) .NET Framework PE Verifier. Version 2.0.50727.42
Copyright (c) Microsoft Corporation. All rights reserved.

[token 0x02000003] Type load failed.
1 Error Verifying ClassLibrary.dll


к слову, аналогичный баг имеется в компиляторе C#

class B<U> {}
class A<T> : B<A<A<T>>> {}


Microsoft (R) .NET Framework PE Verifier. Version 2.0.50727.42
Copyright (c) Microsoft Corporation. All rights reserved.

[token 0x02000003] Type load failed.
1 Error Verifying test.dll

Re[3]: CheckSTV
От: nikov США http://www.linkedin.com/in/nikov
Дата: 02.05.07 08:26
Оценка:
Здравствуйте, desco, Вы писали:

D>
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 не содержит подобного требования.
Re[4]: CheckSTV
От: desco США http://v2matveev.blogspot.com
Дата: 02.05.07 08:29
Оценка:
Здравствуйте, nikov, Вы писали:

N>Здравствуйте, desco, Вы писали:


N>Там в спецификации есть дополнительное ограничение. См. Ecma-335, 9.2 Generics and recursive inheritance graphs

N>Интересно, что Ecma-334 не содержит подобного требования.

в курсе пример оттуда и взят
Re[5]: CheckSTV
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.05.07 08:57
Оценка:
Здравствуйте, IT, Вы писали:

IT>Трудно в это поверить?


Звучит несколько нездорово. Все же, согласись, содание экземпляров абстрактных классов не совсем нормальное занятие.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: CheckSTV
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.05.07 09:01
Оценка:
Здравствуйте, desco, Вы писали:

N>>Там в спецификации есть дополнительное ограничение. См. Ecma-335, 9.2 Generics and recursive inheritance graphs

N>>Интересно, что Ecma-334 не содержит подобного требования.

D>в курсе пример оттуда и взят


Вы в баг-трекер отписали?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: CheckSTV
От: desco США http://v2matveev.blogspot.com
Дата: 02.05.07 09:12
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, desco, Вы писали:


N>>>Там в спецификации есть дополнительное ограничение. См. Ecma-335, 9.2 Generics and recursive inheritance graphs

N>>>Интересно, что Ecma-334 не содержит подобного требования.

D>>в курсе пример оттуда и взят


VD>Вы в баг-трекер отписали?


да.
Re[7]: CheckSTV
От: nikov США http://www.linkedin.com/in/nikov
Дата: 02.05.07 09:18
Оценка:
Здравствуйте, desco, Вы писали:

VD>>Вы в баг-трекер отписали?


D>да.


Уже давным-давно.
Re[5]: CheckSTV
От: nikov США http://www.linkedin.com/in/nikov
Дата: 02.05.07 09:27
Оценка: +1 :)
Здравствуйте, desco, Вы писали:

D>в курсе пример оттуда и взят



Да, уважаю людей, которые читают Ecma-335...
Re[6]: CheckSTV
От: IT Россия linq2db.com
Дата: 02.05.07 11:00
Оценка:
Здравствуйте, VladD2, Вы писали:

IT>>Трудно в это поверить?


VD>Звучит несколько нездорово. Все же, согласись, содание экземпляров абстрактных классов не совсем нормальное занятие.


В C# — это единственный способ догенерировать класс в рантайме.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[7]: CheckSTV
От: nikov США http://www.linkedin.com/in/nikov
Дата: 02.05.07 11:07
Оценка: +1
Здравствуйте, IT, Вы писали:

VD>>Звучит несколько нездорово. Все же, согласись, содание экземпляров абстрактных классов не совсем нормальное занятие.


IT>В C# — это единственный способ догенерировать класс в рантайме.


Не понятно утверждение. Для того чтобы догененерировать класс в рантайме, надо создать экземпляр абстрактного класса?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.