diff --git a/ICSharpCode.Decompiler/IL/Transforms/LocalFunctionDecompiler.cs b/ICSharpCode.Decompiler/IL/Transforms/LocalFunctionDecompiler.cs index 523d6e68c..c377238c1 100644 --- a/ICSharpCode.Decompiler/IL/Transforms/LocalFunctionDecompiler.cs +++ b/ICSharpCode.Decompiler/IL/Transforms/LocalFunctionDecompiler.cs @@ -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(useSite, localFunction.DeclarationScope); + if (localFunction.DeclarationScope == null) + { + localFunction.DeclarationScope = (BlockContainer)context.Function.Body; + } + } } }