Skip to content

TranslateArrayInitializer crashes with out of order array init #2655

@yyjdelete

Description

@yyjdelete

Steps to reproduce

public int[] Test()
{
	int[] array = new int[3];
	array[0] = 0;
	array[2] = 1;
	array[1] = 2;
	return array;
}

Error message shown

System.InvalidOperationException: Stack empty.
   at System.Collections.Generic.Stack`1.ThrowForEmptyStack()
   at System.Collections.Generic.Stack`1.Peek()
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.TranslateArrayInitializer(Block block)
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.VisitBlock(Block block, TranslationContext context)
   at ICSharpCode.Decompiler.IL.Block.AcceptVisitor[C,T](ILVisitor`2 visitor, C context)
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.Translate(ILInstruction inst, IType typeHint)
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.VisitStLoc(StLoc inst, TranslationContext context)
   at ICSharpCode.Decompiler.IL.StLoc.AcceptVisitor[C,T](ILVisitor`2 visitor, C context)
   at ICSharpCode.Decompiler.CSharp.ExpressionBuilder.Translate(ILInstruction inst, IType typeHint)
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.VisitStLoc(StLoc inst)
   at ICSharpCode.Decompiler.IL.StLoc.AcceptVisitor[T](ILVisitor`1 visitor)
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.Convert(ILInstruction inst)
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.ConvertBlockContainer(BlockStatement blockStatement, BlockContainer container, IEnumerable`1 blocks, Boolean isLoop)
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.ConvertBlockContainer(BlockContainer container, Boolean isLoop)
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.VisitBlockContainer(BlockContainer container)
   at ICSharpCode.Decompiler.IL.BlockContainer.AcceptVisitor[T](ILVisitor`1 visitor)
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.Convert(ILInstruction inst)
   at ICSharpCode.Decompiler.CSharp.StatementBuilder.ConvertAsBlock(ILInstruction inst)
   at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.DecompileBody(IMethod method, EntityDeclaration entityDecl, DecompileRun decompileRun, ITypeResolveContext decompilationContext)

Details

  • Product in use: ILSpy
  • Version in use: 7.2.0.6844/master

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions