Здравствуйте, hardcase, Вы писали:
H>В последних билдах PEVerify выдает предупреждения (8651):
Не только в последних, насколько я помню.
H>H>[IL]: Error: [C:\Program Files\Nemerle\Nemerle.Compiler.dll : Nemerle.Compiler.LibraryReference+ExternalTypeInfo::imembe
H>r_of_memberinfo][offset 0x000000BC][found ref 'Nemerle.Compiler.MemberInfo'][expected ref 'Nemerle.Compiler.IMember'] Un
H>expected type on the stack.
H>
Тут, насколько помню происходит следующее: ncc видит, что не надо делать преобразование типа и кладёт во всех ветках на не-совсем-типизированный стек значение. В то время как у верификатора по стандарту есть алгоритм вывода типов ячеек стека, который выводит по первым веткам не интерфейс IMember, а общий класс MemberInfo, а потом находит противоречие с ним. Собственно hint на первой ветке не случайно, алгоритм вывода типов Nemerle тут тоже бы ошибся, но при этом хинт не достигает IL.
В багтрекере это есть, ссылку сходу не дам.
H>H>[IL]: Error: [C:\Program Files\Nemerle\Nemerle.MSBuild.Tasks.dll : Nemerle.Tools.MSBuildTask.Ext::Append][offset 0x00000
H>001] Method is not visible.
H>[IL]: Error: [C:\Program Files\Nemerle\Nemerle.MSBuild.Tasks.dll : Nemerle.Tools.MSBuildTask.Ext::AppendSwitchIfNotNull]
H>[offset 0x00000096] Method is not visible.
H>
Тут мы в статическом методе зовём protected базовый метод, чего вообще-то делать нельзя и тут кривой дизайн, ну или мягче, несовместимость расширяемости наследованием и методами-расширениями.