Skip to content

Commit 5cddc70

Browse files
committed
Do not rely on pragma's for AOT, move all to UnconditionalSuppressMessage
1 parent 0701e2c commit 5cddc70

File tree

2 files changed

+50
-8
lines changed

2 files changed

+50
-8
lines changed

src/Elastic.Transport/Components/Serialization/SystemTextJsonSerializer.cs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111

1212
namespace Elastic.Transport;
1313

14-
#pragma warning disable IL2026, IL3050 // Implementing classes must make sure to use an AOT compatible JsonSerializerOptions.TypeInfoResolver
15-
1614
/// <summary>
1715
/// An abstract implementation of a transport <see cref="Serializer"/> which serializes using the Microsoft
1816
/// <c>System.Text.Json</c> library.
@@ -50,6 +48,8 @@ public override T Deserialize<T>(Stream stream)
5048
}
5149

5250
/// <inheritdoc />
51+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
52+
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
5353
public override object? Deserialize(Type type, Stream stream)
5454
{
5555
if (TryReturnDefault(stream, out object deserialize))
@@ -70,6 +70,8 @@ public override ValueTask<T> DeserializeAsync<T>(Stream stream, CancellationToke
7070
}
7171

7272
/// <inheritdoc />
73+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
74+
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
7375
public override ValueTask<object?> DeserializeAsync(Type type, Stream stream, CancellationToken cancellationToken = default)
7476
{
7577
if (TryReturnDefault(stream, out object deserialize))
@@ -79,22 +81,30 @@ public override ValueTask<T> DeserializeAsync<T>(Stream stream, CancellationToke
7981
}
8082

8183
/// <inheritdoc />
84+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
85+
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
8286
public override void Serialize<T>(T data, Stream stream,
8387
SerializationFormatting formatting = SerializationFormatting.None) =>
8488
JsonSerializer.Serialize(stream, data, GetJsonSerializerOptions(formatting));
8589

8690
/// <inheritdoc />
91+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
92+
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
8793
public override void Serialize(object? data, Type type, Stream stream, SerializationFormatting formatting = SerializationFormatting.None,
8894
CancellationToken cancellationToken = default) =>
8995
JsonSerializer.Serialize(stream, data, type, GetJsonSerializerOptions(formatting));
9096

9197
/// <inheritdoc />
98+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
99+
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
92100
public override Task SerializeAsync<T>(T data, Stream stream,
93101
SerializationFormatting formatting = SerializationFormatting.None,
94102
CancellationToken cancellationToken = default) =>
95103
JsonSerializer.SerializeAsync(stream, data, GetJsonSerializerOptions(formatting), cancellationToken);
96104

97105
/// <inheritdoc />
106+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
107+
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
98108
public override Task SerializeAsync(object? data, Type type, Stream stream, SerializationFormatting formatting = SerializationFormatting.None,
99109
CancellationToken cancellationToken = default) =>
100110
JsonSerializer.SerializeAsync(stream, data, type, GetJsonSerializerOptions(formatting), cancellationToken);
@@ -140,5 +150,3 @@ private static bool TryReturnDefault<T>(Stream? stream, out T deserialize)
140150
return (stream is null) || stream == Stream.Null || (stream.CanSeek && stream.Length == 0);
141151
}
142152
}
143-
144-
#pragma warning restore IL2026, IL3050

src/Elastic.Transport/Components/Serialization/TransportSerializerExtensions.cs

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111

1212
namespace Elastic.Transport.Extensions;
1313

