From 858c6968d46de17f891e7631129654c12b685aea Mon Sep 17 00:00:00 2001 From: charles Date: Mon, 4 May 2026 11:14:57 -0700 Subject: [PATCH] Clean warnings --- src/bin/protoc-gen-roto.rs | 4 +- src/generator.rs | 70 ++++++++++++++------------ src/google/protobuf/compiler/plugin.rs | 4 +- src/google/protobuf/descriptor.rs | 10 ++-- tests/build_generated_code.rs | 3 +- tests/test_nested_protos.rs | 2 +- 6 files changed, 47 insertions(+), 46 deletions(-) diff --git a/src/bin/protoc-gen-roto.rs b/src/bin/protoc-gen-roto.rs index a48786a..d5608ad 100644 --- a/src/bin/protoc-gen-roto.rs +++ b/src/bin/protoc-gen-roto.rs @@ -5,9 +5,9 @@ use roto::google::protobuf::descriptor::{ FileDescriptorSet }; use roto::google::protobuf::compiler::plugin::{ - CodeGeneratorRequest, CodeGeneratorResponse, CodeGeneratorResponseBuilder, code_generator_response::{File, FileBuilder}, + CodeGeneratorRequest, CodeGeneratorResponseBuilder, code_generator_response::FileBuilder, }; -use roto::ProtoBuilder; +// use roto::ProtoBuilder; use std::io::{self, Read, Write}; fn main() { diff --git a/src/generator.rs b/src/generator.rs index 0f56adb..bf1729d 100644 --- a/src/generator.rs +++ b/src/generator.rs @@ -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,\n", field_name)); output.push_str(&format!(" {}_end: Option,\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 {\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)); diff --git a/src/google/protobuf/compiler/plugin.rs b/src/google/protobuf/compiler/plugin.rs index d18f794..b36d535 100644 --- a/src/google/protobuf/compiler/plugin.rs +++ b/src/google/protobuf/compiler/plugin.rs @@ -1,7 +1,6 @@ -use crate::{ProtoAccessor, ProtoBuilder, Result, RotoError, read_varint, RepeatedFieldIterator}; use std::str; -use crate::google::protobuf::descriptor; +// use crate::google::protobuf::descriptor; pub struct Version<'a> { accessor: crate::ProtoAccessor<'a>, @@ -454,4 +453,3 @@ impl<'b> FileBuilder<'b> { } } - diff --git a/src/google/protobuf/descriptor.rs b/src/google/protobuf/descriptor.rs index e194965..e681ee5 100644 --- a/src/google/protobuf/descriptor.rs +++ b/src/google/protobuf/descriptor.rs @@ -1,4 +1,3 @@ -use crate::{ProtoAccessor, ProtoBuilder, Result, RotoError, read_varint, RepeatedFieldIterator}; use std::str; @@ -3948,6 +3947,7 @@ impl EnforceNamingStyle { } pub struct VisibilityFeature<'a> { + #[allow(dead_code)] accessor: crate::ProtoAccessor<'a>, } @@ -3955,14 +3955,13 @@ impl<'a> VisibilityFeature<'a> { pub fn new(data: &'a [u8]) -> crate::Result { let accessor = crate::ProtoAccessor::new(data)?; for item in accessor.fields() { - let (offset, tag, _) = item?; + let (_offset, _tag, _) = item?; } Ok(Self { accessor, }) } - } pub struct VisibilityFeatureBuilder<'b> { @@ -4008,6 +4007,7 @@ impl DefaultSymbolVisibility { } pub struct ProtoLimitsFeature<'a> { + #[allow(dead_code)] accessor: crate::ProtoAccessor<'a>, } @@ -4015,14 +4015,13 @@ impl<'a> ProtoLimitsFeature<'a> { pub fn new(data: &'a [u8]) -> crate::Result { let accessor = crate::ProtoAccessor::new(data)?; for item in accessor.fields() { - let (offset, tag, _) = item?; + let (_offset, _tag, _) = item?; } Ok(Self { accessor, }) } - } pub struct ProtoLimitsFeatureBuilder<'b> { @@ -4611,4 +4610,3 @@ impl Semantic { } } - diff --git a/tests/build_generated_code.rs b/tests/build_generated_code.rs index 8cd1d40..ddffc63 100644 --- a/tests/build_generated_code.rs +++ b/tests/build_generated_code.rs @@ -1,11 +1,10 @@ use std::fs; use std::process::Command; -use std::path::PathBuf; use roto::google::protobuf::descriptor::{ FileDescriptorSet }; use roto::google::protobuf::compiler::plugin::{ - CodeGeneratorRequest, CodeGeneratorResponse, CodeGeneratorResponseBuilder, code_generator_response::{File, FileBuilder}, + CodeGeneratorRequest, }; #[test] diff --git a/tests/test_nested_protos.rs b/tests/test_nested_protos.rs index 3361191..78aefa3 100644 --- a/tests/test_nested_protos.rs +++ b/tests/test_nested_protos.rs @@ -18,7 +18,7 @@ fn test_nested_proto_generation_contains_modules() { // but request.bin is usually a CodeGeneratorRequest. // Let's use the same logic as build_generated_code.rs to get a FileDescriptorSet - let request = roto::proto_gen::google::protobuf::compiler::plugin::CodeGeneratorRequest::new(&data) + let request = roto::google::protobuf::compiler::plugin::CodeGeneratorRequest::new(&data) .expect("Failed to parse CodeGeneratorRequest"); let mut set_buf = Vec::new();