Skip to content

Commit d612991

Browse files
thomhurstclaude
andcommitted
fix: add DynamicallyAccessedMembers AOT annotations to Type parameters
Address PR review feedback: - Add [DynamicallyAccessedMembers] attribute to Type parameters in non-generic GetOrCreate overloads for Native AOT compatibility - Update public API snapshots with the new signatures Co-Authored-By: Claude Opus 4.5 <[email protected]>
1 parent 5880510 commit d612991

5 files changed

+23
-10
lines changed

TUnit.Core/SharedDataSources.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System.Diagnostics.CodeAnalysis;
12
using TUnit.Core.Helpers;
23

34
namespace TUnit.Core;
@@ -105,7 +106,13 @@ public static T GetOrCreate<T>(SharedType sharedType, DataGeneratorMetadata data
105106
/// Thrown when <paramref name="key"/> is null/empty and <paramref name="sharedType"/> is <see cref="SharedType.Keyed"/>.
106107
/// </exception>
107108
/// <exception cref="ArgumentOutOfRangeException">Thrown when <paramref name="sharedType"/> is not a valid value.</exception>
108-
public static object? GetOrCreate(SharedType sharedType, Type type, DataGeneratorMetadata dataGeneratorMetadata, string? key, Func<object?> factory)
109+
public static object? GetOrCreate(
110+
SharedType sharedType,
111+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)]
112+
Type type,
113+
DataGeneratorMetadata dataGeneratorMetadata,
114+
string? key,
115+
Func<object?> factory)
109116
{
110117
var testClassType = TestClassTypeHelper.GetTestClassType(dataGeneratorMetadata);
111118
return GetOrCreate(sharedType, type, testClassType, key, factory);
@@ -125,7 +132,13 @@ public static T GetOrCreate<T>(SharedType sharedType, DataGeneratorMetadata data
125132
/// or when <paramref name="key"/> is null/empty and <paramref name="sharedType"/> is <see cref="SharedType.Keyed"/>.
126133
/// </exception>
127134
/// <exception cref="ArgumentOutOfRangeException">Thrown when <paramref name="sharedType"/> is not a valid value.</exception>
128-
public static object? GetOrCreate(SharedType sharedType, Type type, Type? testClassType, string? key, Func<object?> factory)
135+
public static object? GetOrCreate(
136+
SharedType sharedType,
137+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)]
138+
Type type,
139+
Type? testClassType,
140+
string? key,
141+
Func<object?> factory)
129142
{
130143
_ = type ?? throw new ArgumentNullException(nameof(type));
131144
_ = factory ?? throw new ArgumentNullException(nameof(factory));

TUnit.PublicAPI/Tests.Core_Library_Has_No_API_Changes.DotNet10_0.verified.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1200,8 +1200,8 @@ namespace
12001200
}
12011201
public static class SharedDataSources
12021202
{
1203-
public static object? GetOrCreate(.SharedType sharedType, type, ? testClassType, string? key, <object?> factory) { }
1204-
public static object? GetOrCreate(.SharedType sharedType, type, .DataGeneratorMetadata dataGeneratorMetadata, string? key, <object?> factory) { }
1203+
public static object? GetOrCreate(.SharedType sharedType, [.(..None | ..PublicParameterlessConstructor | ..PublicConstructors | ..NonPublicConstructors)] type, ? testClassType, string? key, <object?> factory) { }
1204+
public static object? GetOrCreate(.SharedType sharedType, [.(..None | ..PublicParameterlessConstructor | ..PublicConstructors | ..NonPublicConstructors)] type, .DataGeneratorMetadata dataGeneratorMetadata, string? key, <object?> factory) { }
12051205
public static T GetOrCreate<T>(.SharedType sharedType, ? testClassType, string? key)
12061206
where T : new() { }
12071207
public static T GetOrCreate<T>(.SharedType sharedType, .DataGeneratorMetadata dataGeneratorMetadata, string? key)

TUnit.PublicAPI/Tests.Core_Library_Has_No_API_Changes.DotNet8_0.verified.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1200,8 +1200,8 @@ namespace
12001200
}
12011201
public static class SharedDataSources
12021202
{
1203-
public static object? GetOrCreate(.SharedType sharedType, type, ? testClassType, string? key, <object?> factory) { }
1204-
public static object? GetOrCreate(.SharedType sharedType, type, .DataGeneratorMetadata dataGeneratorMetadata, string? key, <object?> factory) { }
1203+
public static object? GetOrCreate(.SharedType sharedType, [.(..None | ..PublicParameterlessConstructor | ..PublicConstructors | ..NonPublicConstructors)] type, ? testClassType, string? key, <object?> factory) { }
1204+
public static object? GetOrCreate(.SharedType sharedType, [.(..None | ..PublicParameterlessConstructor | ..PublicConstructors | ..NonPublicConstructors)] type, .DataGeneratorMetadata dataGeneratorMetadata, string? key, <object?> factory) { }
12051205
public static T GetOrCreate<T>(.SharedType sharedType, ? testClassType, string? key)
12061206
where T : new() { }
12071207
public static T GetOrCreate<T>(.SharedType sharedType, .DataGeneratorMetadata dataGeneratorMetadata, string? key)

TUnit.PublicAPI/Tests.Core_Library_Has_No_API_Changes.DotNet9_0.verified.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1200,8 +1200,8 @@ namespace
12001200
}
12011201
public static class SharedDataSources
12021202
{
1203-
public static object? GetOrCreate(.SharedType sharedType, type, ? testClassType, string? key, <object?> factory) { }
1204-
public static object? GetOrCreate(.SharedType sharedType, type, .DataGeneratorMetadata dataGeneratorMetadata, string? key, <object?> factory) { }
1203+
public static object? GetOrCreate(.SharedType sharedType, [.(..None | ..PublicParameterlessConstructor | ..PublicConstructors | ..NonPublicConstructors)] type, ? testClassType, string? key, <object?> factory) { }
1204+
public static object? GetOrCreate(.SharedType sharedType, [.(..None | ..PublicParameterlessConstructor | ..PublicConstructors | ..NonPublicConstructors)] type, .DataGeneratorMetadata dataGeneratorMetadata, string? key, <object?> factory) { }
12051205
public static T GetOrCreate<T>(.SharedType sharedType, ? testClassType, string? key)
12061206
where T : new() { }
12071207
public static T GetOrCreate<T>(.SharedType sharedType, .DataGeneratorMetadata dataGeneratorMetadata, string? key)

TUnit.PublicAPI/Tests.Core_Library_Has_No_API_Changes.Net4_7.verified.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1158,8 +1158,8 @@ namespace
11581158
}
11591159
public static class SharedDataSources
11601160
{
1161-
public static object? GetOrCreate(.SharedType sharedType, type, ? testClassType, string? key, <object?> factory) { }
1162-
public static object? GetOrCreate(.SharedType sharedType, type, .DataGeneratorMetadata dataGeneratorMetadata, string? key, <object?> factory) { }
1161+
public static object? GetOrCreate(.SharedType sharedType, [.(..None | ..PublicParameterlessConstructor | ..PublicConstructors | ..NonPublicConstructors)] type, ? testClassType, string? key, <object?> factory) { }
1162+
public static object? GetOrCreate(.SharedType sharedType, [.(..None | ..PublicParameterlessConstructor | ..PublicConstructors | ..NonPublicConstructors)] type, .DataGeneratorMetadata dataGeneratorMetadata, string? key, <object?> factory) { }
11631163
public static T GetOrCreate<T>(.SharedType sharedType, ? testClassType, string? key)
11641164
where T : new() { }
11651165
public static T GetOrCreate<T>(.SharedType sharedType, .DataGeneratorMetadata dataGeneratorMetadata, string? key)

0 commit comments

Comments
 (0)