Skip to content

Commit 1bf4caf

Browse files
committed
Reflection nullability API: improve test coverage, fix bug found (#58479)
* Add/remove some tests, fix generics indexing bug
1 parent 84f7073 commit 1bf4caf

File tree

2 files changed

+155
-32
lines changed

2 files changed

+155
-32
lines changed

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -385,12 +385,14 @@ private NullabilityInfo GetNullabilityInfo(MemberInfo memberInfo, Type type, ILi
385385

386386
for (int i = 0, offset = 0; i < genericArguments.Length; i++)
387387
{
388-
if (!genericArguments[i].IsValueType)
388+
Type t = Nullable.GetUnderlyingType(genericArguments[i]) ?? genericArguments[i];
389+
390+
if (!t.IsValueType || t.IsGenericType)
389391
{
390392
offset++;
391393
}
392394

393-
genericArgumentsState[i] = GetNullabilityInfo(memberInfo, genericArguments[i], customAttributes, offset);
395+
genericArgumentsState[i] = GetNullabilityInfo(memberInfo, genericArguments[i], customAttributes, index + offset);
394396
}
395397
}
396398

@@ -480,7 +482,7 @@ private void CheckGenericParameters(NullabilityInfo nullability, MemberInfo meta
480482
{
481483
NullabilityState state = nullability.ReadState;
482484

483-
if (!ParseNullableState(metaType.GetCustomAttributesData(), 0, ref state))
485+
if (state == NullabilityState.NotNull && !ParseNullableState(metaType.GetCustomAttributesData(), 0, ref state))
484486
{
485487
state = GetNullableContext(metaType);
486488
}

0 commit comments

Comments
 (0)