Skip to content

Commit 842e286

Browse files
committed
Add/remove more tests, fix generics indexing bug
1 parent 629f60e commit 842e286

File tree

2 files changed

+123
-19
lines changed

2 files changed

+123
-19
lines changed

src/libraries/System.Private.CoreLib/src/System/Reflection/NullabilityInfoContext.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ namespace System.Reflection
1313
public sealed class NullabilityInfoContext
1414
{
1515
private const string CompilerServicesNameSpace = "System.Runtime.CompilerServices";
16+
private const string ValueTuple = nameof(System.ValueTuple);
1617
private readonly Dictionary<Module, NotAnnotatedStatus> _publicOnlyModules = new();
1718
private readonly Dictionary<MemberInfo, NullabilityState> _context = new();
1819

@@ -385,12 +386,14 @@ private NullabilityInfo GetNullabilityInfo(MemberInfo memberInfo, Type type, ILi
385386

386387
for (int i = 0, offset = 0; i < genericArguments.Length; i++)
387388
{
388-
if (!genericArguments[i].IsValueType)
389+
Type t = Nullable.GetUnderlyingType(genericArguments[i]) ?? genericArguments[i];
390+
391+
if (!t.IsValueType || t.Name.Contains(ValueTuple))
389392
{
390393
offset++;
391394
}
392395

393-
genericArgumentsState[i] = GetNullabilityInfo(memberInfo, genericArguments[i], customAttributes, offset);
396+
genericArgumentsState[i] = GetNullabilityInfo(memberInfo, genericArguments[i], customAttributes, index + offset);
394397
}
395398
}
396399

0 commit comments

Comments
 (0)