Clean warnings
This commit is contained in:
+38
-32
@@ -1,10 +1,7 @@
|
||||
use crate::google::protobuf::descriptor::{
|
||||
DescriptorProto, EnumDescriptorProto, FileDescriptorProto, FieldDescriptorProto, FileDescriptorSet
|
||||
};
|
||||
use crate::google::protobuf::compiler::plugin::{
|
||||
CodeGeneratorRequest, CodeGeneratorResponse, code_generator_response::File,
|
||||
};
|
||||
use crate::{ProtoAccessor, Result, RotoError};
|
||||
use crate::ProtoAccessor;
|
||||
use std::str;
|
||||
use std::collections::{HashMap, HashSet};
|
||||
|
||||
@@ -91,7 +88,6 @@ fn write_enum(enum_proto: &EnumDescriptorProto, output: &mut String) {
|
||||
));
|
||||
|
||||
let mut values = enum_proto.value();
|
||||
let mut variant_count = 0;
|
||||
let mut zero_variant_name = None;
|
||||
while let Some(val_res) = values.next() {
|
||||
let (val_data, _) = val_res.expect("Failed to iterate enum");
|
||||
@@ -106,7 +102,6 @@ fn write_enum(enum_proto: &EnumDescriptorProto, output: &mut String) {
|
||||
zero_variant_name = Some(pascal_name.clone());
|
||||
}
|
||||
output.push_str(&format!(" {} = {},\n", pascal_name, num));
|
||||
variant_count += 1;
|
||||
}
|
||||
|
||||
if zero_variant_name.is_none() {
|
||||
@@ -140,11 +135,6 @@ fn write_enum(enum_proto: &EnumDescriptorProto, output: &mut String) {
|
||||
fn write_message(msg_proto: &DescriptorProto, output: &mut String) {
|
||||
let msg_name = to_pascal_case(msg_proto.name().unwrap());
|
||||
|
||||
output.push_str(&format!(
|
||||
"pub struct {}<'a> {{\n accessor: crate::ProtoAccessor<'a>,\n",
|
||||
msg_name
|
||||
));
|
||||
|
||||
let mut fields_info = Vec::new();
|
||||
for field_res in msg_proto.field() {
|
||||
let (field_data, _) = field_res.expect("Failed to iterate field");
|
||||
@@ -156,8 +146,18 @@ fn write_message(msg_proto: &DescriptorProto, output: &mut String) {
|
||||
let f_label = field_proto.label().unwrap() as i32;
|
||||
|
||||
fields_info.push((field_name.to_string(), tag, f_type, f_label));
|
||||
}
|
||||
|
||||
if f_label == 3 {
|
||||
output.push_str(&format!(
|
||||
"pub struct {}<'a> {{\n",
|
||||
msg_name
|
||||
));
|
||||
if !fields_info.is_empty() {
|
||||
output.push_str(" accessor: crate::ProtoAccessor<'a>,\n");
|
||||
}
|
||||
|
||||
for (field_name, _tag, _f_type, f_label) in &fields_info {
|
||||
if *f_label == 3 {
|
||||
output.push_str(&format!(" {}_start: Option<usize>,\n", field_name));
|
||||
output.push_str(&format!(" {}_end: Option<usize>,\n", field_name));
|
||||
} else {
|
||||
@@ -168,34 +168,40 @@ fn write_message(msg_proto: &DescriptorProto, output: &mut String) {
|
||||
|
||||
output.push_str(&format!("impl<'a> {}<'a> {{\n", msg_name));
|
||||
output.push_str(" pub fn new(data: &'a [u8]) -> crate::Result<Self> {\n");
|
||||
output.push_str(" let accessor = crate::ProtoAccessor::new(data)?;\n");
|
||||
if !fields_info.is_empty() {
|
||||
output.push_str(" let accessor = crate::ProtoAccessor::new(data)?;\n");
|
||||
|
||||
for (name, _, _, label) in &fields_info {
|
||||
if *label == 3 {
|
||||
output.push_str(&format!(" let mut {}_start = None;\n", name));
|
||||
output.push_str(&format!(" let mut {}_end = None;\n", name));
|
||||
} else {
|
||||
output.push_str(&format!(" let mut {}_offset = None;\n", name));
|
||||
for (name, _, _, label) in &fields_info {
|
||||
if *label == 3 {
|
||||
output.push_str(&format!(" let mut {}_start = None;\n", name));
|
||||
output.push_str(&format!(" let mut {}_end = None;\n", name));
|
||||
} else {
|
||||
output.push_str(&format!(" let mut {}_offset = None;\n", name));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
output.push_str(" for item in accessor.fields() {\n");
|
||||
output.push_str(" let (offset, tag, _) = item?;\n");
|
||||
output.push_str(" for item in accessor.fields() {\n");
|
||||
output.push_str(" let (offset, tag, _) = item?;\n");
|
||||
|
||||
for (name, tag, _, label) in &fields_info {
|
||||
if *label == 3 {
|
||||
output.push_str(&format!(" if tag.field_number == {} {{\n", tag));
|
||||
output.push_str(&format!(" if {}_start.is_none() {{ {}_start = Some(offset); }}\n", name, name));
|
||||
output.push_str(&format!(" {}_end = Some(offset);\n", name));
|
||||
output.push_str(" }\n");
|
||||
} else {
|
||||
output.push_str(&format!(" if tag.field_number == {} {{ {}_offset = Some(offset); }}\n", tag, name));
|
||||
for (name, tag, _, label) in &fields_info {
|
||||
if *label == 3 {
|
||||
output.push_str(&format!(" if tag.field_number == {} {{\n", tag));
|
||||
output.push_str(&format!(" if {}_start.is_none() {{ {}_start = Some(offset); }}\n", name, name));
|
||||
output.push_str(&format!(" {}_end = Some(offset);\n", name));
|
||||
output.push_str(" }\n");
|
||||
} else {
|
||||
output.push_str(&format!(" if tag.field_number == {} {{ {}_offset = Some(offset); }}\n", tag, name));
|
||||
}
|
||||
}
|
||||
output.push_str(" }\n\n");
|
||||
} else {
|
||||
output.push_str(" let _ = crate::ProtoAccessor::new(data)?;\n");
|
||||
}
|
||||
output.push_str(" }\n\n");
|
||||
|
||||
output.push_str(" Ok(Self {\n");
|
||||
output.push_str(" accessor,\n");
|
||||
if !fields_info.is_empty() {
|
||||
output.push_str(" accessor,\n");
|
||||
}
|
||||
for (name, _, _, label) in &fields_info {
|
||||
if *label == 3 {
|
||||
output.push_str(&format!("{}_start, {}_end,\n", name, name));
|
||||
|
||||
Reference in New Issue
Block a user