aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc
diff options
context:
space:
mode:
authorGravatar Jon Skeet <jonskeet@google.com>2015-06-23 16:09:27 +0100
committerGravatar Jon Skeet <jonskeet@google.com>2015-06-24 17:56:22 +0100
commitbfee2dfe137b07e64ebd46baf71d932d58d01b1f (patch)
tree4bf6258a990369335cc82c8a8059eaaf1dc2dd06 /src/google/protobuf/compiler/csharp/csharp_primitive_field.cc
parent94071b54d24d2f2f1cb5933a692b5397a047057c (diff)
Implement freezing for messages and repeated fields.
Fixes issue #523.
Diffstat (limited to 'src/google/protobuf/compiler/csharp/csharp_primitive_field.cc')
-rw-r--r--src/google/protobuf/compiler/csharp/csharp_primitive_field.cc15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc b/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc
index c426c37a..d5542f57 100644
--- a/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc
+++ b/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc
@@ -72,17 +72,21 @@ void PrimitiveFieldGenerator::GenerateMembers(io::Printer* printer) {
printer->Print(
variables_,
"public $type_name$ $property_name$ {\n"
- " get { return $name$_; }\n");
+ " get { return $name$_; }\n"
+ " set {\n"
+ " pb::Freezable.CheckMutable(this);\n");
if (is_value_type) {
printer->Print(
variables_,
- " set { $name$_ = value; }\n");
+ " $name$_ = value;\n");
} else {
printer->Print(
variables_,
- " set { $name$_ = value ?? $default_value$; }\n");
+ " $name$_ = value ?? $default_value$;\n");
}
- printer->Print("}\n\n");
+ printer->Print(
+ " }\n"
+ "}\n");
}
void PrimitiveFieldGenerator::GenerateMergingCode(io::Printer* printer) {
@@ -166,7 +170,8 @@ void PrimitiveOneofFieldGenerator::GenerateMembers(io::Printer* printer) {
variables_,
"public $type_name$ $property_name$ {\n"
" get { return $has_property_check$ ? ($type_name$) $oneof_name$_ : $default_value$; }\n"
- " set {\n");
+ " set {\n"
+ " pb::Freezable.CheckMutable(this);\n");
if (is_value_type) {
printer->Print(
variables_,