Browse Source

Fix #2269: LocalFunctionDecompiler misplaces nested local functions in ctors

pull/3416/head
Siegfried Pammer 5 months ago
parent
commit
73e9771d3c
  1. 15
      ICSharpCode.Decompiler/IL/Transforms/LocalFunctionDecompiler.cs

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

@ -142,9 +142,20 @@ namespace ICSharpCode.Decompiler.IL.Transforms @@ -142,9 +142,20 @@ namespace ICSharpCode.Decompiler.IL.Transforms
{
DetermineCaptureAndDeclarationScope(info, useSite);
if (context.Function.Method.IsConstructor && localFunction.DeclarationScope == null)
if (context.Function.Method.IsConstructor)
{
localFunction.DeclarationScope = BlockContainer.FindClosestContainer(useSite);
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;
}
}
}
}

Loading…
Cancel
Save