Здравствуйте, VladD2, Вы писали:
А>>Компилятор считает, что I не реализует интерфейс IComparable. Но I это int, а int реализует IComparable.
VD>Я попытался воспроизвести этот баг и он воспроизвелся только в IDE. Компилятор код съедает без проблем. VD>Это только у меня?
Странное дело, при копиляции из студии компиляция завершается успешно — в статусной строке появляется сообщение "Build succeeded".
Ошибка появляется при построении интеграцией дерева типов — после появления в статусной строке сообщения "Building types tree is completed".
Здравствуйте, VladD2, Вы писали:
VD>Я попытался воспроизвести этот баг и он воспроизвелся только в IDE. Компилятор код съедает без проблем. VD>Это только у меня?
Если вынести строку type Bar = Foo[I]; в отдельный файл, то ошибка в студии исчезнет.
Здравствуйте, seregaa, Вы писали:
S>Странное дело, при копиляции из студии компиляция завершается успешно — в статусной строке появляется сообщение "Build succeeded".
S>Ошибка появляется при построении интеграцией дерева типов — после появления в статусной строке сообщения "Building types tree is completed".
Проще смотреть на окно Output. В него выводится только вывод компилятора.
Похоже какие-то проблемы с генерируемыми индентификаторами в компиляторе. Вылезают они только в интеграции по всей видимости потому что в ней компилятор запускается множество раз. Будет разбираться...
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, seregaa, Вы писали:
VD>>Я попытался воспроизвести этот баг и он воспроизвелся только в IDE. Компилятор код съедает без проблем. VD>>Это только у меня?
S>Если вынести строку type Bar = Foo[I]; в отдельный файл, то ошибка в студии исчезнет.
Как выяснилось, достаточно просто переставить объявления type местами, чтобы все заработало.
На лицо очередной косяк дизайна в компиляторе. Получается, что есть зависимость между временем обработки алиасов. Если к моменту разрешения ссылки на алиас это алиас еще связан, компилятор работает не верно.
Собственно интеграция отличается от компилятора только тем, что в ней (похоже) типы обрабатываются в другом порядке. Это предположение подтверждается тем, что алиасы будучи переставленными местами не компилируются даже компилятором командной строки.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.