Browse Source

Fix #2269: LocalFunctionDecompiler misplaces nested local functions in ctors

pull/3416/head
Siegfried Pammer 1 year ago
parent
commit
73e9771d3c
  1. 13
      ICSharpCode.Decompiler/IL/Transforms/LocalFunctionDecompiler.cs

13
ICSharpCode.Decompiler/IL/Transforms/LocalFunctionDecompiler.cs

@ -142,10 +142,21 @@ namespace ICSharpCode.Decompiler.IL.Transforms @@ -142,10 +142,21 @@ namespace ICSharpCode.Decompiler.IL.Transforms
{
DetermineCaptureAndDeclarationScope(info, useSite);
if (context.Function.Method.IsConstructor && localFunction.DeclarationScope == null)
if (context.Function.Method.IsConstructor)
{
if (localFunction.DeclarationScope == null)
{
localFunction.DeclarationScope = BlockContainer.FindClosestContainer(useSite);
}
else
{
localFunction.DeclarationScope = FindCommonAncestorInstruction<BlockContainer>(useSite, localFunction.DeclarationScope);
if (localFunction.DeclarationScope == null)
{
localFunction.DeclarationScope = (BlockContainer)context.Function.Body;
}
}
}
}
if (localFunction.DeclarationScope == null)

Loading…
Cancel
Save