in ILRepack/ReferenceFixator.cs [582:603]
public void FixOverridenMethodDef(MethodDefinition meth)
{
foreach (var ov in meth.Overrides)
{
MethodReference fixedOv = Fix(ov);
if (fixedOv.IsDefinition)
{
if (fixedOv.Module == meth.Module)
{
// it's a Definition, and in our module
MethodDefinition fixedOvDef = (MethodDefinition)fixedOv;
if (fixedOvDef.IsVirtual)
Fix((MethodDefinition)fixedOv, meth);
}
}
}
// no explicit overrides found, check implicit overrides
MethodDefinition @base = MethodMatcher.MapVirtualMethodToDeepestBase(meth);
if (@base != null && @base.IsVirtual)
Fix(@base, meth);
}