Clean warnings

This commit is contained in:
2026-05-04 11:14:57 -07:00
parent 7fbea70860
commit 858c6968d4
6 changed files with 47 additions and 46 deletions
+38 -32
View File
@@ -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));