Browse Source

Add more asserts and ToStrings around the FakeProperty.Setter problem

pull/2792/head
Standa Lukeš 3 years ago
parent
commit
93eecf93a5
No known key found for this signature in database
GPG Key ID: DEDDF275FAB0910F
  1. 1
      ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs
  2. 10
      ICSharpCode.Decompiler/TypeSystem/Implementation/FakeMember.cs

1
ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs

@ -3340,6 +3340,7 @@ namespace ICSharpCode.Decompiler.CSharp @@ -3340,6 +3340,7 @@ namespace ICSharpCode.Decompiler.CSharp
{
var property = (IProperty)lastElement.Member;
Debug.Assert(property.IsIndexer);
Debug.Assert(property.Setter != null, $"Indexer property {property} has no setter");
elementsStack.Peek().Add(
new CallBuilder(this, typeSystem, settings)
.BuildDictionaryInitializerExpression(lastElement.OpCode, property.Setter, initObjRR, GetIndices(lastElement.Indices, indexVariables).ToList(), info.Values.Single())

10
ICSharpCode.Decompiler/TypeSystem/Implementation/FakeMember.cs

@ -199,6 +199,16 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation @@ -199,6 +199,16 @@ namespace ICSharpCode.Decompiler.TypeSystem.Implementation
public bool IsIndexer { get; set; }
public bool ReturnTypeIsRefReadOnly => false;
public IReadOnlyList<IParameter> Parameters { get; set; }
public override string ToString() =>
"FakeProperty " + ReturnType + " " + DeclaringType.Name + "." + Name +
(Parameters.Count == 0
? ""
: "[" + string.Join(", ", Parameters) + "]") +
" { " +
(CanGet ? "get; " : "") +
(CanSet ? "set; " : "") +
"}";
}
sealed class FakeEvent : FakeMember, IEvent

Loading…
Cancel
Save