Browse Source

Fix #3480: assert at ExpressionBuilder.BuildArrayInitializerExpression with properties that are not C# indexers, but parameterized properties.

pull/3592/head
Siegfried Pammer 3 months ago
parent
commit
d736b02e2b
  1. 6
      ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs

6
ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs

@ -3513,11 +3513,11 @@ namespace ICSharpCode.Decompiler.CSharp
); );
break; break;
case IL.Transforms.AccessPathKind.Setter: case IL.Transforms.AccessPathKind.Setter:
Debug.Assert(lastElement.Member is IProperty || lastElement.Member is IField); Debug.Assert(lastElement.Member is IProperty or IField);
if (lastElement.Indices?.Length > 0) if (lastElement.Indices?.Length is var indices and > 0)
{ {
var property = (IProperty)lastElement.Member; var property = (IProperty)lastElement.Member;
Debug.Assert(property.IsIndexer); Debug.Assert(property.Parameters.Count == indices);
Debug.Assert(property.Setter != null, $"Indexer property {property} has no setter"); Debug.Assert(property.Setter != null, $"Indexer property {property} has no setter");
elementsStack.Peek().Add( elementsStack.Peek().Add(
new CallBuilder(this, typeSystem, settings) new CallBuilder(this, typeSystem, settings)

Loading…
Cancel
Save