Browse Source

Fix order of array specifiers when creating nested arrays.

pull/70/head
Daniel Grunwald 15 years ago
parent
commit
24fdee7808
  1. 19
      ICSharpCode.Decompiler/Ast/AstMethodBodyBuilder.cs
  2. 5
      ICSharpCode.Decompiler/Tests/MultidimensionalArray.cs

19
ICSharpCode.Decompiler/Ast/AstMethodBodyBuilder.cs

@ -328,18 +328,21 @@ namespace Decompiler
#endregion #endregion
#region Arrays #region Arrays
case Code.Newarr: case Code.Newarr:
{
var ace = new Ast.ArrayCreateExpression();
ace.Type = operandAsTypeRef;
ace.Arguments.Add(arg1);
return ace;
}
case (Code)ILCode.InitArray: case (Code)ILCode.InitArray:
{ {
var ace = new Ast.ArrayCreateExpression(); var ace = new Ast.ArrayCreateExpression();
ace.Type = operandAsTypeRef; ace.Type = operandAsTypeRef;
ace.Initializer = new ArrayInitializerExpression(); ComposedType ct = operandAsTypeRef as ComposedType;
ace.Initializer.Elements.AddRange(args); if (ct != null) {
// change "new (int[,])[10] to new int[10][,]"
ct.ArraySpecifiers.MoveTo(ace.AdditionalArraySpecifiers);
}
if (opCode == ILCode.InitArray) {
ace.Initializer = new ArrayInitializerExpression();
ace.Initializer.Elements.AddRange(args);
} else {
ace.Arguments.Add(arg1);
}
return ace; return ace;
} }
case Code.Ldlen: case Code.Ldlen:

5
ICSharpCode.Decompiler/Tests/MultidimensionalArray.cs

@ -24,4 +24,9 @@ public static class MultidimensionalArray
b[5, 3][2] = y; b[5, 3][2] = y;
} }
} }
public static int[][,] MakeArray()
{
return new int[10][,];
}
} }

Loading…
Cancel
Save