Browse Source

Use ArgumentOutOfRangeException or BadImageFormatException in switch-default sections.

pull/1030/head
Siegfried Pammer 7 years ago
parent
commit
4540b93e19
  1. 3
      ICSharpCode.Decompiler/CSharp/StatementBuilder.cs
  2. 4
      ICSharpCode.Decompiler/Disassembler/MethodBodyDisassembler.cs
  3. 4
      ICSharpCode.Decompiler/IL/Instructions/Comp.cs
  4. 2
      ICSharpCode.Decompiler/IL/Instructions/ILFunction.cs
  5. 2
      ICSharpCode.Decompiler/IL/Transforms/DynamicCallSiteTransform.cs
  6. 2
      ICSharpCode.Decompiler/Metadata/MetadataExtensions.cs
  7. 4
      ICSharpCode.Decompiler/TypeSystem/DecompilerTypeSystem.cs
  8. 3
      ICSharpCode.Decompiler/TypeSystem/MetadataAssembly.cs

3
ICSharpCode.Decompiler/CSharp/StatementBuilder.cs

@ -874,8 +874,9 @@ namespace ICSharpCode.Decompiler.CSharp
if (continueTarget.IncomingEdgeCount > continueCount) if (continueTarget.IncomingEdgeCount > continueCount)
blockStatement.Add(new LabelStatement { Label = continueTarget.Label }); blockStatement.Add(new LabelStatement { Label = continueTarget.Label });
return forStmt; return forStmt;
default:
throw new ArgumentOutOfRangeException();
} }
throw new NotSupportedException();
} }
BlockStatement ConvertBlockContainer(BlockContainer container, bool isLoop) BlockStatement ConvertBlockContainer(BlockContainer container, bool isLoop)

4
ICSharpCode.Decompiler/Disassembler/MethodBodyDisassembler.cs

@ -215,7 +215,7 @@ namespace ICSharpCode.Decompiler.Disassembler
output.WriteLine("fault"); output.WriteLine("fault");
break; break;
default: default:
throw new NotSupportedException(); throw new ArgumentOutOfRangeException();
} }
output.WriteLine("{"); output.WriteLine("{");
break; break;
@ -224,7 +224,7 @@ namespace ICSharpCode.Decompiler.Disassembler
output.WriteLine("{"); output.WriteLine("{");
break; break;
default: default:
throw new NotSupportedException(); throw new ArgumentOutOfRangeException();
} }
output.Indent(); output.Indent();
} }

4
ICSharpCode.Decompiler/IL/Instructions/Comp.cs

@ -57,7 +57,7 @@ namespace ICSharpCode.Decompiler.IL
case ComparisonKind.GreaterThanOrEqual: case ComparisonKind.GreaterThanOrEqual:
return ComparisonKind.LessThan; return ComparisonKind.LessThan;
default: default:
throw new NotSupportedException(); throw new ArgumentOutOfRangeException();
} }
} }
@ -77,7 +77,7 @@ namespace ICSharpCode.Decompiler.IL
case ComparisonKind.GreaterThanOrEqual: case ComparisonKind.GreaterThanOrEqual:
return BinaryOperatorType.GreaterThanOrEqual; return BinaryOperatorType.GreaterThanOrEqual;
default: default:
throw new NotSupportedException(); throw new ArgumentOutOfRangeException();
} }
} }

2
ICSharpCode.Decompiler/IL/Instructions/ILFunction.cs

@ -232,7 +232,7 @@ namespace ICSharpCode.Decompiler.IL
name = "I_"; name = "I_";
break; break;
default: default:
throw new NotSupportedException(); throw new ArgumentOutOfRangeException(nameof(kind));
} }
name += index; name += index;
variable.HasGeneratedName = true; variable.HasGeneratedName = true;

2
ICSharpCode.Decompiler/IL/Transforms/DynamicCallSiteTransform.cs

@ -419,7 +419,7 @@ namespace ICSharpCode.Decompiler.IL.Transforms
callSiteInfo.Kind = BinderMethodKind.Invoke; callSiteInfo.Kind = BinderMethodKind.Invoke;
break; break;
default: default:
throw new NotSupportedException(); throw new ArgumentOutOfRangeException();
} }
if (binderCall.Arguments.Count != 3) if (binderCall.Arguments.Count != 3)
return false; return false;

2
ICSharpCode.Decompiler/Metadata/MetadataExtensions.cs

@ -157,7 +157,7 @@ namespace ICSharpCode.Decompiler.Metadata
case KnownTypeCode.UIntPtr: case KnownTypeCode.UIntPtr:
return PrimitiveTypeCode.UIntPtr; return PrimitiveTypeCode.UIntPtr;
default: default:
throw new NotSupportedException(); throw new ArgumentOutOfRangeException();
} }
} }

4
ICSharpCode.Decompiler/TypeSystem/DecompilerTypeSystem.cs

@ -198,7 +198,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
case SRM.MemberReferenceKind.Field: case SRM.MemberReferenceKind.Field:
return ResolveAsField(memberReference); return ResolveAsField(memberReference);
} }
throw new NotSupportedException(); throw new BadImageFormatException("MemberReference must be either a method or a field");
case SRM.HandleKind.EventDefinition: case SRM.HandleKind.EventDefinition:
return ResolveAsEvent(memberReference); return ResolveAsEvent(memberReference);
case SRM.HandleKind.PropertyDefinition: case SRM.HandleKind.PropertyDefinition:
@ -206,7 +206,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
case SRM.HandleKind.MethodSpecification: case SRM.HandleKind.MethodSpecification:
return ResolveAsMethod(memberReference); return ResolveAsMethod(memberReference);
default: default:
throw new NotSupportedException(); throw new ArgumentOutOfRangeException(nameof(memberReference), "HandleKind not allowed: " + memberReference.Kind);
} }
} }

3
ICSharpCode.Decompiler/TypeSystem/MetadataAssembly.cs

@ -588,6 +588,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
{ {
switch (type.Implementation.Kind) { switch (type.Implementation.Kind) {
case HandleKind.AssemblyFile: case HandleKind.AssemblyFile:
// TODO : Resolve assembly file (module)...
return this; return this;
case HandleKind.ExportedType: case HandleKind.ExportedType:
var outerType = metadata.GetExportedType((ExportedTypeHandle)type.Implementation); var outerType = metadata.GetExportedType((ExportedTypeHandle)type.Implementation);
@ -602,7 +603,7 @@ namespace ICSharpCode.Decompiler.TypeSystem
} }
return null; return null;
default: default:
throw new NotSupportedException(); throw new BadImageFormatException("Expected implementation to be either an AssemblyFile, ExportedType or AssemblyReference.");
} }
} }
} }

Loading…
Cancel
Save