Browse Source

Fix #1696: Missing results in "overridden by" analysis.

pull/1707/head
Siegfried Pammer 7 years ago
parent
commit
c98cae20a9
  1. 12
      ILSpy/Analyzers/Builtin/EventOverriddenByAnalyzer.cs
  2. 13
      ILSpy/Analyzers/Builtin/MethodOverriddenByAnalyzer.cs
  3. 12
      ILSpy/Analyzers/Builtin/PropertyOverriddenByAnalyzer.cs

12
ILSpy/Analyzers/Builtin/EventOverriddenByAnalyzer.cs

@ -42,15 +42,17 @@ namespace ICSharpCode.ILSpy.Analyzers.Builtin @@ -42,15 +42,17 @@ namespace ICSharpCode.ILSpy.Analyzers.Builtin
IEnumerable<IEntity> AnalyzeType(IEvent analyzedEntity, ITypeDefinition type)
{
if (!analyzedEntity.DeclaringType.GetAllBaseTypeDefinitions()
.Any(t => t.MetadataToken == analyzedEntity.DeclaringTypeDefinition.MetadataToken && t.ParentModule.PEFile == type.ParentModule.PEFile))
var token = analyzedEntity.MetadataToken;
var declaringTypeToken = analyzedEntity.DeclaringTypeDefinition.MetadataToken;
var module = analyzedEntity.DeclaringTypeDefinition.ParentModule.PEFile;
var allTypes = type.GetAllBaseTypeDefinitions();
if (!allTypes.Any(t => t.MetadataToken == declaringTypeToken && t.ParentModule.PEFile == module))
yield break;
foreach (var @event in type.Events) {
if (!@event.IsOverride) continue;
if (InheritanceHelper.GetBaseMembers(@event, false)
.Any(p => p.MetadataToken == analyzedEntity.MetadataToken &&
p.ParentModule.PEFile == analyzedEntity.ParentModule.PEFile)) {
var baseMembers = InheritanceHelper.GetBaseMembers(@event, false);
if (baseMembers.Any(p => p.MetadataToken == token && p.ParentModule.PEFile == module)) {
yield return @event;
}
}

13
ILSpy/Analyzers/Builtin/MethodOverriddenByAnalyzer.cs

@ -44,16 +44,17 @@ namespace ICSharpCode.ILSpy.Analyzers.Builtin @@ -44,16 +44,17 @@ namespace ICSharpCode.ILSpy.Analyzers.Builtin
IEnumerable<IEntity> AnalyzeType(IMethod analyzedEntity, ITypeDefinition type)
{
if (!type.GetAllBaseTypeDefinitions()
.Any(t => t.MetadataToken == analyzedEntity.DeclaringTypeDefinition.MetadataToken
&& t.ParentModule.PEFile == analyzedEntity.ParentModule.PEFile))
var token = analyzedEntity.MetadataToken;
var declaringTypeToken = analyzedEntity.DeclaringTypeDefinition.MetadataToken;
var module = analyzedEntity.DeclaringTypeDefinition.ParentModule.PEFile;
var allTypes = type.GetAllBaseTypeDefinitions();
if (!allTypes.Any(t => t.MetadataToken == declaringTypeToken && t.ParentModule.PEFile == module))
yield break;
foreach (var method in type.Methods) {
if (!method.IsOverride) continue;
if (InheritanceHelper.GetBaseMembers(method, false)
.Any(p => p.MetadataToken == analyzedEntity.MetadataToken &&
p.ParentModule.PEFile == analyzedEntity.ParentModule.PEFile)) {
var baseMembers = InheritanceHelper.GetBaseMembers(method, false);
if (baseMembers.Any(p => p.MetadataToken == token && p.ParentModule.PEFile == module)) {
yield return method;
}
}

12
ILSpy/Analyzers/Builtin/PropertyOverriddenByAnalyzer.cs

@ -45,15 +45,17 @@ namespace ICSharpCode.ILSpy.Analyzers.Builtin @@ -45,15 +45,17 @@ namespace ICSharpCode.ILSpy.Analyzers.Builtin
IEnumerable<IEntity> AnalyzeType(IProperty analyzedEntity, ITypeDefinition type)
{
if (!analyzedEntity.DeclaringType.GetAllBaseTypeDefinitions()
.Any(t => t.MetadataToken == analyzedEntity.DeclaringTypeDefinition.MetadataToken && t.ParentModule.PEFile == type.ParentModule.PEFile))
var token = analyzedEntity.MetadataToken;
var declaringTypeToken = analyzedEntity.DeclaringTypeDefinition.MetadataToken;
var module = analyzedEntity.DeclaringTypeDefinition.ParentModule.PEFile;
var allTypes = type.GetAllBaseTypeDefinitions();
if (!allTypes.Any(t => t.MetadataToken == declaringTypeToken && t.ParentModule.PEFile == module))
yield break;
foreach (var property in type.Properties) {
if (!property.IsOverride) continue;
if (InheritanceHelper.GetBaseMembers(property, false)
.Any(p => p.MetadataToken == analyzedEntity.MetadataToken &&
p.ParentModule.PEFile == analyzedEntity.ParentModule.PEFile)) {
var baseMembers = InheritanceHelper.GetBaseMembers(property, false);
if (baseMembers.Any(p => p.MetadataToken == token && p.ParentModule.PEFile == module)) {
yield return property;
}
}

Loading…
Cancel
Save