Skip to content

Commit 23d306d

Browse files
committed
Fix various unsigned to signed comparison warnings.
GCC aggressively emit warnings when comparing unsigned and signed integer types, which causes failures works under protobuf's -Werror default. We can fix these often by switching to iterators, but sometimes it's easiest to add a cast or switch a variable type.
1 parent 0302c4c commit 23d306d

File tree

6 files changed

+39
-46
lines changed

6 files changed

+39
-46
lines changed

src/google/protobuf/compiler/java/full/enum.cc

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -78,30 +78,29 @@ void EnumNonLiteGenerator::Generate(io::Printer* printer) {
7878

7979
bool ordinal_is_index = true;
8080
std::string index_text = "ordinal()";
81-
for (int i = 0; i < canonical_values_.size(); i++) {
82-
if (canonical_values_[i]->index() != i) {
81+
for (size_t i = 0; i < canonical_values_.size(); i++) {
82+
if (static_cast<size_t>(canonical_values_[i]->index()) != i) {
8383
ordinal_is_index = false;
8484
index_text = "index";
8585
break;
8686
}
8787
}
8888

89-
for (int i = 0; i < canonical_values_.size(); i++) {
89+
for (const auto& value : canonical_values_) {
9090
absl::flat_hash_map<absl::string_view, std::string> vars;
91-
vars["name"] = canonical_values_[i]->name();
92-
vars["index"] = absl::StrCat(canonical_values_[i]->index());
93-
vars["number"] = absl::StrCat(canonical_values_[i]->number());
94-
WriteEnumValueDocComment(printer, canonical_values_[i],
95-
context_->options());
96-
if (canonical_values_[i]->options().deprecated()) {
91+
vars["name"] = value->name();
92+
vars["index"] = absl::StrCat(value->index());
93+
vars["number"] = absl::StrCat(value->number());
94+
WriteEnumValueDocComment(printer, value, context_->options());
95+
if (value->options().deprecated()) {
9796
printer->Print("@java.lang.Deprecated\n");
9897
}
9998
if (ordinal_is_index) {
10099
printer->Print(vars, "$name$($number$),\n");
101100
} else {
102101
printer->Print(vars, "$name$($index$, $number$),\n");
103102
}
104-
printer->Annotate("name", canonical_values_[i]);
103+
printer->Annotate("name", value);
105104
}
106105

107106
if (!descriptor_->is_closed()) {
@@ -126,15 +125,15 @@ void EnumNonLiteGenerator::Generate(io::Printer* printer) {
126125
printer->Outdent();
127126
printer->Print("}\n");
128127

129-
for (int i = 0; i < aliases_.size(); i++) {
128+
for (const auto& alias : aliases_) {
130129
absl::flat_hash_map<absl::string_view, std::string> vars;
131130
vars["classname"] = descriptor_->name();
132-
vars["name"] = aliases_[i].value->name();
133-
vars["canonical_name"] = aliases_[i].canonical_value->name();
134-
WriteEnumValueDocComment(printer, aliases_[i].value, context_->options());
131+
vars["name"] = alias.value->name();
132+
vars["canonical_name"] = alias.canonical_value->name();
133+
WriteEnumValueDocComment(printer, alias.value, context_->options());
135134
printer->Print(
136135
vars, "public static final $classname$ $name$ = $canonical_name$;\n");
137-
printer->Annotate("name", aliases_[i].value);
136+
printer->Annotate("name", alias.value);
138137
}
139138

140139
for (int i = 0; i < descriptor_->value_count(); i++) {
@@ -210,10 +209,9 @@ void EnumNonLiteGenerator::Generate(io::Printer* printer) {
210209
printer->Indent();
211210
printer->Indent();
212211

213-
for (int i = 0; i < canonical_values_.size(); i++) {
214-
printer->Print("case $number$: return $name$;\n", "name",
215-
canonical_values_[i]->name(), "number",
216-
absl::StrCat(canonical_values_[i]->number()));
212+
for (const auto& value : canonical_values_) {
213+
printer->Print("case $number$: return $name$;\n", "name", value->name(),
214+
"number", absl::StrCat(value->number()));
217215
}
218216

219217
printer->Outdent();
@@ -383,9 +381,9 @@ void EnumNonLiteGenerator::Generate(io::Printer* printer) {
383381
printer->Print("}\n\n");
384382
}
385383

386-
387384
bool EnumNonLiteGenerator::CanUseEnumValues() {
388-
if (canonical_values_.size() != descriptor_->value_count()) {
385+
if (canonical_values_.size() !=
386+
static_cast<size_t>(descriptor_->value_count())) {
389387
return false;
390388
}
391389
for (int i = 0; i < descriptor_->value_count(); i++) {

src/google/protobuf/compiler/java/full/message.cc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -800,8 +800,7 @@ void ImmutableMessageGenerator::GenerateDescriptorMethods(
800800
" switch (number) {\n");
801801
printer->Indent();
802802
printer->Indent();
803-
for (int i = 0; i < map_fields.size(); ++i) {
804-
const FieldDescriptor* field = map_fields[i];
803+
for (const auto& field : map_fields) {
805804
const FieldGeneratorInfo* info = context_->GetFieldGeneratorInfo(field);
806805
printer->Print(
807806
"case $number$:\n"

src/google/protobuf/compiler/java/full/message_builder.cc

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -211,8 +211,7 @@ void MessageBuilderGenerator::GenerateDescriptorMethods(io::Printer* printer) {
211211
" switch (number) {\n");
212212
printer->Indent();
213213
printer->Indent();
214-
for (int i = 0; i < map_fields.size(); ++i) {
215-
const FieldDescriptor* field = map_fields[i];
214+
for (const auto& field : map_fields) {
216215
const FieldGeneratorInfo* info = context_->GetFieldGeneratorInfo(field);
217216
printer->Print(
218217
"case $number$:\n"
@@ -237,8 +236,7 @@ void MessageBuilderGenerator::GenerateDescriptorMethods(io::Printer* printer) {
237236
" switch (number) {\n");
238237
printer->Indent();
239238
printer->Indent();
240-
for (int i = 0; i < map_fields.size(); ++i) {
241-
const FieldDescriptor* field = map_fields[i];
239+
for (const auto& field : map_fields) {
242240
const FieldGeneratorInfo* info = context_->GetFieldGeneratorInfo(field);
243241
printer->Print(
244242
"case $number$:\n"

src/google/protobuf/compiler/java/lite/enum.cc

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -62,17 +62,16 @@ void EnumLiteGenerator::Generate(io::Printer* printer) {
6262
printer->Annotate("classname", descriptor_);
6363
printer->Indent();
6464

65-
for (int i = 0; i < canonical_values_.size(); i++) {
65+
for (const auto& value : canonical_values_) {
6666
absl::flat_hash_map<absl::string_view, std::string> vars;
67-
vars["name"] = canonical_values_[i]->name();
68-
vars["number"] = absl::StrCat(canonical_values_[i]->number());
69-
WriteEnumValueDocComment(printer, canonical_values_[i],
70-
context_->options());
71-
if (canonical_values_[i]->options().deprecated()) {
67+
vars["name"] = value->name();
68+
vars["number"] = absl::StrCat(value->number());
69+
WriteEnumValueDocComment(printer, value, context_->options());
70+
if (value->options().deprecated()) {
7271
printer->Print("@java.lang.Deprecated\n");
7372
}
7473
printer->Print(vars, "$name$($number$),\n");
75-
printer->Annotate("name", canonical_values_[i]);
74+
printer->Annotate("name", value);
7675
}
7776

7877
if (!descriptor_->is_closed()) {
@@ -86,15 +85,15 @@ void EnumLiteGenerator::Generate(io::Printer* printer) {
8685

8786
// -----------------------------------------------------------------
8887

89-
for (int i = 0; i < aliases_.size(); i++) {
88+
for (const auto& alias : aliases_) {
9089
absl::flat_hash_map<absl::string_view, std::string> vars;
9190
vars["classname"] = descriptor_->name();
92-
vars["name"] = aliases_[i].value->name();
93-
vars["canonical_name"] = aliases_[i].canonical_value->name();
94-
WriteEnumValueDocComment(printer, aliases_[i].value, context_->options());
91+
vars["name"] = alias.value->name();
92+
vars["canonical_name"] = alias.canonical_value->name();
93+
WriteEnumValueDocComment(printer, alias.value, context_->options());
9594
printer->Print(
9695
vars, "public static final $classname$ $name$ = $canonical_name$;\n");
97-
printer->Annotate("name", aliases_[i].value);
96+
printer->Annotate("name", alias.value);
9897
}
9998

10099
for (int i = 0; i < descriptor_->value_count(); i++) {
@@ -157,10 +156,9 @@ void EnumLiteGenerator::Generate(io::Printer* printer) {
157156
printer->Indent();
158157
printer->Indent();
159158

160-
for (int i = 0; i < canonical_values_.size(); i++) {
161-
printer->Print("case $number$: return $name$;\n", "name",
162-
canonical_values_[i]->name(), "number",
163-
absl::StrCat(canonical_values_[i]->number()));
159+
for (const auto& value : canonical_values_) {
160+
printer->Print("case $number$: return $name$;\n", "name", value->name(),
161+
"number", absl::StrCat(value->number()));
164162
}
165163

166164
printer->Outdent();

src/google/protobuf/compiler/rust/relative_path.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ std::string RelativePath::Relative(const RelativePath& dest) const {
6363
result.push_back(segment);
6464
}
6565
// Push `..` from the common ancestor to the current path.
66-
for (int i = 0; i < current_segments.size(); ++i) {
66+
for (size_t i = 0; i < current_segments.size(); ++i) {
6767
result.push_back("..");
6868
}
6969
absl::c_reverse(result);

src/google/protobuf/io/printer.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,8 @@ class AnnotationProtoCollector : public AnnotationCollector {
124124
const std::string& file_path, const std::vector<int>& path,
125125
absl::optional<Semantic> semantic) override {
126126
auto* annotation = annotation_proto_->add_annotation();
127-
for (int i = 0; i < path.size(); ++i) {
128-
annotation->add_path(path[i]);
127+
for (const auto segment : path) {
128+
annotation->add_path(segment);
129129
}
130130
annotation->set_source_file(file_path);
131131
annotation->set_begin(begin_offset);

0 commit comments

Comments
 (0)