aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/protoc/src/google/protobuf/compiler/java
diff options
context:
space:
mode:
authormikhnenko <mikhnenko@yandex-team.com>2024-06-25 08:50:35 +0300
committermikhnenko <mikhnenko@yandex-team.com>2024-06-25 09:00:27 +0300
commit509c9fc9e7b9c3b8be7307d72a4c966e5f9aa194 (patch)
tree4b8a6a44009906ac852e59efa0bc78bb12043a5b /contrib/libs/protoc/src/google/protobuf/compiler/java
parent7688f2313619a39a60ef3c2734d8efbc49a0a6db (diff)
downloadydb-509c9fc9e7b9c3b8be7307d72a4c966e5f9aa194.tar.gz
Update protobuf to 3.20.2 and pyprotobuf to 3.20.3
Если это pull-request что-то сломал, то: - если это тест с канонизацией и еще нет pr с переканонизацией, то переканонизируйте пожалуйста сами - проверьте, что тест не флапает - приходите в [DEVTOOLSSUPPORT](https://st.yandex-team.ru/createTicket?queue=DEVTOOLSSUPPORT) - там вам обязательно помогут 987be5ed151f827f7f292f32420470b04b71a91d
Diffstat (limited to 'contrib/libs/protoc/src/google/protobuf/compiler/java')
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_context.cc4
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_doc_comment.cc13
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_doc_comment.h1
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_enum.cc7
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_enum_field.cc6
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_enum_field.h3
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_enum_field_lite.cc6
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_enum_lite.cc7
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_extension.cc4
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_extension.h2
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_extension_lite.cc4
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_extension_lite.h2
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_field.cc6
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_field.h2
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_file.cc10
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_file.h1
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_generator.cc5
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_generator.h3
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_generator_factory.h2
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_helpers.cc37
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_helpers.h19
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_kotlin_generator.cc22
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_kotlin_generator.h2
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_map_field.cc37
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_map_field_lite.cc37
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_message.cc54
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_message.h4
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_builder.cc12
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_builder.h1
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_builder_lite.cc10
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_builder_lite.h1
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_field.cc36
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_field.h6
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_field_lite.cc27
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_field_lite.h5
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_lite.cc51
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_lite.h4
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_name_resolver.cc4
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_name_resolver.h3
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_primitive_field.cc6
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_primitive_field.h3
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_primitive_field_lite.cc7
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_primitive_field_lite.h2
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_service.cc4
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_service.h2
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_shared_code_generator.cc8
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_string_field.cc8
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_string_field.h5
-rw-r--r--contrib/libs/protoc/src/google/protobuf/compiler/java/java_string_field_lite.cc6
49 files changed, 326 insertions, 185 deletions
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_context.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_context.cc
index 3403cfca2cf..9ee161f7f3d 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_context.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_context.cc
@@ -30,11 +30,11 @@
#include <google/protobuf/compiler/java/java_context.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/stubs/strutil.h>
#include <google/protobuf/compiler/java/java_field.h>
#include <google/protobuf/compiler/java/java_helpers.h>
#include <google/protobuf/compiler/java/java_name_resolver.h>
-#include <google/protobuf/descriptor.h>
-#include <google/protobuf/stubs/strutil.h>
#include <google/protobuf/stubs/map_util.h>
namespace google {
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_doc_comment.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_doc_comment.cc
index 2d30eabce9d..2252d122fa3 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_doc_comment.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_doc_comment.cc
@@ -36,9 +36,9 @@
#include <vector>
-#include <google/protobuf/descriptor.pb.h>
#include <google/protobuf/io/printer.h>
#include <google/protobuf/stubs/strutil.h>
+#include <google/protobuf/descriptor.pb.h>
namespace google {
namespace protobuf {
@@ -199,7 +199,16 @@ void WriteDeprecatedJavadoc(io::Printer* printer, const FieldDescriptor* field,
return;
}
- printer->Print(" * @deprecated\n");
+ TProtoStringType startLine = "0";
+ SourceLocation location;
+ if (field->GetSourceLocation(&location)) {
+ startLine = std::to_string(location.start_line);
+ }
+
+ printer->Print(" * @deprecated $name$ is deprecated.\n", "name",
+ field->full_name());
+ printer->Print(" * See $file$;l=$line$\n", "file", field->file()->name(),
+ "line", startLine);
}
void WriteFieldAccessorDocComment(io::Printer* printer,
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_doc_comment.h b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_doc_comment.h
index e7faa4a6a01..52d6f774745 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_doc_comment.h
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_doc_comment.h
@@ -37,6 +37,7 @@
#include <google/protobuf/descriptor.h>
+// Must be included last.
#include <google/protobuf/port_def.inc>
namespace google {
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_enum.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_enum.cc
index d9070eeaabe..8574527f0bb 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_enum.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_enum.cc
@@ -32,17 +32,18 @@
// Based on original Protocol Buffers design by
// Sanjay Ghemawat, Jeff Dean, and others.
+#include <google/protobuf/compiler/java/java_enum.h>
+
#include <map>
#include <string>
+#include <google/protobuf/io/printer.h>
+#include <google/protobuf/stubs/strutil.h>
#include <google/protobuf/compiler/java/java_context.h>
#include <google/protobuf/compiler/java/java_doc_comment.h>
-#include <google/protobuf/compiler/java/java_enum.h>
#include <google/protobuf/compiler/java/java_helpers.h>
#include <google/protobuf/compiler/java/java_name_resolver.h>
#include <google/protobuf/descriptor.pb.h>
-#include <google/protobuf/io/printer.h>
-#include <google/protobuf/stubs/strutil.h>
namespace google {
namespace protobuf {
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_enum_field.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_enum_field.cc
index 8c658eef9b1..59df1132e78 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_enum_field.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_enum_field.cc
@@ -40,13 +40,13 @@
#include <google/protobuf/stubs/logging.h>
#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/printer.h>
+#include <google/protobuf/wire_format.h>
+#include <google/protobuf/stubs/strutil.h>
#include <google/protobuf/compiler/java/java_context.h>
#include <google/protobuf/compiler/java/java_doc_comment.h>
#include <google/protobuf/compiler/java/java_helpers.h>
#include <google/protobuf/compiler/java/java_name_resolver.h>
-#include <google/protobuf/io/printer.h>
-#include <google/protobuf/wire_format.h>
-#include <google/protobuf/stubs/strutil.h>
namespace google {
namespace protobuf {
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_enum_field.h b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_enum_field.h
index 5d3564530e9..3fb65ae5464 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_enum_field.h
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_enum_field.h
@@ -37,6 +37,7 @@
#include <map>
#include <string>
+
#include <google/protobuf/compiler/java/java_field.h>
namespace google {
@@ -99,7 +100,7 @@ class ImmutableEnumOneofFieldGenerator : public ImmutableEnumFieldGenerator {
ImmutableEnumOneofFieldGenerator(const FieldDescriptor* descriptor,
int messageBitIndex, int builderBitIndex,
Context* context);
- ~ImmutableEnumOneofFieldGenerator();
+ ~ImmutableEnumOneofFieldGenerator() override;
void GenerateMembers(io::Printer* printer) const override;
void GenerateBuilderMembers(io::Printer* printer) const override;
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_enum_field_lite.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_enum_field_lite.cc
index f7e7b2dab7c..33cff57cf3d 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_enum_field_lite.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_enum_field_lite.cc
@@ -40,13 +40,13 @@
#include <google/protobuf/stubs/logging.h>
#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/printer.h>
+#include <google/protobuf/wire_format.h>
+#include <google/protobuf/stubs/strutil.h>
#include <google/protobuf/compiler/java/java_context.h>
#include <google/protobuf/compiler/java/java_doc_comment.h>
#include <google/protobuf/compiler/java/java_helpers.h>
#include <google/protobuf/compiler/java/java_name_resolver.h>
-#include <google/protobuf/io/printer.h>
-#include <google/protobuf/wire_format.h>
-#include <google/protobuf/stubs/strutil.h>
namespace google {
namespace protobuf {
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_enum_lite.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_enum_lite.cc
index bf84607aac5..7ec742d19f6 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_enum_lite.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_enum_lite.cc
@@ -32,17 +32,18 @@
// Based on original Protocol Buffers design by
// Sanjay Ghemawat, Jeff Dean, and others.
+#include <google/protobuf/compiler/java/java_enum_lite.h>
+
#include <map>
#include <string>
+#include <google/protobuf/io/printer.h>
+#include <google/protobuf/stubs/strutil.h>
#include <google/protobuf/compiler/java/java_context.h>
#include <google/protobuf/compiler/java/java_doc_comment.h>
-#include <google/protobuf/compiler/java/java_enum_lite.h>
#include <google/protobuf/compiler/java/java_helpers.h>
#include <google/protobuf/compiler/java/java_name_resolver.h>
#include <google/protobuf/descriptor.pb.h>
-#include <google/protobuf/io/printer.h>
-#include <google/protobuf/stubs/strutil.h>
#include <google/protobuf/stubs/map_util.h>
namespace google {
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_extension.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_extension.cc
index 9602780c49f..d90994503dd 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_extension.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_extension.cc
@@ -34,12 +34,12 @@
#include <google/protobuf/compiler/java/java_extension.h>
+#include <google/protobuf/io/printer.h>
+#include <google/protobuf/stubs/strutil.h>
#include <google/protobuf/compiler/java/java_context.h>
#include <google/protobuf/compiler/java/java_doc_comment.h>
#include <google/protobuf/compiler/java/java_helpers.h>
#include <google/protobuf/compiler/java/java_name_resolver.h>
-#include <google/protobuf/io/printer.h>
-#include <google/protobuf/stubs/strutil.h>
namespace google {
namespace protobuf {
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_extension.h b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_extension.h
index d796c56c76f..f9bd326f9bd 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_extension.h
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_extension.h
@@ -92,7 +92,7 @@ class ImmutableExtensionGenerator : public ExtensionGenerator {
public:
explicit ImmutableExtensionGenerator(const FieldDescriptor* descriptor,
Context* context);
- virtual ~ImmutableExtensionGenerator();
+ ~ImmutableExtensionGenerator() override;
void Generate(io::Printer* printer) override;
int GenerateNonNestedInitializationCode(io::Printer* printer) override;
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_extension_lite.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_extension_lite.cc
index 3f12f20a57e..0135d9ee03e 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_extension_lite.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_extension_lite.cc
@@ -30,12 +30,12 @@
#include <google/protobuf/compiler/java/java_extension_lite.h>
+#include <google/protobuf/io/printer.h>
+#include <google/protobuf/stubs/strutil.h>
#include <google/protobuf/compiler/java/java_context.h>
#include <google/protobuf/compiler/java/java_doc_comment.h>
#include <google/protobuf/compiler/java/java_helpers.h>
#include <google/protobuf/compiler/java/java_name_resolver.h>
-#include <google/protobuf/io/printer.h>
-#include <google/protobuf/stubs/strutil.h>
namespace google {
namespace protobuf {
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_extension_lite.h b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_extension_lite.h
index 117b87f7a8f..3e13db7028c 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_extension_lite.h
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_extension_lite.h
@@ -49,7 +49,7 @@ class ImmutableExtensionLiteGenerator : public ExtensionGenerator {
public:
explicit ImmutableExtensionLiteGenerator(const FieldDescriptor* descriptor,
Context* context);
- virtual ~ImmutableExtensionLiteGenerator();
+ ~ImmutableExtensionLiteGenerator() override;
void Generate(io::Printer* printer) override;
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_field.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_field.cc
index 15283e10832..9373e568cfb 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_field.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_field.cc
@@ -38,6 +38,9 @@
#include <google/protobuf/stubs/logging.h>
#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/printer.h>
+#include <google/protobuf/stubs/strutil.h>
+#include <google/protobuf/stubs/substitute.h>
#include <google/protobuf/compiler/java/java_context.h>
#include <google/protobuf/compiler/java/java_enum_field.h>
#include <google/protobuf/compiler/java/java_enum_field_lite.h>
@@ -50,9 +53,6 @@
#include <google/protobuf/compiler/java/java_primitive_field_lite.h>
#include <google/protobuf/compiler/java/java_string_field.h>
#include <google/protobuf/compiler/java/java_string_field_lite.h>
-#include <google/protobuf/io/printer.h>
-#include <google/protobuf/stubs/strutil.h>
-#include <google/protobuf/stubs/substitute.h>
namespace google {
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_field.h b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_field.h
index 09384c483aa..481fbdb4567 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_field.h
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_field.h
@@ -156,7 +156,7 @@ template <>
FieldGeneratorMap<ImmutableFieldLiteGenerator>::~FieldGeneratorMap();
-// Field information used in FieldGeneartors.
+// Field information used in FieldGenerators.
struct FieldGeneratorInfo {
TProtoStringType name;
TProtoStringType capitalized_name;
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_file.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_file.cc
index 0809febb8b6..c2261ddfebe 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_file.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_file.cc
@@ -37,6 +37,11 @@
#include <memory>
#include <set>
+#include <google/protobuf/compiler/code_generator.h>
+#include <google/protobuf/io/printer.h>
+#include <google/protobuf/io/zero_copy_stream.h>
+#include <google/protobuf/dynamic_message.h>
+#include <google/protobuf/stubs/strutil.h>
#include <google/protobuf/compiler/java/java_context.h>
#include <google/protobuf/compiler/java/java_enum.h>
#include <google/protobuf/compiler/java/java_enum_lite.h>
@@ -47,12 +52,7 @@
#include <google/protobuf/compiler/java/java_name_resolver.h>
#include <google/protobuf/compiler/java/java_service.h>
#include <google/protobuf/compiler/java/java_shared_code_generator.h>
-#include <google/protobuf/compiler/code_generator.h>
#include <google/protobuf/descriptor.pb.h>
-#include <google/protobuf/io/printer.h>
-#include <google/protobuf/io/zero_copy_stream.h>
-#include <google/protobuf/dynamic_message.h>
-#include <google/protobuf/stubs/strutil.h>
namespace google {
namespace protobuf {
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_file.h b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_file.h
index b567b62fd94..7a5a8ec01db 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_file.h
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_file.h
@@ -38,6 +38,7 @@
#include <memory>
#include <string>
#include <vector>
+
#include <google/protobuf/stubs/common.h>
#include <google/protobuf/compiler/java/java_options.h>
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_generator.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_generator.cc
index 2b5728579e8..ce198c7692a 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_generator.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_generator.cc
@@ -37,6 +37,9 @@
#include <memory>
+#include <google/protobuf/io/printer.h>
+#include <google/protobuf/io/zero_copy_stream.h>
+#include <google/protobuf/stubs/stringprintf.h>
#include <google/protobuf/compiler/java/java_file.h>
#include <google/protobuf/compiler/java/java_generator_factory.h>
#include <google/protobuf/compiler/java/java_helpers.h>
@@ -44,8 +47,6 @@
#include <google/protobuf/compiler/java/java_options.h>
#include <google/protobuf/compiler/java/java_shared_code_generator.h>
#include <google/protobuf/descriptor.pb.h>
-#include <google/protobuf/io/printer.h>
-#include <google/protobuf/io/zero_copy_stream.h>
#include <google/protobuf/stubs/strutil.h>
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_generator.h b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_generator.h
index 90d26105501..e08c9807881 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_generator.h
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_generator.h
@@ -40,6 +40,7 @@
#include <string>
#include <google/protobuf/compiler/code_generator.h>
+// Must be included last.
#include <google/protobuf/port_def.inc>
namespace google {
@@ -54,7 +55,7 @@ namespace java {
class PROTOC_EXPORT JavaGenerator : public CodeGenerator {
public:
JavaGenerator();
- ~JavaGenerator();
+ ~JavaGenerator() override;
// implements CodeGenerator ----------------------------------------
bool Generate(const FileDescriptor* file, const TProtoStringType& parameter,
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_generator_factory.h b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_generator_factory.h
index 831d9dd8571..807bca383a3 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_generator_factory.h
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_generator_factory.h
@@ -78,7 +78,7 @@ class GeneratorFactory {
class ImmutableGeneratorFactory : public GeneratorFactory {
public:
ImmutableGeneratorFactory(Context* context);
- virtual ~ImmutableGeneratorFactory();
+ ~ImmutableGeneratorFactory() override;
MessageGenerator* NewMessageGenerator(
const Descriptor* descriptor) const override;
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_helpers.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_helpers.cc
index 4c613af8ea4..3f1f058c9e7 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_helpers.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_helpers.cc
@@ -40,13 +40,13 @@
#include <unordered_set>
#include <vector>
+#include <google/protobuf/wire_format.h>
+#include <google/protobuf/stubs/strutil.h>
#include <google/protobuf/stubs/stringprintf.h>
+#include <google/protobuf/stubs/substitute.h>
#include <google/protobuf/compiler/java/java_name_resolver.h>
#include <google/protobuf/compiler/java/java_names.h>
#include <google/protobuf/descriptor.pb.h>
-#include <google/protobuf/wire_format.h>
-#include <google/protobuf/stubs/strutil.h>
-#include <google/protobuf/stubs/substitute.h>
#include <google/protobuf/stubs/hash.h> // for hash<T *>
namespace google {
@@ -66,15 +66,27 @@ namespace {
const char* kDefaultPackage = "";
-// Names that should be avoided as field names.
-// Using them will cause the compiler to generate accessors whose names are
-// colliding with methods defined in base classes.
+// Names that should be avoided (in UpperCamelCase format).
+// Using them will cause the compiler to generate accessors whose names
+// collide with methods defined in base classes.
+// Keep this list in sync with specialFieldNames in
+// java/core/src/main/java/com/google/protobuf/DescriptorMessageInfoFactory.java
const char* kForbiddenWordList[] = {
- // message base class:
- "cached_size",
- "serialized_size",
// java.lang.Object:
- "class",
+ "Class",
+ // com.google.protobuf.MessageLiteOrBuilder:
+ "DefaultInstanceForType",
+ // com.google.protobuf.MessageLite:
+ "ParserForType",
+ "SerializedSize",
+ // com.google.protobuf.MessageOrBuilder:
+ "AllFields",
+ "DescriptorForType",
+ "InitializationErrorString",
+ // TODO(b/219045204): re-enable
+ // "UnknownFields",
+ // obsolete. kept for backwards compatibility of generated code
+ "CachedSize",
};
const std::unordered_set<TProtoStringType>* kReservedNames =
@@ -93,7 +105,7 @@ const std::unordered_set<TProtoStringType>* kReservedNames =
bool IsForbidden(const TProtoStringType& field_name) {
for (int i = 0; i < GOOGLE_ARRAYSIZE(kForbiddenWordList); ++i) {
- if (field_name == kForbiddenWordList[i]) {
+ if (UnderscoresToCamelCase(field_name, true) == kForbiddenWordList[i]) {
return true;
}
}
@@ -1049,8 +1061,7 @@ int GetExperimentalJavaFieldType(const FieldDescriptor* field) {
if (field->is_map()) {
if (!SupportUnknownEnumValue(field)) {
- const FieldDescriptor* value =
- field->message_type()->FindFieldByName("value");
+ const FieldDescriptor* value = field->message_type()->map_value();
if (GetJavaType(value) == JAVATYPE_ENUM) {
extra_bits |= kMapWithProto2EnumValue;
}
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_helpers.h b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_helpers.h
index b0cce4949b9..59bb718bc9d 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_helpers.h
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_helpers.h
@@ -38,10 +38,10 @@
#include <cstdint>
#include <string>
-#include <google/protobuf/compiler/java/java_context.h>
-#include <google/protobuf/descriptor.pb.h>
#include <google/protobuf/io/printer.h>
#include <google/protobuf/descriptor.h>
+#include <google/protobuf/compiler/java/java_context.h>
+#include <google/protobuf/descriptor.pb.h>
namespace google {
namespace protobuf {
@@ -151,6 +151,21 @@ inline bool IsDescriptorProto(const Descriptor* descriptor) {
// fields.
TProtoStringType GetOneofStoredType(const FieldDescriptor* field);
+// We use either the proto1 enums if the enum is generated, otherwise fall back
+// to use integers.
+enum class Proto1EnumRepresentation {
+ kEnum,
+ kInteger,
+};
+
+// Returns which representation we should use.
+inline Proto1EnumRepresentation GetProto1EnumRepresentation(
+ const EnumDescriptor* descriptor) {
+ if (descriptor->containing_type() != nullptr) {
+ return Proto1EnumRepresentation::kEnum;
+ }
+ return Proto1EnumRepresentation::kInteger;
+}
// Whether we should generate multiple java files for messages.
inline bool MultipleJavaFiles(const FileDescriptor* descriptor,
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_kotlin_generator.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_kotlin_generator.cc
index 9a189262750..fc0d823671e 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_kotlin_generator.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_kotlin_generator.cc
@@ -30,11 +30,11 @@
#include <google/protobuf/compiler/java/java_kotlin_generator.h>
+#include <google/protobuf/compiler/code_generator.h>
#include <google/protobuf/compiler/java/java_file.h>
+#include <google/protobuf/compiler/java/java_generator.h>
#include <google/protobuf/compiler/java/java_helpers.h>
#include <google/protobuf/compiler/java/java_options.h>
-#include <google/protobuf/compiler/java/java_generator.h>
-#include <google/protobuf/compiler/code_generator.h>
namespace google {
namespace protobuf {
@@ -63,11 +63,13 @@ bool KotlinGenerator::Generate(const FileDescriptor* file,
if (option.first == "output_list_file") {
file_options.output_list_file = option.second;
} else if (option.first == "immutable") {
+ // Note: the option is considered always set regardless of the input.
file_options.generate_immutable_code = true;
} else if (option.first == "mutable") {
*error = "Mutable not supported by Kotlin generator";
return false;
} else if (option.first == "shared") {
+ // Note: the option is considered always set regardless of the input.
file_options.generate_shared_code = true;
} else if (option.first == "lite") {
file_options.enforce_lite = true;
@@ -81,23 +83,17 @@ bool KotlinGenerator::Generate(const FileDescriptor* file,
}
}
- // By default we generate immutable code and shared code for immutable API.
- if (!file_options.generate_immutable_code &&
- !file_options.generate_shared_code) {
- file_options.generate_immutable_code = true;
- file_options.generate_shared_code = true;
- }
+ // We only support generation of immutable code so we do it.
+ file_options.generate_immutable_code = true;
+ file_options.generate_shared_code = true;
std::vector<TProtoStringType> all_files;
std::vector<TProtoStringType> all_annotations;
- std::unique_ptr<FileGenerator> file_generator;
- if (file_options.generate_immutable_code) {
- file_generator.reset(
+ std::unique_ptr<FileGenerator> file_generator(
new FileGenerator(file, file_options, /* immutable_api = */ true));
- }
- if (!file_generator->Validate(error)) {
+ if (!file_generator || !file_generator->Validate(error)) {
return false;
}
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_kotlin_generator.h b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_kotlin_generator.h
index 6e0fa8c2760..195acb65375 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_kotlin_generator.h
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_kotlin_generator.h
@@ -36,6 +36,8 @@
#include <string>
#include <google/protobuf/compiler/code_generator.h>
+
+// Must be included last.
#include <google/protobuf/port_def.inc>
namespace google {
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_map_field.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_map_field.cc
index a35bd42ebe7..7a93f4696d1 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_map_field.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_map_field.cc
@@ -30,11 +30,11 @@
#include <google/protobuf/compiler/java/java_map_field.h>
+#include <google/protobuf/io/printer.h>
#include <google/protobuf/compiler/java/java_context.h>
#include <google/protobuf/compiler/java/java_doc_comment.h>
#include <google/protobuf/compiler/java/java_helpers.h>
#include <google/protobuf/compiler/java/java_name_resolver.h>
-#include <google/protobuf/io/printer.h>
namespace google {
namespace protobuf {
@@ -47,14 +47,14 @@ const FieldDescriptor* KeyField(const FieldDescriptor* descriptor) {
GOOGLE_CHECK_EQ(FieldDescriptor::TYPE_MESSAGE, descriptor->type());
const Descriptor* message = descriptor->message_type();
GOOGLE_CHECK(message->options().map_entry());
- return message->FindFieldByName("key");
+ return message->map_key();
}
const FieldDescriptor* ValueField(const FieldDescriptor* descriptor) {
GOOGLE_CHECK_EQ(FieldDescriptor::TYPE_MESSAGE, descriptor->type());
const Descriptor* message = descriptor->message_type();
GOOGLE_CHECK(message->options().map_entry());
- return message->FindFieldByName("value");
+ return message->map_value();
}
TProtoStringType TypeName(const FieldDescriptor* field,
@@ -99,6 +99,8 @@ void SetMessageVariables(const FieldDescriptor* descriptor, int messageBitIndex,
const JavaType keyJavaType = GetJavaType(key);
const JavaType valueJavaType = GetJavaType(value);
+ TProtoStringType pass_through_nullness = "/* nullable */\n";
+
(*variables)["key_type"] = TypeName(key, name_resolver, false);
TProtoStringType boxed_key_type = TypeName(key, name_resolver, true);
(*variables)["boxed_key_type"] = boxed_key_type;
@@ -129,6 +131,9 @@ void SetMessageVariables(const FieldDescriptor* descriptor, int messageBitIndex,
(*variables)["value_enum_type"] = TypeName(value, name_resolver, false);
+ (*variables)["value_enum_type_pass_through_nullness"] =
+ pass_through_nullness + (*variables)["value_enum_type"];
+
if (SupportUnknownEnumValue(descriptor->file())) {
// Map unknown values to a special UNRECOGNIZED value if supported.
(*variables)["unrecognized_value"] =
@@ -140,6 +145,11 @@ void SetMessageVariables(const FieldDescriptor* descriptor, int messageBitIndex,
}
} else {
(*variables)["value_type"] = TypeName(value, name_resolver, false);
+
+ (*variables)["value_type_pass_through_nullness"] =
+ (IsReferenceType(valueJavaType) ? pass_through_nullness : "") +
+ (*variables)["value_type"];
+
(*variables)["boxed_value_type"] = TypeName(value, name_resolver, true);
(*variables)["value_wire_type"] = WireType(value);
(*variables)["value_default_value"] =
@@ -218,11 +228,12 @@ void ImmutableMapFieldGenerator::GenerateInterfaceMembers(
"${$get$capitalized_name$Map$}$();\n");
printer->Annotate("{", "}", descriptor_);
WriteFieldDocComment(printer, descriptor_);
- printer->Print(
- variables_,
- "$deprecation$$value_enum_type$ ${$get$capitalized_name$OrDefault$}$(\n"
- " $key_type$ key,\n"
- " $value_enum_type$ defaultValue);\n");
+ printer->Print(variables_,
+ "$deprecation$$value_enum_type_pass_through_nullness$ "
+ "${$get$capitalized_name$OrDefault$}$(\n"
+ " $key_type$ key,\n"
+ " $value_enum_type_pass_through_nullness$ "
+ " defaultValue);\n");
printer->Annotate("{", "}", descriptor_);
WriteFieldDocComment(printer, descriptor_);
printer->Print(
@@ -276,9 +287,10 @@ void ImmutableMapFieldGenerator::GenerateInterfaceMembers(
WriteFieldDocComment(printer, descriptor_);
printer->Print(variables_,
"$deprecation$\n"
- "$value_type$ ${$get$capitalized_name$OrDefault$}$(\n"
+ "$value_type_pass_through_nullness$ "
+ "${$get$capitalized_name$OrDefault$}$(\n"
" $key_type$ key,\n"
- " $value_type$ defaultValue);\n");
+ " $value_type_pass_through_nullness$ defaultValue);\n");
printer->Annotate("{", "}", descriptor_);
WriteFieldDocComment(printer, descriptor_);
printer->Print(variables_,
@@ -538,9 +550,10 @@ void ImmutableMapFieldGenerator::GenerateMapGetters(
variables_,
"@java.lang.Override\n"
"$deprecation$\n"
- "public $value_enum_type$ ${$get$capitalized_name$OrDefault$}$(\n"
+ "public $value_enum_type_pass_through_nullness$ "
+ "${$get$capitalized_name$OrDefault$}$(\n"
" $key_type$ key,\n"
- " $value_enum_type$ defaultValue) {\n"
+ " $value_enum_type_pass_through_nullness$ defaultValue) {\n"
" $key_null_check$\n"
" java.util.Map<$boxed_key_type$, $boxed_value_type$> map =\n"
" internalGet$capitalized_name$().getMap();\n"
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_map_field_lite.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_map_field_lite.cc
index 2c52ccaea78..8817f27339e 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_map_field_lite.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_map_field_lite.cc
@@ -32,11 +32,11 @@
#include <cstdint>
+#include <google/protobuf/io/printer.h>
#include <google/protobuf/compiler/java/java_context.h>
#include <google/protobuf/compiler/java/java_doc_comment.h>
#include <google/protobuf/compiler/java/java_helpers.h>
#include <google/protobuf/compiler/java/java_name_resolver.h>
-#include <google/protobuf/io/printer.h>
namespace google {
namespace protobuf {
@@ -49,14 +49,14 @@ const FieldDescriptor* KeyField(const FieldDescriptor* descriptor) {
GOOGLE_CHECK_EQ(FieldDescriptor::TYPE_MESSAGE, descriptor->type());
const Descriptor* message = descriptor->message_type();
GOOGLE_CHECK(message->options().map_entry());
- return message->FindFieldByName("key");
+ return message->map_key();
}
const FieldDescriptor* ValueField(const FieldDescriptor* descriptor) {
GOOGLE_CHECK_EQ(FieldDescriptor::TYPE_MESSAGE, descriptor->type());
const Descriptor* message = descriptor->message_type();
GOOGLE_CHECK(message->options().map_entry());
- return message->FindFieldByName("value");
+ return message->map_value();
}
TProtoStringType TypeName(const FieldDescriptor* field,
@@ -101,6 +101,8 @@ void SetMessageVariables(const FieldDescriptor* descriptor, int messageBitIndex,
const JavaType keyJavaType = GetJavaType(key);
const JavaType valueJavaType = GetJavaType(value);
+ TProtoStringType pass_through_nullness = "/* nullable */\n";
+
(*variables)["key_type"] = TypeName(key, name_resolver, false);
(*variables)["boxed_key_type"] = TypeName(key, name_resolver, true);
(*variables)["kt_key_type"] = KotlinTypeName(key, name_resolver);
@@ -128,6 +130,9 @@ void SetMessageVariables(const FieldDescriptor* descriptor, int messageBitIndex,
(*variables)["value_enum_type"] = TypeName(value, name_resolver, false);
+ (*variables)["value_enum_type_pass_through_nullness"] =
+ pass_through_nullness + (*variables)["value_enum_type"];
+
if (SupportUnknownEnumValue(descriptor->file())) {
// Map unknown values to a special UNRECOGNIZED value if supported.
(*variables)["unrecognized_value"] =
@@ -139,6 +144,11 @@ void SetMessageVariables(const FieldDescriptor* descriptor, int messageBitIndex,
}
} else {
(*variables)["value_type"] = TypeName(value, name_resolver, false);
+
+ (*variables)["value_type_pass_through_nullness"] =
+ (IsReferenceType(valueJavaType) ? pass_through_nullness : "") +
+ (*variables)["value_type"];
+
(*variables)["boxed_value_type"] = TypeName(value, name_resolver, true);
(*variables)["value_wire_type"] = WireType(value);
(*variables)["value_default_value"] =
@@ -203,11 +213,12 @@ void ImmutableMapFieldLiteGenerator::GenerateInterfaceMembers(
"${$get$capitalized_name$Map$}$();\n");
printer->Annotate("{", "}", descriptor_);
WriteFieldDocComment(printer, descriptor_);
- printer->Print(
- variables_,
- "$deprecation$$value_enum_type$ ${$get$capitalized_name$OrDefault$}$(\n"
- " $key_type$ key,\n"
- " $value_enum_type$ defaultValue);\n");
+ printer->Print(variables_,
+ "$deprecation$$value_enum_type_pass_through_nullness$ "
+ "${$get$capitalized_name$OrDefault$}$(\n"
+ " $key_type$ key,\n"
+ " $value_enum_type_pass_through_nullness$ "
+ " defaultValue);\n");
printer->Annotate("{", "}", descriptor_);
WriteFieldDocComment(printer, descriptor_);
printer->Print(
@@ -261,9 +272,10 @@ void ImmutableMapFieldLiteGenerator::GenerateInterfaceMembers(
WriteFieldDocComment(printer, descriptor_);
printer->Print(variables_,
"$deprecation$\n"
- "$value_type$ ${$get$capitalized_name$OrDefault$}$(\n"
+ "$value_type_pass_through_nullness$ "
+ "${$get$capitalized_name$OrDefault$}$(\n"
" $key_type$ key,\n"
- " $value_type$ defaultValue);\n");
+ " $value_type_pass_through_nullness$ defaultValue);\n");
printer->Annotate("{", "}", descriptor_);
WriteFieldDocComment(printer, descriptor_);
printer->Print(variables_,
@@ -606,9 +618,10 @@ void ImmutableMapFieldLiteGenerator::GenerateBuilderMembers(
variables_,
"@java.lang.Override\n"
"$deprecation$\n"
- "public $value_enum_type$ ${$get$capitalized_name$OrDefault$}$(\n"
+ "public $value_enum_type_pass_through_nullness$ "
+ "${$get$capitalized_name$OrDefault$}$(\n"
" $key_type$ key,\n"
- " $value_enum_type$ defaultValue) {\n"
+ " $value_enum_type_pass_through_nullness$ defaultValue) {\n"
" $key_null_check$\n"
" java.util.Map<$boxed_key_type$, $value_enum_type$> map =\n"
" instance.get$capitalized_name$Map();\n"
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message.cc
index e5343d6762e..9a5c25a538b 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message.cc
@@ -40,6 +40,11 @@
#include <memory>
#include <vector>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/io/printer.h>
+#include <google/protobuf/wire_format.h>
+#include <google/protobuf/stubs/strutil.h>
+#include <google/protobuf/stubs/substitute.h>
#include <google/protobuf/compiler/java/java_context.h>
#include <google/protobuf/compiler/java/java_doc_comment.h>
#include <google/protobuf/compiler/java/java_enum.h>
@@ -50,11 +55,6 @@
#include <google/protobuf/compiler/java/java_message_builder_lite.h>
#include <google/protobuf/compiler/java/java_name_resolver.h>
#include <google/protobuf/descriptor.pb.h>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/io/printer.h>
-#include <google/protobuf/wire_format.h>
-#include <google/protobuf/stubs/strutil.h>
-#include <google/protobuf/stubs/substitute.h>
namespace google {
namespace protobuf {
@@ -67,7 +67,7 @@ using internal::WireFormatLite;
namespace {
TProtoStringType MapValueImmutableClassdName(const Descriptor* descriptor,
ClassNameResolver* name_resolver) {
- const FieldDescriptor* value_field = descriptor->FindFieldByName("value");
+ const FieldDescriptor* value_field = descriptor->map_value();
GOOGLE_CHECK_EQ(FieldDescriptor::TYPE_MESSAGE, value_field->type());
return name_resolver->GetImmutableClassName(value_field->message_type());
}
@@ -1273,6 +1273,9 @@ void ImmutableMessageGenerator::GenerateParsingConstructor(
printer->Print(
"} catch (com.google.protobuf.InvalidProtocolBufferException e) {\n"
" throw e.setUnfinishedMessage(this);\n"
+ "} catch (com.google.protobuf.UninitializedMessageException e) {\n"
+ " throw "
+ "e.asInvalidProtocolBufferException().setUnfinishedMessage(this);\n"
"} catch (java.io.IOException e) {\n"
" throw new com.google.protobuf.InvalidProtocolBufferException(\n"
" e).setUnfinishedMessage(this);\n"
@@ -1455,7 +1458,7 @@ void ImmutableMessageGenerator::GenerateKotlinDsl(io::Printer* printer) const {
void ImmutableMessageGenerator::GenerateKotlinMembers(
io::Printer* printer) const {
printer->Print(
- "@kotlin.jvm.JvmSynthetic\n"
+ "@kotlin.jvm.JvmName(\"-initialize$camelcase_name$\")\n"
"public inline fun $camelcase_name$(block: $message_kt$.Dsl.() -> "
"kotlin.Unit): "
"$message$ "
@@ -1486,7 +1489,7 @@ void ImmutableMessageGenerator::GenerateTopLevelKotlinMembers(
"kotlin.Unit): "
"$message$ =\n"
" $message_kt$.Dsl._create(this.toBuilder()).apply { block() "
- "}._build()\n",
+ "}._build()\n\n",
"message", name_resolver_->GetClassName(descriptor_, true), "message_kt",
name_resolver_->GetKotlinExtensionsClassName(descriptor_));
@@ -1495,6 +1498,24 @@ void ImmutableMessageGenerator::GenerateTopLevelKotlinMembers(
ImmutableMessageGenerator(descriptor_->nested_type(i), context_)
.GenerateTopLevelKotlinMembers(printer);
}
+
+ GenerateKotlinOrNull(printer);
+}
+
+void ImmutableMessageGenerator::GenerateKotlinOrNull(io::Printer* printer) const {
+ for (int i = 0; i < descriptor_->field_count(); i++) {
+ const FieldDescriptor* field = descriptor_->field(i);
+ if (field->has_presence() && GetJavaType(field) == JAVATYPE_MESSAGE) {
+ printer->Print(
+ "val $full_classname$OrBuilder.$camelcase_name$OrNull: $full_name$?\n"
+ " get() = if (has$name$()) get$name$() else null\n\n",
+ "full_classname", name_resolver_->GetClassName(descriptor_, true),
+ "camelcase_name", context_->GetFieldGeneratorInfo(field)->name,
+ "full_name",
+ name_resolver_->GetImmutableClassName(field->message_type()), "name",
+ context_->GetFieldGeneratorInfo(field)->capitalized_name);
+ }
+ }
}
void ImmutableMessageGenerator::GenerateKotlinExtensions(
@@ -1504,7 +1525,7 @@ void ImmutableMessageGenerator::GenerateKotlinExtensions(
printer->Print(
"@Suppress(\"UNCHECKED_CAST\")\n"
"@kotlin.jvm.JvmSynthetic\n"
- "public operator fun <T> get(extension: "
+ "public operator fun <T : kotlin.Any> get(extension: "
"com.google.protobuf.ExtensionLite<$message$, T>): T {\n"
" return if (extension.isRepeated) {\n"
" get(extension as com.google.protobuf.ExtensionLite<$message$, "
@@ -1520,7 +1541,7 @@ void ImmutableMessageGenerator::GenerateKotlinExtensions(
"@kotlin.OptIn"
"(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class)\n"
"@kotlin.jvm.JvmName(\"-getRepeatedExtension\")\n"
- "public operator fun <E> get(\n"
+ "public operator fun <E : kotlin.Any> get(\n"
" extension: com.google.protobuf.ExtensionLite<$message$, List<E>>\n"
"): com.google.protobuf.kotlin.ExtensionList<E, $message$> {\n"
" return com.google.protobuf.kotlin.ExtensionList(extension, "
@@ -1549,7 +1570,7 @@ void ImmutableMessageGenerator::GenerateKotlinExtensions(
printer->Print(
"@kotlin.jvm.JvmSynthetic\n"
"@kotlin.PublishedApi\n"
- "internal fun <T> setExtension(extension: "
+ "internal fun <T : kotlin.Any> setExtension(extension: "
"com.google.protobuf.ExtensionLite<$message$, T>, "
"value: T) {\n"
" _builder.setExtension(extension, value)\n"
@@ -1592,7 +1613,7 @@ void ImmutableMessageGenerator::GenerateKotlinExtensions(
printer->Print(
"@kotlin.jvm.JvmSynthetic\n"
- "public fun <E> com.google.protobuf.kotlin.ExtensionList<E, "
+ "public fun <E : kotlin.Any> com.google.protobuf.kotlin.ExtensionList<E, "
"$message$>.add(value: E) {\n"
" _builder.addExtension(this.extension, value)\n"
"}\n\n",
@@ -1601,7 +1622,7 @@ void ImmutableMessageGenerator::GenerateKotlinExtensions(
printer->Print(
"@kotlin.jvm.JvmSynthetic\n"
"@Suppress(\"NOTHING_TO_INLINE\")\n"
- "public inline operator fun <E> "
+ "public inline operator fun <E : kotlin.Any> "
"com.google.protobuf.kotlin.ExtensionList<E, "
"$message$>.plusAssign"
"(value: E) {\n"
@@ -1611,7 +1632,7 @@ void ImmutableMessageGenerator::GenerateKotlinExtensions(
printer->Print(
"@kotlin.jvm.JvmSynthetic\n"
- "public fun <E> com.google.protobuf.kotlin.ExtensionList<E, "
+ "public fun <E : kotlin.Any> com.google.protobuf.kotlin.ExtensionList<E, "
"$message$>.addAll(values: Iterable<E>) {\n"
" for (value in values) {\n"
" add(value)\n"
@@ -1622,7 +1643,7 @@ void ImmutableMessageGenerator::GenerateKotlinExtensions(
printer->Print(
"@kotlin.jvm.JvmSynthetic\n"
"@Suppress(\"NOTHING_TO_INLINE\")\n"
- "public inline operator fun <E> "
+ "public inline operator fun <E : kotlin.Any> "
"com.google.protobuf.kotlin.ExtensionList<E, "
"$message$>.plusAssign(values: "
"Iterable<E>) {\n"
@@ -1632,7 +1653,8 @@ void ImmutableMessageGenerator::GenerateKotlinExtensions(
printer->Print(
"@kotlin.jvm.JvmSynthetic\n"
- "public operator fun <E> com.google.protobuf.kotlin.ExtensionList<E, "
+ "public operator fun <E : kotlin.Any> "
+ "com.google.protobuf.kotlin.ExtensionList<E, "
"$message$>.set(index: Int, value: "
"E) {\n"
" _builder.setExtension(this.extension, index, value)\n"
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message.h b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message.h
index cafc91e68ba..cc24d73d351 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message.h
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message.h
@@ -37,6 +37,7 @@
#include <map>
#include <string>
+
#include <google/protobuf/compiler/java/java_field.h>
namespace google {
@@ -100,7 +101,7 @@ class MessageGenerator {
class ImmutableMessageGenerator : public MessageGenerator {
public:
ImmutableMessageGenerator(const Descriptor* descriptor, Context* context);
- virtual ~ImmutableMessageGenerator();
+ ~ImmutableMessageGenerator() override;
void Generate(io::Printer* printer) override;
void GenerateInterface(io::Printer* printer) override;
@@ -136,6 +137,7 @@ class ImmutableMessageGenerator : public MessageGenerator {
void GenerateParsingConstructor(io::Printer* printer);
void GenerateMutableCopy(io::Printer* printer);
void GenerateKotlinExtensions(io::Printer* printer) const;
+ void GenerateKotlinOrNull(io::Printer* printer) const;
void GenerateAnyMethods(io::Printer* printer);
Context* context_;
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_builder.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_builder.cc
index 510b9d785c5..e8ff5fa33b9 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_builder.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_builder.cc
@@ -39,6 +39,11 @@
#include <memory>
#include <vector>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/io/printer.h>
+#include <google/protobuf/wire_format.h>
+#include <google/protobuf/stubs/strutil.h>
+#include <google/protobuf/stubs/substitute.h>
#include <google/protobuf/compiler/java/java_context.h>
#include <google/protobuf/compiler/java/java_doc_comment.h>
#include <google/protobuf/compiler/java/java_enum.h>
@@ -47,11 +52,6 @@
#include <google/protobuf/compiler/java/java_helpers.h>
#include <google/protobuf/compiler/java/java_name_resolver.h>
#include <google/protobuf/descriptor.pb.h>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/io/printer.h>
-#include <google/protobuf/wire_format.h>
-#include <google/protobuf/stubs/strutil.h>
-#include <google/protobuf/stubs/substitute.h>
namespace google {
namespace protobuf {
@@ -61,7 +61,7 @@ namespace java {
namespace {
TProtoStringType MapValueImmutableClassdName(const Descriptor* descriptor,
ClassNameResolver* name_resolver) {
- const FieldDescriptor* value_field = descriptor->FindFieldByName("value");
+ const FieldDescriptor* value_field = descriptor->map_value();
GOOGLE_CHECK_EQ(FieldDescriptor::TYPE_MESSAGE, value_field->type());
return name_resolver->GetImmutableClassName(value_field->message_type());
}
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_builder.h b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_builder.h
index fcd73b34362..619bf9eca13 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_builder.h
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_builder.h
@@ -37,6 +37,7 @@
#include <map>
#include <string>
+
#include <google/protobuf/compiler/java/java_field.h>
namespace google {
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_builder_lite.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_builder_lite.cc
index bff99b7b1aa..5f90e8d6919 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_builder_lite.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_builder_lite.cc
@@ -39,6 +39,11 @@
#include <memory>
#include <vector>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/io/printer.h>
+#include <google/protobuf/wire_format.h>
+#include <google/protobuf/stubs/strutil.h>
+#include <google/protobuf/stubs/substitute.h>
#include <google/protobuf/compiler/java/java_context.h>
#include <google/protobuf/compiler/java/java_doc_comment.h>
#include <google/protobuf/compiler/java/java_enum.h>
@@ -47,11 +52,6 @@
#include <google/protobuf/compiler/java/java_helpers.h>
#include <google/protobuf/compiler/java/java_name_resolver.h>
#include <google/protobuf/descriptor.pb.h>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/io/printer.h>
-#include <google/protobuf/wire_format.h>
-#include <google/protobuf/stubs/strutil.h>
-#include <google/protobuf/stubs/substitute.h>
namespace google {
namespace protobuf {
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_builder_lite.h b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_builder_lite.h
index 3402adf3322..03ecbf870b1 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_builder_lite.h
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_builder_lite.h
@@ -37,6 +37,7 @@
#include <map>
#include <string>
+
#include <google/protobuf/compiler/java/java_field.h>
namespace google {
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_field.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_field.cc
index bdd80a811f4..5db89dbe218 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_field.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_field.cc
@@ -32,17 +32,18 @@
// Based on original Protocol Buffers design by
// Sanjay Ghemawat, Jeff Dean, and others.
+#include <google/protobuf/compiler/java/java_message_field.h>
+
#include <map>
#include <string>
+#include <google/protobuf/io/printer.h>
+#include <google/protobuf/wire_format.h>
+#include <google/protobuf/stubs/strutil.h>
#include <google/protobuf/compiler/java/java_context.h>
#include <google/protobuf/compiler/java/java_doc_comment.h>
#include <google/protobuf/compiler/java/java_helpers.h>
-#include <google/protobuf/compiler/java/java_message_field.h>
#include <google/protobuf/compiler/java/java_name_resolver.h>
-#include <google/protobuf/io/printer.h>
-#include <google/protobuf/wire_format.h>
-#include <google/protobuf/stubs/strutil.h>
namespace google {
namespace protobuf {
@@ -438,6 +439,16 @@ void ImmutableMessageFieldGenerator::GenerateKotlinDslMembers(
"public fun ${$has$kt_capitalized_name$$}$(): kotlin.Boolean {\n"
" return $kt_dsl_builder$.${$has$capitalized_name$$}$()\n"
"}\n");
+
+ GenerateKotlinOrNull(printer);
+}
+
+void ImmutableMessageFieldGenerator::GenerateKotlinOrNull(io::Printer* printer) const {
+ if (descriptor_->has_optional_keyword()) {
+ printer->Print(variables_,
+ "public val $classname$Kt.Dsl.$name$OrNull: $kt_type$?\n"
+ " get() = $kt_dsl_builder$.$name$OrNull\n");
+ }
}
void ImmutableMessageFieldGenerator::GenerateFieldBuilderInitializationCode(
@@ -698,8 +709,9 @@ void ImmutableMessageOneofFieldGenerator::GenerateBuilderMembers(
"if ($has_oneof_case_message$) {\n"
" $name$Builder_.mergeFrom(value);\n"
- "}\n"
- "$name$Builder_.setMessage(value);\n",
+ "} else {\n"
+ " $name$Builder_.setMessage(value);\n"
+ "}\n",
"$set_oneof_case_message$;\n"
"return this;\n");
@@ -1426,7 +1438,7 @@ void RepeatedImmutableMessageFieldGenerator::GenerateKotlinDslMembers(
"<$kt_type$, ${$$kt_capitalized_name$Proxy$}$>."
"add(value: $kt_type$) {\n"
" $kt_dsl_builder$.${$add$capitalized_name$$}$(value)\n"
- "}");
+ "}\n");
WriteFieldAccessorDocComment(printer, descriptor_, LIST_ADDER,
/* builder */ false);
@@ -1438,7 +1450,7 @@ void RepeatedImmutableMessageFieldGenerator::GenerateKotlinDslMembers(
"<$kt_type$, ${$$kt_capitalized_name$Proxy$}$>."
"plusAssign(value: $kt_type$) {\n"
" add(value)\n"
- "}");
+ "}\n");
WriteFieldAccessorDocComment(printer, descriptor_, LIST_MULTI_ADDER,
/* builder */ false);
@@ -1449,7 +1461,7 @@ void RepeatedImmutableMessageFieldGenerator::GenerateKotlinDslMembers(
"<$kt_type$, ${$$kt_capitalized_name$Proxy$}$>."
"addAll(values: kotlin.collections.Iterable<$kt_type$>) {\n"
" $kt_dsl_builder$.${$addAll$capitalized_name$$}$(values)\n"
- "}");
+ "}\n");
WriteFieldAccessorDocComment(printer, descriptor_, LIST_MULTI_ADDER,
/* builder */ false);
@@ -1462,7 +1474,7 @@ void RepeatedImmutableMessageFieldGenerator::GenerateKotlinDslMembers(
"<$kt_type$, ${$$kt_capitalized_name$Proxy$}$>."
"plusAssign(values: kotlin.collections.Iterable<$kt_type$>) {\n"
" addAll(values)\n"
- "}");
+ "}\n");
WriteFieldAccessorDocComment(printer, descriptor_, LIST_INDEXED_SETTER,
/* builder */ false);
@@ -1474,7 +1486,7 @@ void RepeatedImmutableMessageFieldGenerator::GenerateKotlinDslMembers(
"<$kt_type$, ${$$kt_capitalized_name$Proxy$}$>."
"set(index: kotlin.Int, value: $kt_type$) {\n"
" $kt_dsl_builder$.${$set$capitalized_name$$}$(index, value)\n"
- "}");
+ "}\n");
WriteFieldAccessorDocComment(printer, descriptor_, CLEARER,
/* builder */ false);
@@ -1485,7 +1497,7 @@ void RepeatedImmutableMessageFieldGenerator::GenerateKotlinDslMembers(
"<$kt_type$, ${$$kt_capitalized_name$Proxy$}$>."
"clear() {\n"
" $kt_dsl_builder$.${$clear$capitalized_name$$}$()\n"
- "}");
+ "}\n\n");
}
} // namespace java
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_field.h b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_field.h
index a0c24ae7b74..94a144d4ae6 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_field.h
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_field.h
@@ -37,6 +37,7 @@
#include <map>
#include <string>
+
#include <google/protobuf/compiler/java/java_field.h>
namespace google {
@@ -61,7 +62,7 @@ class ImmutableMessageFieldGenerator : public ImmutableFieldGenerator {
int messageBitIndex,
int builderBitIndex,
Context* context);
- ~ImmutableMessageFieldGenerator();
+ ~ImmutableMessageFieldGenerator() override;
// implements ImmutableFieldGenerator
// ---------------------------------------
@@ -102,6 +103,7 @@ class ImmutableMessageFieldGenerator : public ImmutableFieldGenerator {
private:
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableMessageFieldGenerator);
+ void GenerateKotlinOrNull(io::Printer* printer) const;
};
class ImmutableMessageOneofFieldGenerator
@@ -110,7 +112,7 @@ class ImmutableMessageOneofFieldGenerator
ImmutableMessageOneofFieldGenerator(const FieldDescriptor* descriptor,
int messageBitIndex, int builderBitIndex,
Context* context);
- ~ImmutableMessageOneofFieldGenerator();
+ ~ImmutableMessageOneofFieldGenerator() override;
void GenerateMembers(io::Printer* printer) const override;
void GenerateBuilderMembers(io::Printer* printer) const override;
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_field_lite.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_field_lite.cc
index 100726856c5..523190d85a0 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_field_lite.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_field_lite.cc
@@ -38,13 +38,13 @@
#include <map>
#include <string>
+#include <google/protobuf/io/printer.h>
+#include <google/protobuf/wire_format.h>
+#include <google/protobuf/stubs/strutil.h>
#include <google/protobuf/compiler/java/java_context.h>
#include <google/protobuf/compiler/java/java_doc_comment.h>
#include <google/protobuf/compiler/java/java_helpers.h>
#include <google/protobuf/compiler/java/java_name_resolver.h>
-#include <google/protobuf/io/printer.h>
-#include <google/protobuf/wire_format.h>
-#include <google/protobuf/stubs/strutil.h>
namespace google {
namespace protobuf {
@@ -308,6 +308,15 @@ void ImmutableMessageFieldLiteGenerator::GenerateKotlinDslMembers(
"public fun ${$has$kt_capitalized_name$$}$(): kotlin.Boolean {\n"
" return $kt_dsl_builder$.${$has$capitalized_name$$}$()\n"
"}\n");
+ GenerateKotlinOrNull(printer);
+}
+
+void ImmutableMessageFieldLiteGenerator::GenerateKotlinOrNull(io::Printer* printer) const {
+ if (descriptor_->has_optional_keyword()) {
+ printer->Print(variables_,
+ "public val $classname$Kt.Dsl.$name$OrNull: $kt_type$?\n"
+ " get() = $kt_dsl_builder$.$name$OrNull\n");
+ }
}
void ImmutableMessageFieldLiteGenerator::GenerateFieldInfo(
@@ -816,7 +825,7 @@ void RepeatedImmutableMessageFieldLiteGenerator::GenerateKotlinDslMembers(
"<$kt_type$, ${$$kt_capitalized_name$Proxy$}$>."
"add(value: $kt_type$) {\n"
" $kt_dsl_builder$.${$add$capitalized_name$$}$(value)\n"
- "}");
+ "}\n");
WriteFieldAccessorDocComment(printer, descriptor_, LIST_ADDER,
/* builder */ false);
@@ -828,7 +837,7 @@ void RepeatedImmutableMessageFieldLiteGenerator::GenerateKotlinDslMembers(
"<$kt_type$, ${$$kt_capitalized_name$Proxy$}$>."
"plusAssign(value: $kt_type$) {\n"
" add(value)\n"
- "}");
+ "}\n");
WriteFieldAccessorDocComment(printer, descriptor_, LIST_MULTI_ADDER,
/* builder */ false);
@@ -839,7 +848,7 @@ void RepeatedImmutableMessageFieldLiteGenerator::GenerateKotlinDslMembers(
"<$kt_type$, ${$$kt_capitalized_name$Proxy$}$>."
"addAll(values: kotlin.collections.Iterable<$kt_type$>) {\n"
" $kt_dsl_builder$.${$addAll$capitalized_name$$}$(values)\n"
- "}");
+ "}\n");
WriteFieldAccessorDocComment(printer, descriptor_, LIST_MULTI_ADDER,
/* builder */ false);
@@ -852,7 +861,7 @@ void RepeatedImmutableMessageFieldLiteGenerator::GenerateKotlinDslMembers(
"<$kt_type$, ${$$kt_capitalized_name$Proxy$}$>."
"plusAssign(values: kotlin.collections.Iterable<$kt_type$>) {\n"
" addAll(values)\n"
- "}");
+ "}\n");
WriteFieldAccessorDocComment(printer, descriptor_, LIST_INDEXED_SETTER,
/* builder */ false);
@@ -864,7 +873,7 @@ void RepeatedImmutableMessageFieldLiteGenerator::GenerateKotlinDslMembers(
"<$kt_type$, ${$$kt_capitalized_name$Proxy$}$>."
"set(index: kotlin.Int, value: $kt_type$) {\n"
" $kt_dsl_builder$.${$set$capitalized_name$$}$(index, value)\n"
- "}");
+ "}\n");
WriteFieldAccessorDocComment(printer, descriptor_, CLEARER,
/* builder */ false);
@@ -875,7 +884,7 @@ void RepeatedImmutableMessageFieldLiteGenerator::GenerateKotlinDslMembers(
"<$kt_type$, ${$$kt_capitalized_name$Proxy$}$>."
"clear() {\n"
" $kt_dsl_builder$.${$clear$capitalized_name$$}$()\n"
- "}");
+ "}\n");
}
} // namespace java
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_field_lite.h b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_field_lite.h
index 9f778da45bb..189d760afe4 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_field_lite.h
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_field_lite.h
@@ -62,7 +62,7 @@ class ImmutableMessageFieldLiteGenerator : public ImmutableFieldLiteGenerator {
explicit ImmutableMessageFieldLiteGenerator(const FieldDescriptor* descriptor,
int messageBitIndex,
Context* context);
- ~ImmutableMessageFieldLiteGenerator();
+ ~ImmutableMessageFieldLiteGenerator() override;
// implements ImmutableFieldLiteGenerator
// ------------------------------------
@@ -85,6 +85,7 @@ class ImmutableMessageFieldLiteGenerator : public ImmutableFieldLiteGenerator {
private:
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableMessageFieldLiteGenerator);
+ void GenerateKotlinOrNull(io::Printer* printer) const;
};
class ImmutableMessageOneofFieldLiteGenerator
@@ -93,7 +94,7 @@ class ImmutableMessageOneofFieldLiteGenerator
ImmutableMessageOneofFieldLiteGenerator(const FieldDescriptor* descriptor,
int messageBitIndex,
Context* context);
- ~ImmutableMessageOneofFieldLiteGenerator();
+ ~ImmutableMessageOneofFieldLiteGenerator() override;
void GenerateMembers(io::Printer* printer) const override;
void GenerateBuilderMembers(io::Printer* printer) const override;
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_lite.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_lite.cc
index f5d7c9362a6..615dece6cb1 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_lite.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_lite.cc
@@ -40,6 +40,11 @@
#include <memory>
#include <vector>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/io/printer.h>
+#include <google/protobuf/wire_format.h>
+#include <google/protobuf/stubs/strutil.h>
+#include <google/protobuf/stubs/substitute.h>
#include <google/protobuf/compiler/java/java_context.h>
#include <google/protobuf/compiler/java/java_doc_comment.h>
#include <google/protobuf/compiler/java/java_enum_lite.h>
@@ -50,11 +55,6 @@
#include <google/protobuf/compiler/java/java_message_builder_lite.h>
#include <google/protobuf/compiler/java/java_name_resolver.h>
#include <google/protobuf/descriptor.pb.h>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/io/printer.h>
-#include <google/protobuf/wire_format.h>
-#include <google/protobuf/stubs/strutil.h>
-#include <google/protobuf/stubs/substitute.h>
namespace google {
namespace protobuf {
@@ -779,7 +779,7 @@ void ImmutableMessageLiteGenerator::GenerateKotlinDsl(
void ImmutableMessageLiteGenerator::GenerateKotlinMembers(
io::Printer* printer) const {
printer->Print(
- "@kotlin.jvm.JvmSynthetic\n"
+ "@kotlin.jvm.JvmName(\"-initialize$camelcase_name$\")\n"
"public inline fun $camelcase_name$(block: $message_kt$.Dsl.() -> "
"kotlin.Unit): "
"$message$ =\n"
@@ -808,7 +808,7 @@ void ImmutableMessageLiteGenerator::GenerateTopLevelKotlinMembers(
"kotlin.Unit): "
"$message$ =\n"
" $message_kt$.Dsl._create(this.toBuilder()).apply { block() "
- "}._build()\n",
+ "}._build()\n\n",
"message", name_resolver_->GetClassName(descriptor_, true), "message_kt",
name_resolver_->GetKotlinExtensionsClassName(descriptor_));
@@ -817,6 +817,26 @@ void ImmutableMessageLiteGenerator::GenerateTopLevelKotlinMembers(
ImmutableMessageLiteGenerator(descriptor_->nested_type(i), context_)
.GenerateTopLevelKotlinMembers(printer);
}
+
+ GenerateKotlinOrNull(printer);
+}
+
+void ImmutableMessageLiteGenerator::GenerateKotlinOrNull(io::Printer* printer) const {
+ // Generate getFieldOrNull getters for all optional message fields.
+ for (int i = 0; i < descriptor_->field_count(); i++) {
+ const FieldDescriptor* field = descriptor_->field(i);
+ if (field->has_presence() && GetJavaType(field) == JAVATYPE_MESSAGE) {
+ printer->Print(
+ "val $full_classname$OrBuilder.$camelcase_name$OrNull: "
+ "$full_name$?\n"
+ " get() = if (has$name$()) get$name$() else null\n\n",
+ "full_classname", name_resolver_->GetClassName(descriptor_, true),
+ "camelcase_name", context_->GetFieldGeneratorInfo(field)->name,
+ "full_name",
+ name_resolver_->GetImmutableClassName(field->message_type()), "name",
+ context_->GetFieldGeneratorInfo(field)->capitalized_name);
+ }
+ }
}
void ImmutableMessageLiteGenerator::GenerateKotlinExtensions(
@@ -826,7 +846,7 @@ void ImmutableMessageLiteGenerator::GenerateKotlinExtensions(
printer->Print(
"@Suppress(\"UNCHECKED_CAST\")\n"
"@kotlin.jvm.JvmSynthetic\n"
- "public operator fun <T> get(extension: "
+ "public operator fun <T : kotlin.Any> get(extension: "
"com.google.protobuf.ExtensionLite<$message$, T>): T {\n"
" return if (extension.isRepeated) {\n"
" get(extension as com.google.protobuf.ExtensionLite<$message$, "
@@ -842,7 +862,7 @@ void ImmutableMessageLiteGenerator::GenerateKotlinExtensions(
"@kotlin.OptIn"
"(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class)\n"
"@kotlin.jvm.JvmName(\"-getRepeatedExtension\")\n"
- "public operator fun <E> get(\n"
+ "public operator fun <E : kotlin.Any> get(\n"
" extension: com.google.protobuf.ExtensionLite<$message$, List<E>>\n"
"): com.google.protobuf.kotlin.ExtensionList<E, $message$> {\n"
" return com.google.protobuf.kotlin.ExtensionList(extension, "
@@ -871,7 +891,7 @@ void ImmutableMessageLiteGenerator::GenerateKotlinExtensions(
printer->Print(
"@kotlin.jvm.JvmSynthetic\n"
"@kotlin.PublishedApi\n"
- "internal fun <T> setExtension(extension: "
+ "internal fun <T : kotlin.Any> setExtension(extension: "
"com.google.protobuf.ExtensionLite<$message$, T>, "
"value: T) {\n"
" _builder.setExtension(extension, value)\n"
@@ -914,7 +934,7 @@ void ImmutableMessageLiteGenerator::GenerateKotlinExtensions(
printer->Print(
"@kotlin.jvm.JvmSynthetic\n"
- "public fun<E> com.google.protobuf.kotlin.ExtensionList<E, "
+ "public fun<E : kotlin.Any> com.google.protobuf.kotlin.ExtensionList<E, "
"$message$>.add(value: E) {\n"
" _builder.addExtension(this.extension, value)\n"
"}\n\n",
@@ -923,7 +943,7 @@ void ImmutableMessageLiteGenerator::GenerateKotlinExtensions(
printer->Print(
"@kotlin.jvm.JvmSynthetic\n"
"@Suppress(\"NOTHING_TO_INLINE\")\n"
- "public inline operator fun <E> "
+ "public inline operator fun <E : kotlin.Any> "
"com.google.protobuf.kotlin.ExtensionList<E, "
"$message$>.plusAssign"
"(value: E) {\n"
@@ -933,7 +953,7 @@ void ImmutableMessageLiteGenerator::GenerateKotlinExtensions(
printer->Print(
"@kotlin.jvm.JvmSynthetic\n"
- "public fun<E> com.google.protobuf.kotlin.ExtensionList<E, "
+ "public fun<E : kotlin.Any> com.google.protobuf.kotlin.ExtensionList<E, "
"$message$>.addAll(values: Iterable<E>) {\n"
" for (value in values) {\n"
" add(value)\n"
@@ -944,7 +964,7 @@ void ImmutableMessageLiteGenerator::GenerateKotlinExtensions(
printer->Print(
"@kotlin.jvm.JvmSynthetic\n"
"@Suppress(\"NOTHING_TO_INLINE\")\n"
- "public inline operator fun <E> "
+ "public inline operator fun <E : kotlin.Any> "
"com.google.protobuf.kotlin.ExtensionList<E, "
"$message$>.plusAssign(values: "
"Iterable<E>) {\n"
@@ -954,7 +974,8 @@ void ImmutableMessageLiteGenerator::GenerateKotlinExtensions(
printer->Print(
"@kotlin.jvm.JvmSynthetic\n"
- "public operator fun <E> com.google.protobuf.kotlin.ExtensionList<E, "
+ "public operator fun <E : kotlin.Any> "
+ "com.google.protobuf.kotlin.ExtensionList<E, "
"$message$>.set(index: Int, value: "
"E) {\n"
" _builder.setExtension(this.extension, index, value)\n"
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_lite.h b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_lite.h
index adb0df7cc77..c0afbc99ec1 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_lite.h
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_message_lite.h
@@ -37,6 +37,7 @@
#include <map>
#include <string>
+
#include <google/protobuf/compiler/java/java_field.h>
#include <google/protobuf/compiler/java/java_message.h>
@@ -48,7 +49,7 @@ namespace java {
class ImmutableMessageLiteGenerator : public MessageGenerator {
public:
ImmutableMessageLiteGenerator(const Descriptor* descriptor, Context* context);
- virtual ~ImmutableMessageLiteGenerator();
+ ~ImmutableMessageLiteGenerator() override;
void Generate(io::Printer* printer) override;
void GenerateInterface(io::Printer* printer) override;
@@ -70,6 +71,7 @@ class ImmutableMessageLiteGenerator : public MessageGenerator {
void GenerateConstructor(io::Printer* printer);
void GenerateDynamicMethodNewBuildMessageInfo(io::Printer* printer);
void GenerateKotlinExtensions(io::Printer* printer) const;
+ void GenerateKotlinOrNull(io::Printer* printer) const;
Context* context_;
ClassNameResolver* name_resolver_;
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_name_resolver.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_name_resolver.cc
index 595ead4955e..a257409ab74 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_name_resolver.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_name_resolver.cc
@@ -33,10 +33,10 @@
#include <map>
#include <string>
-#include <google/protobuf/compiler/java/java_helpers.h>
-#include <google/protobuf/compiler/java/java_names.h>
#include <google/protobuf/compiler/code_generator.h>
#include <google/protobuf/stubs/substitute.h>
+#include <google/protobuf/compiler/java/java_helpers.h>
+#include <google/protobuf/compiler/java/java_names.h>
namespace google {
namespace protobuf {
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_name_resolver.h b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_name_resolver.h
index 180f3de630d..46f699c6aa0 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_name_resolver.h
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_name_resolver.h
@@ -123,7 +123,6 @@ class ClassNameResolver {
TProtoStringType GetDowngradedFileClassName(const FileDescriptor* file);
TProtoStringType GetDowngradedClassName(const Descriptor* descriptor);
- private:
// Get the full name of a Java class by prepending the Java package name
// or outer class name.
TProtoStringType GetClassFullName(const TProtoStringType& name_without_package,
@@ -132,6 +131,8 @@ class ClassNameResolver {
TProtoStringType GetClassFullName(const TProtoStringType& name_without_package,
const FileDescriptor* file, bool immutable,
bool is_own_file, bool kotlin);
+
+ private:
// Get the Java Class style full name of a message.
TProtoStringType GetJavaClassFullName(const TProtoStringType& name_without_package,
const FileDescriptor* file, bool immutable);
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_primitive_field.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_primitive_field.cc
index 8b3d234469e..abe88b67e04 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_primitive_field.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_primitive_field.cc
@@ -40,13 +40,13 @@
#include <google/protobuf/stubs/logging.h>
#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/printer.h>
+#include <google/protobuf/wire_format.h>
+#include <google/protobuf/stubs/strutil.h>
#include <google/protobuf/compiler/java/java_context.h>
#include <google/protobuf/compiler/java/java_doc_comment.h>
#include <google/protobuf/compiler/java/java_helpers.h>
#include <google/protobuf/compiler/java/java_name_resolver.h>
-#include <google/protobuf/io/printer.h>
-#include <google/protobuf/wire_format.h>
-#include <google/protobuf/stubs/strutil.h>
namespace google {
namespace protobuf {
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_primitive_field.h b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_primitive_field.h
index f04fd0f7b5a..8883b83d66e 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_primitive_field.h
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_primitive_field.h
@@ -37,6 +37,7 @@
#include <map>
#include <string>
+
#include <google/protobuf/compiler/java/java_field.h>
namespace google {
@@ -101,7 +102,7 @@ class ImmutablePrimitiveOneofFieldGenerator
ImmutablePrimitiveOneofFieldGenerator(const FieldDescriptor* descriptor,
int messageBitIndex,
int builderBitIndex, Context* context);
- ~ImmutablePrimitiveOneofFieldGenerator();
+ ~ImmutablePrimitiveOneofFieldGenerator() override;
void GenerateMembers(io::Printer* printer) const override;
void GenerateBuilderMembers(io::Printer* printer) const override;
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_primitive_field_lite.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_primitive_field_lite.cc
index 6ab207e7af8..20ba2a40512 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_primitive_field_lite.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_primitive_field_lite.cc
@@ -40,13 +40,13 @@
#include <google/protobuf/stubs/logging.h>
#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/printer.h>
+#include <google/protobuf/wire_format.h>
+#include <google/protobuf/stubs/strutil.h>
#include <google/protobuf/compiler/java/java_context.h>
#include <google/protobuf/compiler/java/java_doc_comment.h>
#include <google/protobuf/compiler/java/java_helpers.h>
#include <google/protobuf/compiler/java/java_name_resolver.h>
-#include <google/protobuf/io/printer.h>
-#include <google/protobuf/wire_format.h>
-#include <google/protobuf/stubs/strutil.h>
namespace google {
namespace protobuf {
@@ -161,7 +161,6 @@ void SetPrimitiveVariables(const FieldDescriptor* descriptor,
(*variables)["is_field_present_message"] = GenerateGetBit(messageBitIndex);
} else {
(*variables)["set_has_field_bit_message"] = "";
- (*variables)["set_has_field_bit_message"] = "";
(*variables)["clear_has_field_bit_message"] = "";
switch (descriptor->type()) {
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_primitive_field_lite.h b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_primitive_field_lite.h
index 445012e0e33..a7f03e2accd 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_primitive_field_lite.h
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_primitive_field_lite.h
@@ -93,7 +93,7 @@ class ImmutablePrimitiveOneofFieldLiteGenerator
ImmutablePrimitiveOneofFieldLiteGenerator(const FieldDescriptor* descriptor,
int messageBitIndex,
Context* context);
- ~ImmutablePrimitiveOneofFieldLiteGenerator();
+ ~ImmutablePrimitiveOneofFieldLiteGenerator() override;
void GenerateMembers(io::Printer* printer) const override;
void GenerateBuilderMembers(io::Printer* printer) const override;
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_service.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_service.cc
index 05748f58472..59e11deb776 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_service.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_service.cc
@@ -34,12 +34,12 @@
#include <google/protobuf/compiler/java/java_service.h>
+#include <google/protobuf/io/printer.h>
+#include <google/protobuf/stubs/strutil.h>
#include <google/protobuf/compiler/java/java_context.h>
#include <google/protobuf/compiler/java/java_doc_comment.h>
#include <google/protobuf/compiler/java/java_helpers.h>
#include <google/protobuf/compiler/java/java_name_resolver.h>
-#include <google/protobuf/io/printer.h>
-#include <google/protobuf/stubs/strutil.h>
namespace google {
namespace protobuf {
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_service.h b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_service.h
index 58d2c8d7507..a03a3de561f 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_service.h
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_service.h
@@ -78,7 +78,7 @@ class ImmutableServiceGenerator : public ServiceGenerator {
public:
ImmutableServiceGenerator(const ServiceDescriptor* descriptor,
Context* context);
- virtual ~ImmutableServiceGenerator();
+ ~ImmutableServiceGenerator() override;
void Generate(io::Printer* printer) override;
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_shared_code_generator.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_shared_code_generator.cc
index a0d5e2b45f6..7d7e95dfba2 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_shared_code_generator.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_shared_code_generator.cc
@@ -34,15 +34,15 @@
#include <memory>
-#include <google/protobuf/compiler/java/java_helpers.h>
-#include <google/protobuf/compiler/java/java_name_resolver.h>
-#include <google/protobuf/compiler/java/java_names.h>
#include <google/protobuf/compiler/code_generator.h>
-#include <google/protobuf/descriptor.pb.h>
#include <google/protobuf/io/printer.h>
#include <google/protobuf/io/zero_copy_stream.h>
#include <google/protobuf/descriptor.h>
#include <google/protobuf/stubs/strutil.h>
+#include <google/protobuf/compiler/java/java_helpers.h>
+#include <google/protobuf/compiler/java/java_name_resolver.h>
+#include <google/protobuf/compiler/java/java_names.h>
+#include <google/protobuf/descriptor.pb.h>
namespace google {
namespace protobuf {
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_string_field.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_string_field.cc
index 0c9ba04e563..5628441a74b 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_string_field.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_string_field.cc
@@ -41,13 +41,13 @@
#include <google/protobuf/stubs/logging.h>
#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/printer.h>
+#include <google/protobuf/wire_format.h>
+#include <google/protobuf/stubs/strutil.h>
#include <google/protobuf/compiler/java/java_context.h>
#include <google/protobuf/compiler/java/java_doc_comment.h>
#include <google/protobuf/compiler/java/java_helpers.h>
#include <google/protobuf/compiler/java/java_name_resolver.h>
-#include <google/protobuf/io/printer.h>
-#include <google/protobuf/wire_format.h>
-#include <google/protobuf/stubs/strutil.h>
namespace google {
namespace protobuf {
@@ -992,7 +992,7 @@ void RepeatedImmutableStringFieldGenerator::GenerateKotlinDslMembers(
// List<String> += String
WriteFieldAccessorDocComment(printer, descriptor_, LIST_ADDER,
/* builder */ false);
- printer->Print(variables_,
+ printer->Print(variables_,
"@kotlin.jvm.JvmSynthetic\n"
"@kotlin.jvm.JvmName(\"plusAssign$kt_capitalized_name$\")\n"
"@Suppress(\"NOTHING_TO_INLINE\")\n"
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_string_field.h b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_string_field.h
index 02f0734aea3..f282163b55c 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_string_field.h
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_string_field.h
@@ -38,6 +38,7 @@
#include <map>
#include <string>
+
#include <google/protobuf/compiler/java/java_field.h>
namespace google {
@@ -61,7 +62,7 @@ class ImmutableStringFieldGenerator : public ImmutableFieldGenerator {
explicit ImmutableStringFieldGenerator(const FieldDescriptor* descriptor,
int messageBitIndex,
int builderBitIndex, Context* context);
- ~ImmutableStringFieldGenerator();
+ ~ImmutableStringFieldGenerator() override;
// implements ImmutableFieldGenerator
// ---------------------------------------
@@ -101,7 +102,7 @@ class ImmutableStringOneofFieldGenerator
ImmutableStringOneofFieldGenerator(const FieldDescriptor* descriptor,
int messageBitIndex, int builderBitIndex,
Context* context);
- ~ImmutableStringOneofFieldGenerator();
+ ~ImmutableStringOneofFieldGenerator() override;
private:
void GenerateMembers(io::Printer* printer) const override;
diff --git a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_string_field_lite.cc b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_string_field_lite.cc
index 3150c766ce9..d2cfad0dcd6 100644
--- a/contrib/libs/protoc/src/google/protobuf/compiler/java/java_string_field_lite.cc
+++ b/contrib/libs/protoc/src/google/protobuf/compiler/java/java_string_field_lite.cc
@@ -41,13 +41,13 @@
#include <google/protobuf/stubs/logging.h>
#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/printer.h>
+#include <google/protobuf/wire_format.h>
+#include <google/protobuf/stubs/strutil.h>
#include <google/protobuf/compiler/java/java_context.h>
#include <google/protobuf/compiler/java/java_doc_comment.h>
#include <google/protobuf/compiler/java/java_helpers.h>
#include <google/protobuf/compiler/java/java_name_resolver.h>
-#include <google/protobuf/io/printer.h>
-#include <google/protobuf/wire_format.h>
-#include <google/protobuf/stubs/strutil.h>
namespace google {
namespace protobuf {