14-
#pragma warning disable IL2026, IL3050 // SystemTextJsonSerializer implementations must make sure to use an AOT compatible JsonSerializerOptions.TypeInfoResolver
15-
1614
/// <summary>
1715
/// A set of handy extension methods for <see cref="Serializer"/>
1816
/// </summary>
@@ -42,6 +40,8 @@ public static byte[] SerializeToBytes<T>(
4240
/// that yields memory streams backed by pooled byte arrays.
4341
/// </param>
4442
/// <param name="formatting"><inheritdoc cref="SerializationFormatting" path="/summary"/></param>
43+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
44+
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
4545
public static byte[] SerializeToBytes<T>(
4646
this Serializer serializer,
4747
T? data,
@@ -86,6 +86,8 @@ public static byte[] SerializeToBytes(
8686
/// that yields memory streams backed by pooled byte arrays.
8787
/// </param>
8888
/// <param name="formatting"><inheritdoc cref="SerializationFormatting" path="/summary"/></param>
89+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
90+
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
8991
public static byte[] SerializeToBytes(
9092
this Serializer serializer,
9193
object? data,
@@ -130,6 +132,8 @@ public static string SerializeToString<T>(
130132
/// that yields memory streams backed by pooled byte arrays.
131133
/// </param>
132134
/// <param name="formatting"><inheritdoc cref="SerializationFormatting" path="/summary"/></param>
135+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
136+
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
133137
public static string SerializeToString<T>(
134138
this Serializer serializer,
135139
T? data,
@@ -177,6 +181,8 @@ public static string SerializeToString(
177181
/// that yields memory streams backed by pooled byte arrays.
178182
/// </param>
179183
/// <param name="formatting"><inheritdoc cref="SerializationFormatting" path="/summary"/></param>
184+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
185+
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
180186
public static string SerializeToString(
181187
this Serializer serializer,
182188
object? data,
@@ -229,6 +235,8 @@ public static void Serialize<T>(
229235
/// that yields memory streams backed by pooled byte arrays.
230236
/// </param>
231237
/// <param name="formatting"><inheritdoc cref="SerializationFormatting" path="/summary"/></param>
238+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
239+
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
232240
public static void Serialize<T>(
233241
this Serializer serializer,
234242
T? data,
@@ -288,6 +296,8 @@ public static void Serialize(
288296
/// that yields memory streams backed by pooled byte arrays.
289297
/// </param>
290298
/// <param name="formatting"><inheritdoc cref="SerializationFormatting" path="/summary"/></param>
299+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
300+
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
291301
public static void Serialize(
292302
this Serializer serializer,
293303
object? data,
@@ -329,6 +339,8 @@ public static void Serialize(
329339
/// that yields memory streams backed by pooled byte arrays.
330340
/// </param>
331341
/// <returns>The deserialized data.</returns>
342+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
343+
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
332344
public static T? Deserialize<T>(
333345
this Serializer serializer,
334346
string input,
@@ -358,6 +370,8 @@ public static void Serialize(
358370
/// that yields memory streams backed by pooled byte arrays.
359371
/// </param>
360372
/// <returns>The deserialized data.</returns>
373+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
374+
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
361375
public static object? Deserialize(
362376
this Serializer serializer,
363377
string input,
@@ -388,6 +402,8 @@ public static void Serialize(
388402
/// that yields memory streams backed by pooled byte arrays.
389403
/// </param>
390404
/// <returns>The deserialized data.</returns>
405+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
406+
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
391407
public static T? Deserialize<T>(
392408
this Serializer serializer,
393409
ReadOnlySpan<byte> span,
@@ -417,6 +433,8 @@ public static void Serialize(
417433
/// that yields memory streams backed by pooled byte arrays.
418434
/// </param>
419435
/// <returns>The deserialized data.</returns>
436+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
437+
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
420438
public static object? Deserialize(
421439
this Serializer serializer,
422440
ReadOnlySpan<byte> span,
@@ -447,6 +465,8 @@ public static void Serialize(
447465
/// that yields memory streams backed by pooled byte arrays.
448466
/// </param>
449467
/// <returns>The deserialized data.</returns>
468+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
469+
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
450470
public static T? Deserialize<T>(
451471
this Serializer serializer,
452472
ReadOnlySpan<char> span,
@@ -476,6 +496,8 @@ public static void Serialize(
476496
/// that yields memory streams backed by pooled byte arrays.
477497
/// </param>
478498
/// <returns>The deserialized data.</returns>
499+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
500+
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
479501
public static object? Deserialize(
480502
this Serializer serializer,
481503
ReadOnlySpan<char> span,
@@ -506,6 +528,8 @@ public static void Serialize(
506528
/// that yields memory streams backed by pooled byte arrays.
507529
/// </param>
508530
/// <returns>The deserialized data.</returns>
531+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
532+
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
509533
public static T? Deserialize<T>(
510534
this Serializer serializer,
511535
ref Utf8JsonReader reader,
@@ -542,6 +566,8 @@ public static void Serialize(
542566
/// that yields memory streams backed by pooled byte arrays.
543567
/// </param>
544568
/// <returns>The deserialized data.</returns>
569+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
570+
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
545571
public static object? Deserialize(
546572
this Serializer serializer,
547573
ref Utf8JsonReader reader,
@@ -579,6 +605,8 @@ public static void Serialize(
579605
/// that yields memory streams backed by pooled byte arrays.
580606
/// </param>
581607
/// <returns>The deserialized data.</returns>
608+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
609+
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
582610
public static T? Deserialize<T>(
583611
this Serializer serializer,
584612
JsonNode node,
@@ -613,6 +641,8 @@ public static void Serialize(
613641
/// that yields memory streams backed by pooled byte arrays.
614642
/// </param>
615643
/// <returns>The deserialized data.</returns>
644+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
645+
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
616646
public static object? Deserialize(
617647
this Serializer serializer,
618648
JsonNode node,
@@ -648,6 +678,8 @@ public static void Serialize(
648678
/// that yields memory streams backed by pooled byte arrays.
649679
/// </param>
650680
/// <returns>The deserialized data.</returns>
681+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
682+
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
651683
public static T? Deserialize<T>(
652684
this Serializer serializer,
653685
JsonElement node,
@@ -682,6 +714,8 @@ public static void Serialize(
682714
/// that yields memory streams backed by pooled byte arrays.
683715
/// </param>
684716
/// <returns>The deserialized data.</returns>
717+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
718+
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
685719
public static object? Deserialize(
686720
this Serializer serializer,
687721
JsonElement node,
@@ -713,6 +747,8 @@ public static void Serialize(
713747
/// <param name="serializer"><inheritdoc cref="Serializer" path="/summary"/></param>
714748
/// <param name="options">Receives the <see cref="JsonSerializerOptions"/>.</param>
715749
/// <param name="formatting"><inheritdoc cref="SerializationFormatting" path="/summary"/></param>
750+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
751+
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
716752
public static bool TryGetJsonSerializerOptions(
717753
this Serializer serializer,
718754
[NotNullWhen(true)] out JsonSerializerOptions? options,
@@ -728,5 +764,3 @@ public static bool TryGetJsonSerializerOptions(
728764
return false;
729765
}
730766
}
731-
732-
#pragma warning restore IL2026, IL3050

0 commit comments

Comments
 (0)