Browse Source

Fix #1569: Look for first non-static field in enum definitions to determine enum underlying type.

pull/1596/head
Siegfried Pammer 6 years ago
parent
commit
01d1e2ef57
  1. 7
      ICSharpCode.Decompiler/SRMExtensions.cs

7
ICSharpCode.Decompiler/SRMExtensions.cs

@ -69,13 +69,18 @@ namespace ICSharpCode.Decompiler @@ -69,13 +69,18 @@ namespace ICSharpCode.Decompiler
return false;
if (!baseType.IsKnownType(reader, KnownTypeCode.Enum))
return false;
var field = reader.GetFieldDefinition(typeDefinition.GetFields().First());
foreach (var handle in typeDefinition.GetFields()) {
var field = reader.GetFieldDefinition(handle);
if ((field.Attributes & FieldAttributes.Static) != 0)
continue;
var blob = reader.GetBlobReader(field.Signature);
if (blob.ReadSignatureHeader().Kind != SignatureKind.Field)
return false;
underlyingType = (PrimitiveTypeCode)blob.ReadByte();
return true;
}
return false;
}
public static bool IsDelegate(this TypeDefinitionHandle handle, MetadataReader reader)
{

Loading…
Cancel
Save