From ac7e06a9ae3080a79e8b7de2d953fc9025e3199b Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Fri, 30 Mar 2018 16:34:49 +0200 Subject: [PATCH] A little bit of cleanup in MetadataLoader and DecompilerTypeSystem --- ICSharpCode.Decompiler/TypeSystem/DecompilerTypeSystem.cs | 5 +++-- ICSharpCode.Decompiler/TypeSystem/MetadataLoader.cs | 5 +---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/ICSharpCode.Decompiler/TypeSystem/DecompilerTypeSystem.cs b/ICSharpCode.Decompiler/TypeSystem/DecompilerTypeSystem.cs index f561f19b4..85a5a076e 100644 --- a/ICSharpCode.Decompiler/TypeSystem/DecompilerTypeSystem.cs +++ b/ICSharpCode.Decompiler/TypeSystem/DecompilerTypeSystem.cs @@ -184,9 +184,10 @@ namespace ICSharpCode.Decompiler.TypeSystem break; case SRM.HandleKind.MemberReference: var memberRef = metadata.GetMemberReference((SRM.MemberReferenceHandle)fieldReference); + Debug.Assert(memberRef.GetKind() == SRM.MemberReferenceKind.Field); + declaringType = ResolveAsType(memberRef.Parent); switch (memberRef.Parent.Kind) { case SRM.HandleKind.TypeReference: - declaringType = ResolveAsType(memberRef.Parent); field = FindNonGenericField(metadata, memberRef, declaringType); break; case SRM.HandleKind.TypeSpecification: @@ -312,7 +313,7 @@ namespace ICSharpCode.Decompiler.TypeSystem method = CreateFakeMethod(declaringType, metadata.GetString(memberRef.Name), signature); break; case SRM.HandleKind.MethodSpecification: - break; + throw new NotImplementedException(); } /*method = FindNonGenericMethod(metadata, new Metadata.Entity(moduleDefinition, methodReference).ResolveAsMethod(), signature); diff --git a/ICSharpCode.Decompiler/TypeSystem/MetadataLoader.cs b/ICSharpCode.Decompiler/TypeSystem/MetadataLoader.cs index 9ebaab700..6f93e2f64 100644 --- a/ICSharpCode.Decompiler/TypeSystem/MetadataLoader.cs +++ b/ICSharpCode.Decompiler/TypeSystem/MetadataLoader.cs @@ -309,9 +309,6 @@ namespace ICSharpCode.Decompiler.TypeSystem return CreateTypeReference((TypeReferenceHandle)type); case HandleKind.TypeDefinition: return new TypeDefTokenTypeReference(type); - case HandleKind.FieldDefinition: - var fd = currentMetadata.GetFieldDefinition((FieldDefinitionHandle)type); - return DynamicAwareTypeReference.Create(fd.DecodeSignature(TypeReferenceSignatureDecoder.Instance, default), fd.GetCustomAttributes(), currentMetadata); default: throw new NotSupportedException(); } @@ -1479,7 +1476,7 @@ namespace ICSharpCode.Decompiler.TypeSystem f.Accessibility = GetAccessibility(field.Attributes); f.IsReadOnly = (field.Attributes & FieldAttributes.InitOnly) == FieldAttributes.InitOnly; f.IsStatic = (field.Attributes & FieldAttributes.Static) == FieldAttributes.Static; - f.ReturnType = ReadTypeReference(handle, field.GetCustomAttributes()); + f.ReturnType = DynamicAwareTypeReference.Create(field.DecodeSignature(TypeReferenceSignatureDecoder.Instance, default), field.GetCustomAttributes(), currentMetadata); var constantHandle = field.GetDefaultValue(); if (!constantHandle.IsNil) { var constant = currentMetadata.GetConstant(constantHandle);