зеркало из https://github.com/mono/ikvm-fork.git
Added support for defining non-virtual methods in map.xml.
This commit is contained in:
Родитель
c5ca5009ae
Коммит
74b3ed1921
|
@ -433,14 +433,23 @@ namespace IKVM.Internal
|
||||||
}
|
}
|
||||||
else if(!isConstructor)
|
else if(!isConstructor)
|
||||||
{
|
{
|
||||||
attribs |= MethodAttributes.Virtual;
|
// NOTE we're abusing the MethodAttributes.NewSlot and Modifiers.Final combination to mean non-virtual
|
||||||
if((modifiers & Modifiers.Final) != 0)
|
if((modifiers & Modifiers.Final) != 0 && (attribs & MethodAttributes.NewSlot) != 0 && (attribs & MethodAttributes.Virtual) == 0)
|
||||||
{
|
{
|
||||||
attribs |= MethodAttributes.Final;
|
// remove NewSlot, because it doesn't make sense on a non-virtual method
|
||||||
|
attribs &= ~MethodAttributes.NewSlot;
|
||||||
}
|
}
|
||||||
else if((modifiers & Modifiers.Abstract) != 0)
|
else
|
||||||
{
|
{
|
||||||
attribs |= MethodAttributes.Abstract;
|
attribs |= MethodAttributes.Virtual;
|
||||||
|
if((modifiers & Modifiers.Final) != 0)
|
||||||
|
{
|
||||||
|
attribs |= MethodAttributes.Final;
|
||||||
|
}
|
||||||
|
else if((modifiers & Modifiers.Abstract) != 0)
|
||||||
|
{
|
||||||
|
attribs |= MethodAttributes.Abstract;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if((modifiers & Modifiers.Synchronized) != 0)
|
if((modifiers & Modifiers.Synchronized) != 0)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче