Skip to content

Commit 5af5538

Browse files
Suppress warnings about [Obsolete] member usage in JSON src-gen'd code (#63501)
Co-authored-by: Layomi Akinrinade <[email protected]>
1 parent 039ab90 commit 5af5538

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

src/libraries/System.Text.Json/gen/JsonSourceGenerator.Emitter.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,10 @@ private void AddSource(string fileName, string source, bool isRootContextDef = f
149149
bool isInGlobalNamespace = @namespace == JsonConstants.GlobalNamespaceValue;
150150

151151
StringBuilder sb = new(@"// <auto-generated/>
152-
#nullable enable");
152+
#nullable enable
153+
154+
// Suppress warnings about [Obsolete] member usage in generated code.
155+
#pragma warning disable CS0618");
153156

154157
if (!isInGlobalNamespace)
155158
{

src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Unit.Tests/JsonSourceGeneratorTests.cs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -521,5 +521,36 @@ public class MyType
521521
Assert.Equal(1, types.Count);
522522
Assert.Equal("HelloWorld.MyType", types.Keys.First());
523523
}
524+
525+
[Fact]
526+
public static void NoWarningsDueToObsoleteMembers()
527+
{
528+
string source = @"using System;
529+
using System.Text.Json.Serialization;
530+
531+
namespace Test
532+
{
533+
[JsonSerializable(typeof(ClassWithObsolete))]
534+
public partial class JsonContext : JsonSerializerContext { }
535+
536+
public class ClassWithObsolete
537+
{
538+
[Obsolete(""This is a test"")]
539+
public bool Test { get; set; }
540+
}
541+
}
542+
";
543+
544+
Compilation compilation = CompilationHelper.CreateCompilation(source);
545+
JsonSourceGenerator generator = new JsonSourceGenerator();
546+
547+
Compilation newCompilation = CompilationHelper.RunGenerators(compilation, out _, generator);
548+
ImmutableArray<Diagnostic> generatorDiags = newCompilation.GetDiagnostics();
549+
550+
// No diagnostics expected.
551+
CompilationHelper.CheckDiagnosticMessages(DiagnosticSeverity.Info, generatorDiags, Array.Empty<(Location, string)>());
552+
CompilationHelper.CheckDiagnosticMessages(DiagnosticSeverity.Warning, generatorDiags, Array.Empty<(Location, string)>());
553+
CompilationHelper.CheckDiagnosticMessages(DiagnosticSeverity.Error, generatorDiags, Array.Empty<(Location, string)>());
554+
}
524555
}
525556
}

0 commit comments

Comments
 (0)