Skip to content

Commit 91843fb

Browse files
authored
Suppress warnings about [Obsolete] member usage in JSON src-gen'd code (#63496)
1 parent a71f261 commit 91843fb

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
@@ -148,7 +148,10 @@ private void AddSource(string fileName, string source, bool isRootContextDef = f
148148
bool isInGlobalNamespace = @namespace == JsonConstants.GlobalNamespaceValue;
149149

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

153156
if (!isInGlobalNamespace)
154157
{

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
@@ -716,5 +716,36 @@ public class MyType
716716
Assert.Equal(1, types.Count);
717717
Assert.Equal("HelloWorld.MyType", types.Keys.First());
718718
}
719+
720+
[Fact]
721+
public static void NoWarningsDueToObsoleteMembers()
722+
{
723+
string source = @"using System;
724+
using System.Text.Json.Serialization;
725+
726+
namespace Test
727+
{
728+
[JsonSerializable(typeof(ClassWithObsolete))]
729+
public partial class JsonContext : JsonSerializerContext { }
730+
731+
public class ClassWithObsolete
732+
{
733+
[Obsolete(""This is a test"")]
734+
public bool Test { get; set; }
735+
}
736+
}
737+
";
738+
739+
Compilation compilation = CompilationHelper.CreateCompilation(source);
740+
JsonSourceGenerator generator = new JsonSourceGenerator();
741+
742+
Compilation newCompilation = CompilationHelper.RunGenerators(compilation, out _, generator);
743+
ImmutableArray<Diagnostic> generatorDiags = newCompilation.GetDiagnostics();
744+
745+
// No diagnostics expected.
746+
CompilationHelper.CheckDiagnosticMessages(DiagnosticSeverity.Info, generatorDiags, Array.Empty<(Location, string)>());
747+
CompilationHelper.CheckDiagnosticMessages(DiagnosticSeverity.Warning, generatorDiags, Array.Empty<(Location, string)>());
748+
CompilationHelper.CheckDiagnosticMessages(DiagnosticSeverity.Error, generatorDiags, Array.Empty<(Location, string)>());
749+
}
719750
}
720751
}

0 commit comments

Comments
 (0)