[Mono-bugs] [Bug 469553] Verifier bug

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Tue Feb 3 19:26:50 EST 2009


https://bugzilla.novell.com/show_bug.cgi?id=469553

User rkumpera at novell.com added comment
https://bugzilla.novell.com/show_bug.cgi?id=469553#c1


Rodrigo Kumpera <rkumpera at novell.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
          Component|JIT                         |generics
         AssignedTo|rkumpera at novell.com         |mono-bugs at lists.ximian.com




--- Comment #1 from Rodrigo Kumpera <rkumpera at novell.com>  2009-02-03 17:26:50 MST ---
Unfortunately, this is not a verifier bug.

What happens is that the runtime doesn't assign the proper parent type for List
which later on means it won't be able to check for compatibility.

Together with that, is the fact that ilasm doesn't support System F recursive
types. So gtest-261.exe can be disassembled, but not reassembled.

The way to fix it is to make sure the runtime does set the proper super type
for List.

This can be checked by adding the following code in gtest-261.exe:
    Type lst = typeof (List<>);
    Type arg = lst.GetGenericArguments ()[0];

    Console.WriteLine (lst);
    Console.WriteLine (arg);

    Type sup = lst.BaseType;
    Type sa0 = sup.GetGenericArguments ()[0];
    Type sa1 = sup.GetGenericArguments ()[1];

    Console.WriteLine (sup);
    Console.WriteLine (sa0);
    Console.WriteLine (sa1);

    Console.WriteLine (sa1 == lst);
    Console.WriteLine (sa0 == arg);

    Type inst = typeof (Cons<,>).MakeGenericType (arg, lst.MakeGenericType
(arg));

    Console.WriteLine (inst);
    Console.WriteLine (inst == sup);


It should print:
List`1[A]
A
Cons`2[A,List`1[A]]
A
List`1[A]
True
True
Cons`2[A,List`1[A]]
True

But on mono it does print:
List`1[A]
A
Cons`2[A,List`1[A]]
A
List`1[A]
True
True
Cons`2[A,List`1[A]]
False

-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the mono-bugs mailing list