diff --git a/src/libraries/System.Text.Json/gen/JsonSourceGenerator.Emitter.cs b/src/libraries/System.Text.Json/gen/JsonSourceGenerator.Emitter.cs index 90575721c507d7..db08be80c53d02 100644 --- a/src/libraries/System.Text.Json/gen/JsonSourceGenerator.Emitter.cs +++ b/src/libraries/System.Text.Json/gen/JsonSourceGenerator.Emitter.cs @@ -3,12 +3,10 @@ using System.Collections.Generic; using System.Diagnostics; -using System.Globalization; using System.Linq; using System.Reflection; using System.Text.Json.Serialization; using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.Text; using SourceGenerators; @@ -1009,7 +1007,9 @@ private static void GenerateTypeInfoFactoryHeader(SourceWriter writer, TypeGener /// /// Defines the source generated JSON serialization contract metadata for a given type. /// + #nullable disable annotations // Marking the property type as nullable-oblivious. public {{typeInfoFQN}} {{typeInfoPropertyName}} + #nullable enable annotations { get => _{{typeInfoPropertyName}} ??= ({{typeInfoFQN}}){{OptionsInstanceVariableName}}.GetTypeInfo(typeof({{typeFQN}})); } diff --git a/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Unit.Tests/JsonSourceGeneratorTests.cs b/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Unit.Tests/JsonSourceGeneratorTests.cs index ce27630b6ab692..3c9134db50bca8 100644 --- a/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Unit.Tests/JsonSourceGeneratorTests.cs +++ b/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Unit.Tests/JsonSourceGeneratorTests.cs @@ -737,5 +737,36 @@ public class MyClass Compilation compilation = CompilationHelper.CreateCompilation(source, parseOptions: CompilationHelper.CreateParseOptions(languageVersion)); CompilationHelper.RunJsonSourceGenerator(compilation); } + + [Fact] + public void DoesNotWarnOnNullabilityMismatch() + { + string source = $$""" + using System.Collections.Generic; + using System.Text.Json; + using System.Text.Json.Serialization; + #nullable enable + + namespace HelloWorld + { + public static class MyClass + { + public static string Test() + { + Dictionary values = new(); + return JsonSerializer.Serialize(values, JsonContext.Default.DictionaryInt32String); + } + } + + [JsonSerializable(typeof(Dictionary))] + internal partial class JsonContext : JsonSerializerContext + { + } + } + """; + + Compilation compilation = CompilationHelper.CreateCompilation(source); + CompilationHelper.RunJsonSourceGenerator(compilation); + } } }