Upgrade rust/crates/protobuf-codegen to 2.16.2
Test: make
Change-Id: I14166e5bd65e98c7c7a53cff992df72164346bc5
diff --git a/src/field/mod.rs b/src/field/mod.rs
index 37d4fe3..4925d2c 100644
--- a/src/field/mod.rs
+++ b/src/field/mod.rs
@@ -14,8 +14,10 @@
use float;
use inside::protobuf_crate_path;
+use message::RustTypeMessage;
use protobuf_name::ProtobufAbsolutePath;
use rust_name::RustIdent;
+use rust_name::RustIdentWithPath;
use scope::FieldWithContext;
use scope::MessageOrEnumWithScope;
use scope::RootScope;
@@ -267,7 +269,9 @@
) => RustType::Bytes,
FieldElem::Primitive(.., PrimitiveTypeVariant::Carllerche) => unreachable!(),
FieldElem::Group => RustType::Group,
- FieldElem::Message(ref name, ..) => RustType::Message(name.clone()),
+ FieldElem::Message(ref name, ..) => {
+ RustType::Message(RustTypeMessage(RustIdentWithPath::new(name.clone())))
+ }
FieldElem::Enum(ref name, _, ref default_value) => {
RustType::Enum(name.clone(), default_value.clone())
}
@@ -452,8 +456,13 @@
let generate_accessors = customize.generate_accessors.unwrap_or(true);
- let default_expose_field =
- field.message.scope.file_scope.syntax() == Syntax::PROTO3 || !generate_accessors;
+ let syntax = field.message.scope.file_scope.syntax();
+
+ let field_may_have_custom_default_value = syntax == Syntax::PROTO2
+ && field.field.get_label() != FieldDescriptorProto_Label::LABEL_REPEATED
+ && field.field.get_field_type() != FieldDescriptorProto_Type::TYPE_MESSAGE;
+
+ let default_expose_field = !field_may_have_custom_default_value;
let expose_field = customize.expose_fields.unwrap_or(default_expose_field);
@@ -1630,11 +1639,14 @@
if self.proto_type == FieldDescriptorProto_Type::TYPE_MESSAGE {
let self_field = self.self_field();
- let ref field_type_name = self.elem().rust_storage_type();
+ let ref rust_type_message = match self.elem().rust_storage_type() {
+ RustType::Message(m) => m,
+ _ => unreachable!(),
+ };
w.write_line(&format!(
- "{}.as_ref().unwrap_or_else(|| {}::default_instance())",
+ "{}.as_ref().unwrap_or_else(|| {})",
self_field,
- field_type_name.to_code(&self.customize)
+ rust_type_message.default_instance(&self.customize)
));
} else {
let get_xxx_default_value_rust = self.get_xxx_default_value_rust();