Browse Source

Fix #278: Decompiling generic multidimensional array access throws exception

pull/285/head
Zohar Kelrich 14 years ago committed by Daniel Grunwald
parent
commit
470caaa6bb
  1. 12
      ICSharpCode.Decompiler/ILAst/TypeAnalysis.cs
  2. 5
      ICSharpCode.Decompiler/Tests/Generics.cs

12
ICSharpCode.Decompiler/ILAst/TypeAnalysis.cs

@ -916,14 +916,12 @@ namespace ICSharpCode.Decompiler.ILAst @@ -916,14 +916,12 @@ namespace ICSharpCode.Decompiler.ILAst
}
GenericParameter gp = type as GenericParameter;
if (gp != null) {
if (gp.Owner.GenericParameterType == GenericParameterType.Method) {
if (member.DeclaringType is ArrayType) {
return ((ArrayType)member.DeclaringType).ElementType;
} else if (gp.Owner.GenericParameterType == GenericParameterType.Method) {
return ((GenericInstanceMethod)member).GenericArguments[gp.Position];
} else {
if (member.DeclaringType is ArrayType) {
return ((ArrayType)member.DeclaringType).ElementType;
} else {
return ((GenericInstanceType)member.DeclaringType).GenericArguments[gp.Position];
}
} else {
return ((GenericInstanceType)member.DeclaringType).GenericArguments[gp.Position];
}
}
return type;

5
ICSharpCode.Decompiler/Tests/Generics.cs

@ -97,6 +97,11 @@ public static class Generics @@ -97,6 +97,11 @@ public static class Generics
{
}
private static void MultidimensionalArray<T>(T[,] array)
{
array[0, 0] = array[0, 1];
}
public static Dictionary<string, string>.KeyCollection.Enumerator GetEnumerator(Dictionary<string, string> d, Generics.MyArray<string>.NestedClass<int> nc)
{
// Tests references to inner classes in generic classes

Loading…
Cancel
Save