|
|
@ -33,19 +33,27 @@ namespace ICSharpCode.Decompiler.Ast |
|
|
|
this.context = context; |
|
|
|
} |
|
|
|
|
|
|
|
public static bool MemberIsHidden(MemberReference member) |
|
|
|
public static bool MemberIsHidden(MemberReference member, DecompilerSettings settings) |
|
|
|
{ |
|
|
|
MethodDefinition method = member as MethodDefinition; |
|
|
|
if (method != null && (method.IsGetter || method.IsSetter || method.IsAddOn || method.IsRemoveOn)) |
|
|
|
return true; |
|
|
|
if (method != null && method.Name.StartsWith("<", StringComparison.Ordinal) && method.IsCompilerGenerated()) |
|
|
|
return true; |
|
|
|
if (method != null) { |
|
|
|
if (method.IsGetter || method.IsSetter || method.IsAddOn || method.IsRemoveOn) |
|
|
|
return true; |
|
|
|
if (settings.AnonymousMethods && method.Name.StartsWith("<", StringComparison.Ordinal) && method.IsCompilerGenerated()) |
|
|
|
return true; |
|
|
|
} |
|
|
|
TypeDefinition type = member as TypeDefinition; |
|
|
|
if (type != null && type.DeclaringType != null && type.Name.StartsWith("<>c__DisplayClass", StringComparison.Ordinal) && type.IsCompilerGenerated()) |
|
|
|
return true; |
|
|
|
if (type != null && type.DeclaringType != null) { |
|
|
|
if (settings.AnonymousMethods && type.Name.StartsWith("<>c__DisplayClass", StringComparison.Ordinal) && type.IsCompilerGenerated()) |
|
|
|
return true; |
|
|
|
if (settings.YieldReturn && YieldReturnDecompiler.IsCompilerGeneratorEnumerator(type)) |
|
|
|
return true; |
|
|
|
} |
|
|
|
FieldDefinition field = member as FieldDefinition; |
|
|
|
if (field != null && field.Name.StartsWith("CS$<>", StringComparison.Ordinal) && field.IsCompilerGenerated()) |
|
|
|
return true; |
|
|
|
if (field != null) { |
|
|
|
if (settings.AnonymousMethods && field.Name.StartsWith("CS$<>", StringComparison.Ordinal) && field.IsCompilerGenerated()) |
|
|
|
return true; |
|
|
|
} |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
@ -170,7 +178,7 @@ namespace ICSharpCode.Decompiler.Ast |
|
|
|
|
|
|
|
// Nested types
|
|
|
|
foreach(TypeDefinition nestedTypeDef in typeDef.NestedTypes) { |
|
|
|
if (MemberIsHidden(nestedTypeDef)) |
|
|
|
if (MemberIsHidden(nestedTypeDef, context.Settings)) |
|
|
|
continue; |
|
|
|
astType.AddChild(CreateType(nestedTypeDef), TypeDeclaration.MemberRole); |
|
|
|
} |
|
|
@ -487,7 +495,7 @@ namespace ICSharpCode.Decompiler.Ast |
|
|
|
{ |
|
|
|
// Add fields
|
|
|
|
foreach(FieldDefinition fieldDef in typeDef.Fields) { |
|
|
|
if (MemberIsHidden(fieldDef)) continue; |
|
|
|
if (MemberIsHidden(fieldDef, context.Settings)) continue; |
|
|
|
astType.AddChild(CreateField(fieldDef), TypeDeclaration.MemberRole); |
|
|
|
} |
|
|
|
|
|
|
@ -510,7 +518,7 @@ namespace ICSharpCode.Decompiler.Ast |
|
|
|
|
|
|
|
// Add methods
|
|
|
|
foreach(MethodDefinition methodDef in typeDef.Methods) { |
|
|
|
if (methodDef.IsConstructor || MemberIsHidden(methodDef)) continue; |
|
|
|
if (methodDef.IsConstructor || MemberIsHidden(methodDef, context.Settings)) continue; |
|
|
|
|
|
|
|
astType.AddChild(CreateMethod(methodDef), TypeDeclaration.MemberRole); |
|
|
|
} |
|
|
|