aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/google/protobuf/compiler/csharp/csharp_message.cc
diff options
context:
space:
mode:
authorGravatar Jon Skeet <jonskeet@google.com>2015-07-01 17:11:17 +0100
committerGravatar Jon Skeet <jonskeet@google.com>2015-07-09 08:26:04 +0100
commit493e3db98532e99a53cec914d8f4827a556ee408 (patch)
tree4ea197b6188713b8905e8390719c6b9f0e4a54c6 /src/google/protobuf/compiler/csharp/csharp_message.cc
parent462d569ec0eb8f6a7b81f0423566cba20fb2bf9f (diff)
Codegen changes to support descriptor runtime changes
- Add a partial method called by all constructors - Generate internal classes for descriptor.proto (only) - Forbid proto2 descriptors except for descriptor.proto
Diffstat (limited to 'src/google/protobuf/compiler/csharp/csharp_message.cc')
-rw-r--r--src/google/protobuf/compiler/csharp/csharp_message.cc9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/google/protobuf/compiler/csharp/csharp_message.cc b/src/google/protobuf/compiler/csharp/csharp_message.cc
index c7a1e290..13544b26 100644
--- a/src/google/protobuf/compiler/csharp/csharp_message.cc
+++ b/src/google/protobuf/compiler/csharp/csharp_message.cc
@@ -221,10 +221,13 @@ void MessageGenerator::Generate(io::Printer* printer) {
"private bool _frozen = false;\n"
"public bool IsFrozen { get { return _frozen; } }\n\n");
- // Parameterless constructor
+ // Parameterless constructor and partial OnConstruction method.
printer->Print(
vars,
- "public $class_name$() { }\n\n");
+ "public $class_name$() {\n"
+ " OnConstruction();\n"
+ "}\n\n"
+ "partial void OnConstruction();\n\n");
GenerateCloningCode(printer);
GenerateFreezingCode(printer);
@@ -311,7 +314,7 @@ void MessageGenerator::GenerateCloningCode(io::Printer* printer) {
vars["class_name"] = class_name();
printer->Print(
vars,
- "public $class_name$($class_name$ other) {\n");
+ "public $class_name$($class_name$ other) : this() {\n");
printer->Indent();
// Clone non-oneof fields first
for (int i = 0; i < descriptor_->field_count(); i++) {