From 81af2a4d43c8ddf566f79977782c8335230309de Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Sat, 5 Feb 2022 23:38:46 +0100 Subject: [PATCH] Fix bug in DetermineEffectiveAccessibility --- ILSpy/Analyzers/AnalyzerScope.cs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/ILSpy/Analyzers/AnalyzerScope.cs b/ILSpy/Analyzers/AnalyzerScope.cs index a040cee33..06a09d1ce 100644 --- a/ILSpy/Analyzers/AnalyzerScope.cs +++ b/ILSpy/Analyzers/AnalyzerScope.cs @@ -56,7 +56,7 @@ namespace ICSharpCode.ILSpy.Analyzers if (entity is ITypeDefinition type) { typeScope = type; - effectiveAccessibility = DetermineEffectiveAccessibility(ref typeScope); + effectiveAccessibility = DetermineEffectiveAccessibility(ref typeScope, Accessibility.Public); } else { @@ -106,13 +106,15 @@ namespace ICSharpCode.ILSpy.Analyzers } } - static Accessibility DetermineEffectiveAccessibility(ref ITypeDefinition typeScope, Accessibility memberAccessibility = Accessibility.Public) + static Accessibility DetermineEffectiveAccessibility(ref ITypeDefinition typeScope, Accessibility memberAccessibility) { Accessibility accessibility = memberAccessibility; - while (typeScope.DeclaringTypeDefinition != null && !accessibility.LessThanOrEqual(Accessibility.Private)) + var ts = typeScope; + while (ts != null && !accessibility.LessThanOrEqual(Accessibility.Private)) { - accessibility = accessibility.Intersect(typeScope.Accessibility); - typeScope = typeScope.DeclaringTypeDefinition; + accessibility = accessibility.Intersect(ts.Accessibility); + typeScope = ts; + ts = ts.DeclaringTypeDefinition; } // Once we reach a private entity, we leave the loop with typeScope set to the class that // contains the private entity = the scope that needs to be searched.