Browse Source

Ignore local functions when collecting used members.

This is necessary because LocalFunctionMethod.DeclaringTypeDefinition points to the current type.
pull/2684/head
Siegfried Pammer 3 years ago
parent
commit
e043f43925
  1. 7
      ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs

7
ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs

@ -1442,11 +1442,14 @@ namespace ICSharpCode.Decompiler.CSharp @@ -1442,11 +1442,14 @@ namespace ICSharpCode.Decompiler.CSharp
foreach (var node in entityDecl.Descendants)
{
var rr = node.GetResolveResult();
if (rr is MemberResolveResult mrr && mrr.Member.DeclaringTypeDefinition == typeDef)
if (rr is MemberResolveResult mrr
&& mrr.Member.DeclaringTypeDefinition == typeDef
&& !(mrr.Member is IMethod { IsLocalFunction: true }))
{
workList.Enqueue(mrr.Member);
}
else if (rr is TypeResolveResult trr && trr.Type.GetDefinition()?.DeclaringTypeDefinition == typeDef)
else if (rr is TypeResolveResult trr
&& trr.Type.GetDefinition()?.DeclaringTypeDefinition == typeDef)
{
workList.Enqueue(trr.Type.GetDefinition());
}

Loading…
Cancel
Save