Browse Source

#2594: MethodUsedByAnalyzer: Create code mappings only for types that actually have a usage of the analyzed method.

pull/2643/head
Siegfried Pammer 3 years ago
parent
commit
1bd24e6ec2
  1. 3
      ILSpy/Analyzers/Builtin/MethodUsedByAnalyzer.cs

3
ILSpy/Analyzers/Builtin/MethodUsedByAnalyzer.cs

@ -57,12 +57,13 @@ namespace ICSharpCode.ILSpy.Analyzers.Builtin @@ -57,12 +57,13 @@ namespace ICSharpCode.ILSpy.Analyzers.Builtin
foreach (var type in scope.GetTypesInScope(context.CancellationToken))
{
var parentModule = (MetadataModule)type.ParentModule;
mapping = context.Language.GetCodeMappingInfo(parentModule.PEFile, type.MetadataToken);
mapping = null;
var methods = type.GetMembers(m => m is IMethod, Options).OfType<IMethod>();
foreach (var method in methods)
{
if (IsUsedInMethod((IMethod)analyzedSymbol, method, context))
{
mapping ??= context.Language.GetCodeMappingInfo(parentModule.PEFile, type.MetadataToken);
var parent = mapping.GetParentMethod((MethodDefinitionHandle)method.MetadataToken);
yield return parentModule.GetDefinition(parent);
}

Loading…
Cancel
Save