diff options
4 files changed, 33 insertions, 17 deletions
diff --git a/java/src/test/java/com/google/protobuf/NanoTest.java b/java/src/test/java/com/google/protobuf/NanoTest.java index d4e9dfcb..1149c40b 100644 --- a/java/src/test/java/com/google/protobuf/NanoTest.java +++ b/java/src/test/java/com/google/protobuf/NanoTest.java @@ -2322,6 +2322,12 @@ public class NanoTest extends TestCase { assertFalse(msg.hasOptionalString()); assertFalse(msg.hasDefaultString()); assertFalse(msg.hasBitFieldCheck()); + + // Test set() and clear() returns itself (compiles = success) + msg.clear() + .setOptionalInt32(3) + .clearDefaultBytes() + .setOptionalString("4"); } public void testNanoWithAccessorsParseFrom() throws Exception { diff --git a/src/google/protobuf/compiler/javanano/javanano_enum_field.cc b/src/google/protobuf/compiler/javanano/javanano_enum_field.cc index 43661617..3c4b9789 100644 --- a/src/google/protobuf/compiler/javanano/javanano_enum_field.cc +++ b/src/google/protobuf/compiler/javanano/javanano_enum_field.cc @@ -182,16 +182,18 @@ GenerateMembers(io::Printer* printer) const { "public int get$capitalized_name$() {\n" " return $name$_;\n" "}\n" - "public void set$capitalized_name$(int value) {\n" + "public $message_name$ set$capitalized_name$(int value) {\n" " $name$_ = value;\n" " $set_has$;\n" + " return this;\n" "}\n" "public boolean has$capitalized_name$() {\n" " return $get_has$;\n" "}\n" - "public void clear$capitalized_name$() {\n" + "public $message_name$ clear$capitalized_name$() {\n" " $name$_ = $default$;\n" " $clear_has$;\n" + " return this;\n" "}\n"); } @@ -204,13 +206,14 @@ GenerateClearCode(io::Printer* printer) const { void AccessorEnumFieldGenerator:: GenerateMergingCode(io::Printer* printer) const { printer->Print(variables_, - "set$capitalized_name$(input.readInt32());\n"); + "$name$_ = input.readInt32();\n" + "$set_has$;\n"); } void AccessorEnumFieldGenerator:: GenerateSerializationCode(io::Printer* printer) const { printer->Print(variables_, - "if (has$capitalized_name$()) {\n" + "if ($get_has$) {\n" " output.writeInt32($number$, $name$_);\n" "}\n"); } @@ -218,7 +221,7 @@ GenerateSerializationCode(io::Printer* printer) const { void AccessorEnumFieldGenerator:: GenerateSerializedSizeCode(io::Printer* printer) const { printer->Print(variables_, - "if (has$capitalized_name$()) {\n" + "if ($get_has$) {\n" " size += com.google.protobuf.nano.CodedOutputByteBufferNano\n" " .computeInt32Size($number$, $name$_);\n" "}\n"); diff --git a/src/google/protobuf/compiler/javanano/javanano_message_field.cc b/src/google/protobuf/compiler/javanano/javanano_message_field.cc index 225cf42c..02253f97 100644 --- a/src/google/protobuf/compiler/javanano/javanano_message_field.cc +++ b/src/google/protobuf/compiler/javanano/javanano_message_field.cc @@ -148,17 +148,19 @@ GenerateMembers(io::Printer* printer) const { "public $type$ get$capitalized_name$() {\n" " return $name$_;\n" "}\n" - "public void set$capitalized_name$($type$ value) {\n" + "public $message_name$ set$capitalized_name$($type$ value) {\n" " if (value == null) {\n" " throw new java.lang.NullPointerException();\n" " }\n" " $name$_ = value;\n" + " return this;\n" "}\n" "public boolean has$capitalized_name$() {\n" " return $name$_ != null;\n" "}\n" - "public void clear$capitalized_name$() {\n" + "public $message_name$ clear$capitalized_name$() {\n" " $name$_ = null;\n" + " return this;" "}\n"); } @@ -171,8 +173,8 @@ GenerateClearCode(io::Printer* printer) const { void AccessorMessageFieldGenerator:: GenerateMergingCode(io::Printer* printer) const { printer->Print(variables_, - "if (!has$capitalized_name$()) {\n" - " set$capitalized_name$(new $type$());\n" + "if ($name$_ == null) {\n" + " $name$_ = new $type$();\n" "}\n"); if (descriptor_->type() == FieldDescriptor::TYPE_GROUP) { @@ -187,7 +189,7 @@ GenerateMergingCode(io::Printer* printer) const { void AccessorMessageFieldGenerator:: GenerateSerializationCode(io::Printer* printer) const { printer->Print(variables_, - "if (has$capitalized_name$()) {\n" + "if ($name$_ != null) {\n" " output.write$group_or_message$($number$, $name$_);\n" "}\n"); } @@ -195,7 +197,7 @@ GenerateSerializationCode(io::Printer* printer) const { void AccessorMessageFieldGenerator:: GenerateSerializedSizeCode(io::Printer* printer) const { printer->Print(variables_, - "if (has$capitalized_name$()) {\n" + "if ($name$_ != null) {\n" " size += com.google.protobuf.nano.CodedOutputByteBufferNano\n" " .compute$group_or_message$Size($number$, $name$_);\n" "}\n"); diff --git a/src/google/protobuf/compiler/javanano/javanano_primitive_field.cc b/src/google/protobuf/compiler/javanano/javanano_primitive_field.cc index 0562a6e0..0f7512a2 100644 --- a/src/google/protobuf/compiler/javanano/javanano_primitive_field.cc +++ b/src/google/protobuf/compiler/javanano/javanano_primitive_field.cc @@ -431,21 +431,25 @@ GenerateMembers(io::Printer* printer) const { "public $type$ get$capitalized_name$() {\n" " return $name$_;\n" "}\n" - "public void set$capitalized_name$($type$ value) {\n"); + "public $message_name$ set$capitalized_name$($type$ value) {\n"); if (IsReferenceType(GetJavaType(descriptor_))) { printer->Print(variables_, - " if (value == null) throw new java.lang.NullPointerException();\n"); + " if (value == null) {\n" + " throw new java.lang.NullPointerException();\n" + " }\n"); } printer->Print(variables_, " $name$_ = value;\n" " $set_has$;\n" + " return this;\n" "}\n" "public boolean has$capitalized_name$() {\n" " return $get_has$;\n" "}\n" - "public void clear$capitalized_name$() {\n" + "public $message_name$ clear$capitalized_name$() {\n" " $name$_ = $default_copy_if_needed$;\n" " $clear_has$;\n" + " return this;\n" "}\n"); } @@ -458,13 +462,14 @@ GenerateClearCode(io::Printer* printer) const { void AccessorPrimitiveFieldGenerator:: GenerateMergingCode(io::Printer* printer) const { printer->Print(variables_, - "set$capitalized_name$(input.read$capitalized_type$());\n"); + "$name$_ = input.read$capitalized_type$();\n" + "$set_has$;\n"); } void AccessorPrimitiveFieldGenerator:: GenerateSerializationCode(io::Printer* printer) const { printer->Print(variables_, - "if (has$capitalized_name$()) {\n" + "if ($get_has$) {\n" " output.write$capitalized_type$($number$, $name$_);\n" "}\n"); } @@ -472,7 +477,7 @@ GenerateSerializationCode(io::Printer* printer) const { void AccessorPrimitiveFieldGenerator:: GenerateSerializedSizeCode(io::Printer* printer) const { printer->Print(variables_, - "if (has$capitalized_name$()) {\n" + "if ($get_has$) {\n" " size += com.google.protobuf.nano.CodedOutputByteBufferNano\n" " .compute$capitalized_type$Size($number$, $name$_);\n" "}\n"); |