8000 Breaking change: Upgrade return type of several string returning func… · protocolbuffers/protobuf@d1990d9 · GitHub
[go: up one dir, main page]

Skip to content

Commit d1990d9

Browse files
Breaking change: Upgrade return type of several string returning functions to absl::string_view.
This includes (but not limited to) `MessageLite::GetTypeName`, `UnknownField::length_delimited`, and all the name functions in descriptors like `FieldDescriptor::full_name`. Part of the changes announced in https://protobuf.dev/news/2024-10-02/#descriptor-apis PiperOrigin-RevId: 715013326
1 parent 1355ef2 commit d1990d9

File tree

20 files changed

+64
-70
lines changed

20 files changed

+64
-70
lines changed

src/google/protobuf/compiler/cpp/field_generators/cord_field.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ void SetCordVariables(
3939
"\"", absl::CEscape(descriptor->default_value_string()), "\"");
4040
(*variables)["default_length"] =
4141
absl::StrCat(descriptor->default_value_string().length());
42-
(*variables)["full_name"] = descriptor->full_name();
42+
(*variables)["full_name"] = std::string(descriptor->full_name());
4343
// For one of Cords
4444
(*variables)["default_variable_name"] = MakeDefaultName(descriptor);
4545
(*variables)["default_variable_field"] = MakeDefaultFieldName(descriptor);

src/google/protobuf/compiler/cpp/service.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ class ServiceGenerator {
3232
const absl::flat_hash_map<absl::string_view, std::string>& vars,
3333
const Options& options)
3434
: descriptor_(descriptor), options_(&options), vars_(vars) {
35-
vars_["classname"] = descriptor_->name();
36-
vars_["full_name"] = descriptor_->full_name();
35+
vars_["classname"] = std::string(descriptor_->name());
36+
vars_["full_name"] = std::string(descriptor_->full_name());
3737
}
3838

3939
ServiceGenerator(const ServiceGenerator&) = delete;

