Browse Source

Fix DetermineIsIndexer: parameter handles are optional, so it's better to check the signature blob for the parameter count.

pull/1420/head
Siegfried Pammer 7 years ago
parent
commit
342750ad1d
  1. 11
      ICSharpCode.Decompiler/TypeSystem/Implementation/MetadataProperty.cs

11
ICSharpCode.Decompiler/TypeSystem/Implementation/MetadataProperty.cs

@ -68,16 +68,9 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
bool DetermineIsIndexer(MetadataReader metadata, string name, PropertyAccessors accessors) bool DetermineIsIndexer(MetadataReader metadata, string name, PropertyAccessors accessors)
{ {
if (!accessors.Getter.IsNil) { if (name != (DeclaringTypeDefinition as MetadataTypeDefinition)?.DefaultMemberName)
var md = metadata.GetMethodDefinition(accessors.Getter);
if (md.GetParameters().Count == 0)
return false; return false;
} else if (!accessors.Setter.IsNil) { return Parameters.Count > 0;
var md = metadata.GetMethodDefinition(accessors.Setter);
if (md.GetParameters().Count <= 1)
return false;
}
return name == (DeclaringTypeDefinition as MetadataTypeDefinition)?.DefaultMemberName;
} }
public override string ToString() public override string ToString()

Loading…
Cancel
Save