Skip to content

Commit ff2e3be

Browse files
WIP add missing check for ctor parameters
1 parent 75b099f commit ff2e3be

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

ICSharpCode.Decompiler/CSharp/CallBuilder.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1062,9 +1062,15 @@ bool ExtractArguments(out IType elementType, out List<IParameter> parameters, ou
10621062
parameters = new();
10631063
return true;
10641064
}
1065+
// match System.ReadOnlySpan<T>..ctor(ref readonly T)
10651066
if (paramsArgument.Expression is ObjectCreateExpression oce
1066-
&& method is { IsConstructor: true, DeclaringType: { TypeArguments: [var type2] } declaringType }
1067-
&& declaringType.IsKnownType(KnownTypeCode.ReadOnlySpanOfT))
1067+
&& method is {
1068+
IsConstructor: true,
1069+
Parameters: [{ ReferenceKind: ReferenceKind.RefReadOnly, Type: ByReferenceType { ElementType: var paramType } }],
1070+
DeclaringType: { TypeArguments: [var type2] } declaringType
1071+
}
1072+
&& declaringType.IsKnownType(KnownTypeCode.ReadOnlySpanOfT)
1073+
&& paramType.Equals(type2))
10681074
{
10691075
elementType = type2;
10701076
arguments = new() { new TranslatedExpression(oce.Arguments.Single()) };

0 commit comments

Comments
 (0)