Browse Source

Fix #1290: Missing ldftn/ldvirtftn usages of methods.

pull/1296/head
Siegfried Pammer 7 years ago
parent
commit
3606542f5b
  1. 16
      ILSpy/Analyzers/Builtin/MethodUsedByAnalyzer.cs

16
ILSpy/Analyzers/Builtin/MethodUsedByAnalyzer.cs

@ -99,7 +99,7 @@ namespace ICSharpCode.ILSpy.Analyzers.Builtin @@ -99,7 +99,7 @@ namespace ICSharpCode.ILSpy.Analyzers.Builtin
ILOpCode opCode;
try {
opCode = blob.DecodeOpCode();
if (opCode != ILOpCode.Call && opCode != ILOpCode.Callvirt && opCode != ILOpCode.Ldtoken) {
if (!IsSupportedOpCode(opCode)) {
ILParser.SkipOperand(ref blob, opCode);
continue;
}
@ -132,6 +132,20 @@ namespace ICSharpCode.ILSpy.Analyzers.Builtin @@ -132,6 +132,20 @@ namespace ICSharpCode.ILSpy.Analyzers.Builtin
return false;
}
static bool IsSupportedOpCode(ILOpCode opCode)
{
switch (opCode) {
case ILOpCode.Call:
case ILOpCode.Callvirt:
case ILOpCode.Ldtoken:
case ILOpCode.Ldftn:
case ILOpCode.Ldvirtftn:
return true;
default:
return false;
}
}
static bool IsSameMember(IMember analyzedMethod, IMember m)
{
return m.MetadataToken == analyzedMethod.MetadataToken

Loading…
Cancel
Save