From 31b4e6ae6ae4e4ea7ce52e8d4c959c1aee7f941c Mon Sep 17 00:00:00 2001
From: Siegfried Pammer <siegfriedpammer@gmail.com>
Date: Fri, 9 Oct 2020 12:37:08 +0200
Subject: [PATCH] Fix #2185: Fix MemberIsHidden-check for local function
 display structs: Async State Machines that looked like local function display
 structs were not hidden once local function decompilation was disabled. This
 led to code duplication in the generated pdb.

---
 ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs b/ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs
index 8b798edb1..10c422d3a 100644
--- a/ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs
+++ b/ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs
@@ -286,8 +286,8 @@ namespace ICSharpCode.Decompiler.CSharp
 					var methodSemantics = module.MethodSemanticsLookup.GetSemantics(methodHandle).Item2;
 					if (methodSemantics != 0 && methodSemantics != System.Reflection.MethodSemanticsAttributes.Other)
 						return true;
-					if (LocalFunctionDecompiler.IsLocalFunctionMethod(module, methodHandle))
-						return settings.LocalFunctions;
+					if (settings.LocalFunctions && LocalFunctionDecompiler.IsLocalFunctionMethod(module, methodHandle))
+						return true;
 					if (settings.AnonymousMethods && methodHandle.HasGeneratedName(metadata) && methodHandle.IsCompilerGenerated(metadata))
 						return true;
 					if (settings.AsyncAwait && AsyncAwaitDecompiler.IsCompilerGeneratedMainMethod(module, methodHandle))
@@ -299,8 +299,8 @@ namespace ICSharpCode.Decompiler.CSharp
 					name = metadata.GetString(type.Name);
 					if (!type.GetDeclaringType().IsNil)
 					{
-						if (LocalFunctionDecompiler.IsLocalFunctionDisplayClass(module, typeHandle))
-							return settings.LocalFunctions;
+						if (settings.LocalFunctions && LocalFunctionDecompiler.IsLocalFunctionDisplayClass(module, typeHandle))
+							return true;
 						if (settings.AnonymousMethods && IsClosureType(type, metadata))
 							return true;
 						if (settings.YieldReturn && YieldReturnDecompiler.IsCompilerGeneratorEnumerator(typeHandle, metadata))