The System.TypeLoadException I mentioned here turns out to be caused by a bug in the .NET 1.0 CLR (MS has already fixed it in the current 1.1 beta).
Here is some code that triggers it:
interface __Shape
{
public abstract __Rectangle getBounds();
public abstract __Rectangle2D getBounds2D();
}
abstract class __RectangularShape implements __Shape
{
public __Rectangle getBounds()
{
return null;
}
}
abstract class __Rectangle2D extends __RectangularShape
{
public __Rectangle2D getBounds2D()
{
return null;
}
}
class __Rectangle extends __Rectangle2D implements __Shape
{
public __Rectangle getBounds()
{
return null;
}
public __Rectangle2D getBounds2D()
{
return null;
}
}
If this code was compiled with Jikes 1.18 (which doesn't emit Miranda methods) and then run in IK.VM.NET, it failed with a System.TypeLoadException. The fix was easy, just emit an abstract method for each interface method that a type doesn't implement. A compiled DLL of the above code can be found here. When run through peverify 1.0, it will fail verification, in 1.1 this is fixed.
I compiled the Classpath code I got on Friday with Jikes 1.18 and made a new release based on that (including, of course, all the VM fixes I had to do).
Updated the binaries and source snaphots.