ilspycmd -t Microsoft.CodeAnalysis.LanguageServer.LspWorkspaceManager \ ✔
"/Users/noahpeterson/.vscode/extensions2/ms-dotnettools.csharp-2.120.3-darwin-arm64/.roslyn/Microsoft.CodeAnalysis.LanguageServer.Protocol.dll"
Error decompiling @06000E51 Microsoft.CodeAnalysis.LanguageServer.LspWorkspaceManager.GetLspSolutionsAsync
in assembly "/Users/noahpeterson/.vscode/extensions2/ms-dotnettools.csharp-2.120.3-darwin-arm64/.roslyn/Microsoft.CodeAnalysis.LanguageServer.Protocol.dll"
---> System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')
at System.ThrowHelper.ThrowArgumentOutOfRange_IndexMustBeLessException() in offset 0
at System.Collections.Generic.List`1.get_Item(Int32 index) in offset 9
at ICSharpCode.Decompiler.IL.InstructionCollection`1.get_Item(Int32 index) in InstructionCollection.cs:line 46
at ICSharpCode.Decompiler.CSharp.StatementBuilder.<TranslateDeconstructionDesignation>g__ConstructDesignation|43_0(MatchInstruction matchInstruction, <>c__DisplayClass43_0&) in StatementBuilder.cs:line 824
at ICSharpCode.Decompiler.CSharp.StatementBuilder.TranslateDeconstructionDesignation(DeconstructInstruction inst, Boolean isForeach) in StatementBuilder.cs:line 812
at ICSharpCode.Decompiler.CSharp.StatementBuilder.TransformToForeach(UsingInstruction inst, Expression resource) in StatementBuilder.cs:line 742
at ICSharpCode.Decompiler.CSharp.StatementBuilder.VisitUsingInstruction(UsingInstruction inst) in StatementBuilder.cs:line 530
at ICSharpCode.Decompiler.IL.UsingInstruction.AcceptVisitor[T](ILVisitor`1 visitor) in Instructions.cs:line 2076
at ICSharpCode.Decompiler.CSharp.StatementBuilder.Convert(ILInstruction inst) in StatementBuilder.cs:line 79
at ICSharpCode.Decompiler.CSharp.StatementBuilder.ConvertBlockContainer(BlockStatement blockStatement, BlockContainer container, IEnumerable`1 blocks, Boolean isLoop) in StatementBuilder.cs:line 1450
at ICSharpCode.Decompiler.CSharp.StatementBuilder.ConvertBlockContainer(BlockContainer container, Boolean isLoop) in StatementBuilder.cs:line 1344
at ICSharpCode.Decompiler.CSharp.StatementBuilder.VisitBlockContainer(BlockContainer container) in StatementBuilder.cs:line 1230
at ICSharpCode.Decompiler.IL.BlockContainer.AcceptVisitor[T](ILVisitor`1 visitor) in Instructions.cs:line 854
at ICSharpCode.Decompiler.CSharp.StatementBuilder.Convert(ILInstruction inst) in StatementBuilder.cs:line 79
at ICSharpCode.Decompiler.CSharp.StatementBuilder.ConvertAsBlock(ILInstruction inst) in StatementBuilder.cs:line 84
at ICSharpCode.Decompiler.CSharp.StatementBuilder.<DeclareLocalFunctions>g__TranslateFunction|61_0(ILFunction function) in StatementBuilder.cs:line 1410
at ICSharpCode.Decompiler.CSharp.StatementBuilder.DeclareLocalFunctions(ILFunction currentFunction, BlockContainer container, BlockStatement blockStatement) in StatementBuilder.cs:line 1381
at ICSharpCode.Decompiler.CSharp.StatementBuilder.ConvertBlockContainer(BlockContainer container, Boolean isLoop) in StatementBuilder.cs:line 1345
at ICSharpCode.Decompiler.CSharp.StatementBuilder.VisitBlockContainer(BlockContainer container) in StatementBuilder.cs:line 1230
at ICSharpCode.Decompiler.IL.BlockContainer.AcceptVisitor[T](ILVisitor`1 visitor) in Instructions.cs:line 854
at ICSharpCode.Decompiler.CSharp.StatementBuilder.Convert(ILInstruction inst) in StatementBuilder.cs:line 79
at ICSharpCode.Decompiler.CSharp.StatementBuilder.ConvertAsBlock(ILInstruction inst) in StatementBuilder.cs:line 84
at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.DecompileBody(IMethod method, EntityDeclaration entityDecl, DecompileRun decompileRun, ITypeResolveContext decompilationContext, ExtensionInfo extensionInfo) in CSharpDecompiler.cs:line 2098
-- continuing with outer exception (ICSharpCode.Decompiler.DecompilerException) --
at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.DecompileBody(IMethod method, EntityDeclaration entityDecl, DecompileRun decompileRun, ITypeResolveContext decompilationContext, ExtensionInfo extensionInfo) in CSharpDecompiler.cs:line 2113
at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.DoDecompile(IMethod method, DecompileRun decompileRun, ITypeResolveContext decompilationContext, ExtensionInfo extensionInfo) in CSharpDecompiler.cs:line 1953
at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.<DoDecompile>g__DoDecompileMember|76_0(IEntity entity, RecordDecompiler recordDecompiler, PartialTypeInfo partialType, ExtensionInfo extensionInfo, <>c__DisplayClass76_0&) in CSharpDecompiler.cs:line 1789
at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.DoDecompile(ITypeDefinition typeDef, DecompileRun decompileRun, ITypeResolveContext decompilationContext, Boolean asExtension) in CSharpDecompiler.cs:line 1641
at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.DoDecompileTypes(IEnumerable`1 types, DecompileRun decompileRun, ITypeResolveContext decompilationContext, SyntaxTree syntaxTree) in CSharpDecompiler.cs:line 805
at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.DecompileType(FullTypeName fullTypeName) in CSharpDecompiler.cs:line 1195
at ICSharpCode.Decompiler.CSharp.CSharpDecompiler.DecompileTypeAsString(FullTypeName fullTypeName) in CSharpDecompiler.cs:line 1208
at ICSharpCode.ILSpyCmd.ILSpyCmdProgram.Decompile(String assemblyFileName, TextWriter output, String typeName) in IlspyCmdProgram.cs:line 595
at ICSharpCode.ILSpyCmd.ILSpyCmdProgram.<OnExecuteAsync>g__PerformPerFileAction|99_0(String fileName, <>c__DisplayClass99_0&, <>c__DisplayClass99_1&) in IlspyCmdProgram.cs:line 351
at ICSharpCode.ILSpyCmd.ILSpyCmdProgram.<OnExecuteAsync>d__99.MoveNext() in IlspyCmdProgram.cs:line 258
using System.Collections.Generic;
struct Inner { public void Deconstruct(out int a, out int b) { a = 0; b = 0; } }
struct Outer { public void Deconstruct(out int x, out Inner inner) { x = 0; inner = default; } }
class CForEach // -> crashes ConstructDesignation (StatementBuilder.cs:824)
{
public int M(IEnumerable<Outer> items)
{
int n = 0;
foreach (var (x, (a, b)) in items) n += x + a + b;
return n;
}
}
class CAssign // -> crashes ConstructTuple (ExpressionBuilder.cs:4747)
{
public int M(Outer o)
{
var (x, (a, b)) = o;
return x + a + b;
}
}
Steps to reproduce
ilspycmd -t Microsoft.CodeAnalysis.LanguageServer.LspWorkspaceManager Microsoft.CodeAnalysis.LanguageServer.Protocol.dll, ORilspycmd -t CForEach M.dllORilspycmd -t CAssign M.dllError message shown
Details
ilspycmdilspycmd: 11.0.0.0,ICSharpCode.Decompiler: 11.0.0.0Minimum viable reproduction:
M.cs
M.csproj:
net8.0,<Optimize>true</Optimize>,OutputType=Library.