PEVerify выдает предупреждения
От: hardcase Пират http://nemerle.org
Дата: 22.03.10 10:04
Оценка:
В последних билдах PEVerify выдает предупреждения (8651):

C:\Program Files\Nemerle>peverify Nemerle.Compiler.dll

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

[IL]: Error: [C:\Program Files\Nemerle\Nemerle.Compiler.dll : Nemerle.Compiler.LibraryReference+ExternalTypeInfo::imembe
r_of_memberinfo][offset 0x000000BC][found ref 'Nemerle.Compiler.MemberInfo'][expected ref 'Nemerle.Compiler.IMember'] Un
expected type on the stack.
1 Error(s) Verifying Nemerle.Compiler.dll


Собственно код этого метода:
      protected imember_of_memberinfo (m : SR.MemberInfo) : IMember
      {
        match (m.MemberType)
        {
          | MemberKinds.Constructor 
          | MemberKinds.Method     => ExternalMethodInfo  (tenv, library, m :> SR.MethodBase) : IMember
          | MemberKinds.Field      => ExternalFieldInfo   (tenv, library, m :> SR.FieldInfo)
          | MemberKinds.Property   => ExternalPropertyInfo(tenv, library, m :> SR.PropertyInfo)
          | MemberKinds.Event      => ExternalEventInfo         (library, m :> SR.EventInfo)
          | MemberKinds.NestedType => library.TypeInfoOfType(m :> System.Type)
          | _ => null
        }
      }

По адресу 0xbc находится инструкция ret, на нее переходят все ветки.
Чуть позже попробую
ExternalMethodInfo  (tenv, library, m :> SR.MethodBase) :> IMember


Теперь второй ахтунг:
C:\Program Files\Nemerle>peverify Nemerle.MSBuild.Tasks.dll

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

[IL]: Error: [C:\Program Files\Nemerle\Nemerle.MSBuild.Tasks.dll : Nemerle.Tools.MSBuildTask.Ext::Append][offset 0x00000
001] Method is not visible.
[IL]: Error: [C:\Program Files\Nemerle\Nemerle.MSBuild.Tasks.dll : Nemerle.Tools.MSBuildTask.Ext::AppendSwitchIfNotNull]
[offset 0x00000096] Method is not visible.
2 Error(s) Verifying Nemerle.MSBuild.Tasks.dll


Это ни как не связано с тем, что статические классы (Ext объявлен как module) в Nemerle можно наследовать от любых других (отличных от object)?
В C# это запрещено...
/* иЗвиНите зА неРовнЫй поЧерК */
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.