|
|
@ -616,6 +616,7 @@ namespace ICSharpCode.Decompiler.CSharp |
|
|
|
while (blob.RemainingBytes > 0) { |
|
|
|
while (blob.RemainingBytes > 0) { |
|
|
|
var code = blob.DecodeOpCode(); |
|
|
|
var code = blob.DecodeOpCode(); |
|
|
|
switch (code) { |
|
|
|
switch (code) { |
|
|
|
|
|
|
|
case ILOpCode.Newobj: |
|
|
|
case ILOpCode.Stfld: |
|
|
|
case ILOpCode.Stfld: |
|
|
|
// async and yield fsms:
|
|
|
|
// async and yield fsms:
|
|
|
|
var token = MetadataTokenHelpers.EntityHandleOrNil(blob.ReadInt32()); |
|
|
|
var token = MetadataTokenHelpers.EntityHandleOrNil(blob.ReadInt32()); |
|
|
@ -623,14 +624,16 @@ namespace ICSharpCode.Decompiler.CSharp |
|
|
|
continue; |
|
|
|
continue; |
|
|
|
TypeDefinitionHandle fsmTypeDef; |
|
|
|
TypeDefinitionHandle fsmTypeDef; |
|
|
|
switch (token.Kind) { |
|
|
|
switch (token.Kind) { |
|
|
|
|
|
|
|
case HandleKind.MethodDefinition: |
|
|
|
|
|
|
|
var fsmMethod = module.Metadata.GetMethodDefinition((MethodDefinitionHandle)token); |
|
|
|
|
|
|
|
fsmTypeDef = fsmMethod.GetDeclaringType(); |
|
|
|
|
|
|
|
break; |
|
|
|
case HandleKind.FieldDefinition: |
|
|
|
case HandleKind.FieldDefinition: |
|
|
|
var fsmField = module.Metadata.GetFieldDefinition((FieldDefinitionHandle)token); |
|
|
|
var fsmField = module.Metadata.GetFieldDefinition((FieldDefinitionHandle)token); |
|
|
|
fsmTypeDef = fsmField.GetDeclaringType(); |
|
|
|
fsmTypeDef = fsmField.GetDeclaringType(); |
|
|
|
break; |
|
|
|
break; |
|
|
|
case HandleKind.MemberReference: |
|
|
|
case HandleKind.MemberReference: |
|
|
|
var memberRef = module.Metadata.GetMemberReference((MemberReferenceHandle)token); |
|
|
|
var memberRef = module.Metadata.GetMemberReference((MemberReferenceHandle)token); |
|
|
|
if (memberRef.GetKind() != MemberReferenceKind.Field) |
|
|
|
|
|
|
|
continue; |
|
|
|
|
|
|
|
fsmTypeDef = ExtractDeclaringType(memberRef); |
|
|
|
fsmTypeDef = ExtractDeclaringType(memberRef); |
|
|
|
break; |
|
|
|
break; |
|
|
|
default: |
|
|
|
default: |
|
|
|