diff --git a/csharp/src/Google.Protobuf.Test/GeneratedMessageTest.cs b/csharp/src/Google.Protobuf.Test/GeneratedMessageTest.cs index dfaac48cd0..140b878c15 100644 --- a/csharp/src/Google.Protobuf.Test/GeneratedMessageTest.cs +++ b/csharp/src/Google.Protobuf.Test/GeneratedMessageTest.cs @@ -111,6 +111,16 @@ namespace Google.Protobuf Assert.IsNull(message.OneofNestedMessage); } + [Test] + public void NullStringAndBytesRejected() + { + var message = new TestAllTypes(); + Assert.Throws(() => message.SingleString = null); + Assert.Throws(() => message.OneofString = null); + Assert.Throws(() => message.SingleBytes = null); + Assert.Throws(() => message.OneofBytes = null); + } + [Test] public void RoundTrip_Empty() { diff --git a/src/google/protobuf/compiler/csharp/csharp_field_base.cc b/src/google/protobuf/compiler/csharp/csharp_field_base.cc index 2459d457ed..7e3bbeef51 100644 --- a/src/google/protobuf/compiler/csharp/csharp_field_base.cc +++ b/src/google/protobuf/compiler/csharp/csharp_field_base.cc @@ -127,17 +127,6 @@ void FieldGeneratorBase::AddDeprecatedFlag(io::Printer* printer) { } } -void FieldGeneratorBase::AddNullCheck(io::Printer* printer) { - AddNullCheck(printer, "value"); -} - -void FieldGeneratorBase::AddNullCheck(io::Printer* printer, const std::string& name) { - if (is_nullable_type()) { - printer->Print(" pb::ThrowHelper.ThrowIfNull($name$, \"$name$\");\n", - "name", name); - } -} - void FieldGeneratorBase::AddPublicMemberAttributes(io::Printer* printer) { AddDeprecatedFlag(printer); } diff --git a/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc b/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc index 80f4a92d02..fc043ec06c 100644 --- a/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc +++ b/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc @@ -81,7 +81,7 @@ void PrimitiveFieldGenerator::GenerateMembers(io::Printer* printer) { } else { printer->Print( variables_, - " $name$_ = value ?? $default_value$;\n"); + " $name$_ = pb::Preconditions.CheckNotNull(value, \"value\");\n"); } printer->Print( " }\n" @@ -183,7 +183,7 @@ void PrimitiveOneofFieldGenerator::GenerateMembers(io::Printer* printer) { } else { printer->Print( variables_, - " $oneof_name$_ = value ?? $default_value$;\n"); + " $oneof_name$_ = pb::Preconditions.CheckNotNull(value, \"value\");\n"); } printer->Print( variables_,