src/google/protobuf/compiler/csharp/csharp_field_base.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ void FieldGeneratorBase::SetCommonFieldVariables(
7272
(*variables)["type_name"] = type_name();
7373
(*variables)["extended_type"] = GetClassName(descriptor_->containing_type());
7474
(*variables)["name"] = name();
75-
(*variables)["descriptor_name"] = descriptor_->name();
75+
(*variables)["descriptor_name"] = std::string(descriptor_->name());
7676
(*variables)["default_value"] = default_value();
7777
(*variables)["capitalized_type_name"] = capitalized_type_name();
7878
(*variables)["number"] = number();

src/google/protobuf/compiler/csharp/csharp_message.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ void MessageGenerator::Generate(io::Printer* printer) {
212212
const OneofDescriptor* oneof = descriptor_->oneof_decl(i);
213213
vars["name"] = UnderscoresToCamelCase(oneof->name(), false);
214214
vars["property_name"] = UnderscoresToCamelCase(oneof->name(), true);
215-
vars["original_name"] = oneof->name();
215+
vars["original_name"] = std::string(oneof->name());
216216
printer->Print(vars,
217217
"private object $name$_;\n"
218218
"/// <summary>Enum of possible cases for the "

src/google/protobuf/compiler/java/doc_comment.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ static void WriteDebugString(io::Printer* printer, const FieldDescriptor* field,
210210
const Options options, const bool kdoc) {
211211
std::string field_comment = FirstLineOf(field->DebugString());
212212
if (options.strip_nonfunctional_codegen) {
213-
field_comment = field->name();
213+
field_comment = std::string(field->name());
214214
}
215215
if (kdoc) {
216216
printer->Print(" * `$def$`\n", "def", EscapeKdoc(field_comment));

src/google/protobuf/compiler/java/field_common.cc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,10 @@ namespace java {
1616
void SetCommonFieldVariables(
1717
const FieldDescriptor* descriptor, const FieldGeneratorInfo* info,
1818
absl::flat_hash_map<absl::string_view, std::string>* variables) {
19-
(*variables)["field_name"] = descriptor->name();
19+
(*variables)["field_name"] = std::string(descriptor->name());
2020
(*variables)["name"] = info->name;
21-
(*variables)["classname"] = descriptor->containing_type()->name();
21+
(*variables)["classname"] =
22+
std::string(descriptor->containing_type()->name());
2223
(*variables)["capitalized_name"] = info->capitalized_name;
2324
(*variables)["disambiguated_reason"] = info->disambiguated_reason;
2425
(*variables)["constant_name"] = FieldConstantName(descriptor);

src/google/protobuf/compiler/java/file.cc

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -205,12 +205,11 @@ bool FileGenerator::Validate(std::string* error) {
205205
// end up overwriting the outer class with one of the inner ones.
206206
if (name_resolver_->HasConflictingClassName(file_, classname_,
207207
NameEquality::EXACT_EQUAL)) {
208-
error->assign(file_->name());
209-
error->append(
208+
*error = absl::StrCat(
209+
file_->name(),
210210
": Cannot generate Java output because the file's outer class name, "
211-
"\"");
212-
error->append(classname_);
213-
error->append(
211+
"\"",
212+
classname_,
214213
"\", matches the name of one of the types declared inside it. "
215214
"Please either rename the type or use the java_outer_classname "
216215
"option to specify a different outer class name for the .proto file.");

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ void EnumNonLiteGenerator::Generate(io::Printer* printer) {
8585

8686
for (const EnumValueDescriptor* value : canonical_values_) {
8787
absl::flat_hash_map<absl::string_view, std::string> vars;
88-
vars["name"] = value->name();
88+
vars["name"] = std::string(value->name());
8989
vars["index"] = absl::StrCat(value->index());
9090
vars["number"] = absl::StrCat(value->number());
9191
WriteEnumValueDocComment(printer, value, context_->options());
@@ -124,9 +124,9 @@ void EnumNonLiteGenerator::Generate(io::Printer* printer) {
124124

125125
for (const Alias& alias : aliases_) {
126126
absl::flat_hash_map<absl::string_view, std::string> vars;
127-
vars["classname"] = descriptor_->name();
128-
vars["name"] = alias.value->name();
129-
vars["canonical_name"] = alias.canonical_value->name();
127+
vars["classname"] = std::string(descriptor_->name());
128+
vars["name"] = std::string(alias.value->name());
129+
vars["canonical_name"] = std::string(alias.canonical_value->name());
130130
WriteEnumValueDocComment(printer, alias.value, context_->options());
131131
printer->Print(
132132
vars, "public static final $classname$ $name$ = $canonical_name$;\n");
@@ -135,7 +135,7 @@ void EnumNonLiteGenerator::Generate(io::Printer* printer) {
135135

136136
for (int i = 0; i < descriptor_->value_count(); i++) {
137137
absl::flat_hash_map<absl::string_view, std::string> vars;
138-
vars["name"] = descriptor_->value(i)->name();
138+
vars["name"] = std::string(descriptor_->value(i)->name());
139139
vars["number"] = absl::StrCat(descriptor_->value(i)->number());
140140
vars["{"] = "";
141141
vars["}"] = "";

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ void ImmutableMessageGenerator::Generate(io::Printer* printer) {
294294

295295
absl::flat_hash_map<absl::string_view, std::string> variables;
296296
variables["static"] = is_own_file ? "" : "static ";
297-
variables["classname"] = descriptor_->name();
297+
variables["classname"] = std::string(descriptor_->name());
298298
variables["extra_interfaces"] = ExtraMessageInterfaces(descriptor_);
299299
variables["deprecation"] =
300300
descriptor_->options().deprecated() ? "@java.lang.Deprecated " : "";

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ void EnumLiteGenerator::Generate(io::Printer* printer) {
7171

7272
for (const EnumValueDescriptor* value : canonical_values_) {
7373
absl::flat_hash_map<absl::string_view, std::string> vars;
74-
vars["name"] = value->name();
74+
vars["name"] = std::string(value->name());
7575
vars["number"] = absl::StrCat(value->number());
7676
WriteEnumValueDocComment(printer, value, context_->options());
7777
if (value->options().deprecated()) {
@@ -94,9 +94,9 @@ void EnumLiteGenerator::Generate(io::Printer* printer) {
9494

9595
for (const Alias& alias : aliases_) {
9696
absl::flat_hash_map<absl::string_view, std::string> vars;
97-
vars["classname"] = descriptor_->name();
98-
vars["name"] = alias.value->name();
99-
vars["canonical_name"] = alias.canonical_value->name();
97+
vars["classname"] = std::string(descriptor_->name());
98+
vars["name"] = std::string(alias.value->name());
99+
vars["canonical_name"] = std::string(alias.canonical_value->name());
100100
WriteEnumValueDocComment(printer, alias.value, context_->options());
101101
printer->Print(
102102
vars, "public static final $classname$ $name$ = $canonical_name$;\n");
@@ -105,7 +105,7 @@ void EnumLiteGenerator::Generate(io::Printer* printer) {
105105

106106
for (int i = 0; i < descriptor_->value_count(); i++) {
107107
absl::flat_hash_map<absl::string_view, std::string> vars;
108-
vars["name"] = descriptor_->value(i)->name();
108+
vars["name"] = std::string(descriptor_->value(i)->name());
109109
vars["number"] = absl::StrCat(descriptor_->value(i)->number());
110110
vars["{"] = "";
111111
vars["}"] = "";

0 commit comments

Comments
 (0)
0