diff --git a/ICSharpCode.Decompiler/Ast/AstBuilder.cs b/ICSharpCode.Decompiler/Ast/AstBuilder.cs index 154517c74..75c3ea029 100644 --- a/ICSharpCode.Decompiler/Ast/AstBuilder.cs +++ b/ICSharpCode.Decompiler/Ast/AstBuilder.cs @@ -92,9 +92,9 @@ namespace ICSharpCode.Decompiler.Ast FieldDefinition field = member as FieldDefinition; if (field != null) { if (field.IsCompilerGenerated()) { - if (settings.AnonymousMethods && (field.HasGeneratedName() || field.Name.StartsWith("CS$<>", StringComparison.Ordinal))) + if (settings.AnonymousMethods && IsAnonymousMethodCacheField(field)) return true; - if (settings.AutomaticProperties && field.HasGeneratedName() && field.Name.EndsWith("BackingField", StringComparison.Ordinal)) + if (settings.AutomaticProperties && IsAutomaticPropertyBackingField(field)) return true; } // event-fields are not [CompilerGenerated] @@ -105,6 +105,16 @@ namespace ICSharpCode.Decompiler.Ast return false; } + static bool IsAutomaticPropertyBackingField(FieldDefinition field) + { + return field.HasGeneratedName() && field.Name.EndsWith("BackingField", StringComparison.Ordinal); + } + + static bool IsAnonymousMethodCacheField(FieldDefinition field) + { + return field.Name.StartsWith("CS$<>", StringComparison.Ordinal) || field.Name.StartsWith("<>f__am", StringComparison.Ordinal); + } + static bool IsClosureType(TypeDefinition type) { return type.HasGeneratedName() && type.IsCompilerGenerated() && (type.Name.Contains("DisplayClass") || type.Name.Contains("AnonStorey"));