18
18
#include "absl/container/btree_set.h"
19
19
#include "absl/log/absl_check.h"
20
20
#include "absl/log/absl_log.h"
21
+
#include "absl/status/status.h"
21
22
#include "absl/strings/str_cat.h"
22
23
#include "absl/strings/string_view.h"
23
24
#include "google/protobuf/compiler/code_generator.h"
33
34
#include "google/protobuf/compiler/java/shared_code_generator.h"
34
35
#include "google/protobuf/compiler/retention.h"
35
36
#include "google/protobuf/compiler/versions.h"
37
+
#include "google/protobuf/descriptor.h"
36
38
#include "google/protobuf/descriptor.pb.h"
37
39
#include "google/protobuf/descriptor_visitor.h"
38
40
#include "google/protobuf/dynamic_message.h"
@@ -252,6 +254,19 @@ bool FileGenerator::Validate(std::string* error) {
252
254
"https://github.com/protocolbuffers/protobuf/blob/main/java/"
253
255
"lite.md";
254
256
}
257
+
google::protobuf::internal::VisitDescriptors(*file_, [&](const EnumDescriptor& enm) {
258
+
absl::Status status = ValidateNestInFileClassFeature(enm);
259
+
if (!status.ok()) {
260
+
absl::StrAppend(error, status.message());
261
+
}
262
+
});
263
+
264
+
google::protobuf::internal::VisitDescriptors(*file_, [&](const Descriptor& message) {
265
+
absl::Status status = ValidateNestInFileClassFeature(message);
266
+
if (!status.ok()) {
267
+
absl::StrAppend(error, status.message());
268
+
}
269
+
});
255
270
256
271
return error->empty();
257
272
}
@@ -338,17 +353,21 @@ void FileGenerator::Generate(io::Printer* printer) {
338
353
339
354
// -----------------------------------------------------------------
340
355
341
-
if (!MultipleJavaFiles(file_, immutable_api_)) {
342
-
for (int i = 0; i < file_->enum_type_count(); i++) {
356
+
for (int i = 0; i < file_->enum_type_count(); i++) {
357
+
if (NestedInFileClass(*file_->enum_type(i), immutable_api_)) {
343
358
generator_factory_->NewEnumGenerator(file_->enum_type(i))
344
359
->Generate(printer);
345
360
}
346
-
for (int i = 0; i < file_->message_type_count(); i++) {
361
+
}
362
+
for (int i = 0; i < file_->message_type_count(); i++) {
363
+
if (NestedInFileClass(*file_->message_type(i), immutable_api_)) {
347
364
message_generators_[i]->GenerateInterface(printer);
348
365
message_generators_[i]->Generate(printer);
349
366
}
350
-
if (HasGenericServices(file_, context_->EnforceLite())) {
351
-
for (int i = 0; i < file_->service_count(); i++) {
367
+
}
368
+
if (HasGenericServices(file_, context_->EnforceLite())) {
369
+
for (int i = 0; i < file_->service_count(); i++) {
370
+
if (NestedInFileClass(*file_->service(i), immutable_api_)) {
352
371
std::unique_ptr<ServiceGenerator> generator(
353
372
generator_factory_->NewServiceGenerator(file_->service(i)));
354
373
generator->Generate(printer);
@@ -564,38 +583,39 @@ void FileGenerator::GenerateSiblings(
564
583
const std::string& package_dir, GeneratorContext* context,
565
584
std::vector<std::string>* file_list,
566
585
std::vector<std::string>* annotation_list) {
567
-
if (MultipleJavaFiles(file_, immutable_api_)) {
568
-
for (int i = 0; i < file_->enum_type_count(); i++) {
569
-
std::unique_ptr<EnumGenerator> generator(
570
-
generator_factory_->NewEnumGenerator(file_->enum_type(i)));
571
-
GenerateSibling<EnumGenerator>(
572
-
package_dir, java_package_, file_->enum_type(i), context, file_list,
573
-
options_.annotate_code, annotation_list, "", generator.get(),
574
-
options_.opensource_runtime, &EnumGenerator::Generate);
575
-
}
576
-
for (int i = 0; i < file_->message_type_count(); i++) {
577
-
if (immutable_api_) {
578
-
GenerateSibling<MessageGenerator>(
579
-
package_dir, java_package_, file_->message_type(i), context,
580
-
file_list, options_.annotate_code, annotation_list, "OrBuilder",
581
-
message_generators_[i].get(), options_.opensource_runtime,
582
-
&MessageGenerator::GenerateInterface);
583
-
}
586
+
for (int i = 0; i < file_->enum_type_count(); i++) {
587
+
if (NestedInFileClass(*file_->enum_type(i), immutable_api_)) continue;
588
+
std::unique_ptr<EnumGenerator> generator(
589
+
generator_factory_->NewEnumGenerator(file_->enum_type(i)));
590
+
GenerateSibling<EnumGenerator>(
591
+
package_dir, java_package_, file_->enum_type(i), context, file_list,
592
+
options_.annotate_code, annotation_list, "", generator.get(),
593
+
options_.opensource_runtime, &EnumGenerator::Generate);
594
+
}
595
+
for (int i = 0; i < file_->message_type_count(); i++) {
596
+
if (NestedInFileClass(*file_->message_type(i), immutable_api_)) continue;
597
+
if (immutable_api_) {
584
598
GenerateSibling<MessageGenerator>(
585
599
package_dir, java_package_, file_->message_type(i), context,
586
-
file_list, options_.annotate_code, annotation_list, "",
600
+
file_list, options_.annotate_code, annotation_list, "OrBuilder",
587
601
message_generators_[i].get(), options_.opensource_runtime,
588
-
&MessageGenerator::Generate);
602
+
&MessageGenerator::GenerateInterface);
589
603
}
590
-
if (HasGenericServices(file_, context_->EnforceLite())) {
591
-
for (int i = 0; i < file_->service_count(); i++) {
592
-
std::unique_ptr<ServiceGenerator> generator(
593
-
generator_factory_->NewServiceGenerator(file_->service(i)));
594
-
GenerateSibling<ServiceGenerator>(
595
-
package_dir, java_package_, file_->service(i), context, file_list,
596
-
options_.annotate_code, annotation_list, "", generator.get(),
597
-
options_.opensource_runtime, &ServiceGenerator::Generate);
598
-
}
604
+
GenerateSibling<MessageGenerator>(
605
+
package_dir, java_package_, file_->message_type(i), context, file_list,
606
+
options_.annotate_code, annotation_list, "",
607
+
message_generators_[i].get(), options_.opensource_runtime,
608
+
&MessageGenerator::Generate);
609
+
}
610
+
if (HasGenericServices(file_, context_->EnforceLite())) {
611
+
for (int i = 0; i < file_->service_count(); i++) {
612
+
if (NestedInFileClass(*file_->service(i), immutable_api_)) continue;
613
+
std::unique_ptr<ServiceGenerator> generator(
614
+
generator_factory_->NewServiceGenerator(file_->service(i)));
615
+
GenerateSibling<ServiceGenerator>(
616
+
package_dir, java_package_, file_->service(i), context, file_list,
617
+
options_.annotate_code, annotation_list, "", generator.get(),
618
+
options_.opensource_runtime, &ServiceGenerator::Generate);
599
619
}
600
620
}
601
621
}
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4