@@ -98,12 +98,12 @@ void PrintForwardDeclarations(const std::set<std::string>* declarations,
9898
9999FileGenerator::FileGenerator (const FileDescriptor* file, bool enforce_lite)
100100 : file_(file),
101- classname_ (FileClassName(file)),
101+ classname_ (java:: FileClassName(file)),
102102 enforce_lite_(enforce_lite) {
103103 if (IsGenerateFileDirMapping ()) {
104104 output_dir_ = FileParentDir (file);
105105 } else {
106- output_dir_ = JavaPackageToDir (FileJavaPackage (file));
106+ output_dir_ = JavaPackageToDir (java:: FileJavaPackage (file));
107107 }
108108}
109109
@@ -161,20 +161,21 @@ void FileGenerator::GenerateHeader(GeneratorContext* context) {
161161 }
162162 declarations.insert (" @class ComGoogleProtobufExtensionRegistryLite" );
163163
164- if (!GenerateMultipleFiles ()) {
165- for (int i = 0 ; i < file_->message_type_count (); i++) {
166- std::unique_ptr<MessageGenerator> generator;
167- if (enforce_lite_) {
168- generator =
169- std::make_unique<MessageLiteGenerator>(file_->message_type (i));
170- } else {
171- generator = std::make_unique<MessageGenerator>(file_->message_type (i));
172- }
173- generator->CollectMessageOrBuilderImports (&headers);
174- generator->CollectHeaderImports (&headers);
175- generator->CollectForwardDeclarations (&declarations);
176- generator->CollectMessageOrBuilderForwardDeclarations (&declarations);
164+ for (int i = 0 ; i < file_->message_type_count (); i++) {
165+ if (GenerateMultipleFiles (file_->message_type (i))) {
166+ continue ;
167+ }
168+ std::unique_ptr<MessageGenerator> generator;
169+ if (enforce_lite_) {
170+ generator =
171+ std::make_unique<MessageLiteGenerator>(file_->message_type (i));
172+ } else {
173+ generator = std::make_unique<MessageGenerator>(file_->message_type (i));
177174 }
175+ generator->CollectMessageOrBuilderImports (&headers);
176+ generator->CollectHeaderImports (&headers);
177+ generator->CollectForwardDeclarations (&declarations);
178+ generator->CollectMessageOrBuilderForwardDeclarations (&declarations);
178179 }
179180
180181 PrintImports (&headers, &printer);
@@ -242,22 +243,26 @@ void FileGenerator::GenerateHeader(GeneratorContext* context) {
242243 ExtensionGenerator (file_->extension (i)).GenerateMembersHeader (&printer);
243244 }
244245
245- if (! GenerateMultipleFiles () ) {
246- for ( int i = 0 ; i < file_->enum_type_count (); i++ ) {
247- EnumGenerator (file_-> enum_type (i)). GenerateHeader (&printer) ;
246+ for ( int i = 0 ; i < file_-> enum_type_count (); i++ ) {
247+ if ( GenerateMultipleFiles ( file_->enum_type (i)) ) {
248+ continue ;
248249 }
250+ EnumGenerator (file_->enum_type (i)).GenerateHeader (&printer);
251+ }
249252
250- for (int i = 0 ; i < file_->message_type_count (); i++) {
251- std::unique_ptr<MessageGenerator> generator;
252- if (enforce_lite_) {
253- generator =
254- std::make_unique<MessageLiteGenerator>(file_-> message_type (i)) ;
255- } else {
256- generator = std::make_unique<MessageGenerator>(file_-> message_type (i));
257- }
258- generator-> GenerateMessageOrBuilder (&printer);
259- generator-> GenerateHeader (&printer );
253+ for (int i = 0 ; i < file_->message_type_count (); i++) {
254+ if ( GenerateMultipleFiles (file_-> message_type (i))) {
255+ continue ;
256+ }
257+ std::unique_ptr<MessageGenerator> generator ;
258+ if (enforce_lite_) {
259+ generator =
260+ std::make_unique<MessageLiteGenerator>(file_-> message_type (i));
261+ } else {
262+ generator = std::make_unique<MessageGenerator>(file_-> message_type (i) );
260263 }
264+ generator->GenerateMessageOrBuilder (&printer);
265+ generator->GenerateHeader (&printer);
261266 }
262267 printer.Print (
263268 " \n "
@@ -279,22 +284,27 @@ void FileGenerator::GenerateSource(GeneratorContext* context) {
279284 headers.insert (" com/google/protobuf/ExtensionRegistry.h" );
280285 }
281286 headers.insert (" com/google/protobuf/ExtensionRegistryLite.h" );
282- if ( GenerateMultipleFiles () ) {
283- for ( int i = 0 ; i < file_->message_type_count (); i++ ) {
287+ for ( int i = 0 ; i < file_-> message_type_count (); i++ ) {
288+ if ( GenerateMultipleFiles ( file_->message_type (i)) ) {
284289 headers.insert (GetHeader (file_->message_type (i)));
285290 }
286- } else {
287- for (int i = 0 ; i < file_->message_type_count (); i++) {
288- if (enforce_lite_) {
289- MessageLiteGenerator (file_->message_type (i))
290- .CollectSourceImports (&headers);
291- } else {
292- MessageGenerator (file_->message_type (i)).CollectSourceImports (&headers);
293- }
291+ }
292+ for (int i = 0 ; i < file_->message_type_count (); i++) {
293+ if (GenerateMultipleFiles (file_->message_type (i))) {
294+ continue ;
294295 }
295- for (int i = 0 ; i < file_->enum_type_count (); i++) {
296- EnumGenerator (file_->enum_type (i)).CollectSourceImports (&headers);
296+ if (enforce_lite_) {
297+ MessageLiteGenerator (file_->message_type (i))
298+ .CollectSourceImports (&headers);
299+ } else {
300+ MessageGenerator (file_->message_type (i)).CollectSourceImports (&headers);
301+ }
302+ }
303+ for (int i = 0 ; i < file_->enum_type_count (); i++) {
304+ if (GenerateMultipleFiles (file_->enum_type (i))) {
305+ continue ;
297306 }
307+ EnumGenerator (file_->enum_type (i)).CollectSourceImports (&headers);
298308 }
299309 for (int i = 0 ; i < file_->extension_count (); i++) {
300310 ExtensionGenerator (file_->extension (i)).CollectSourceImports (&headers);
@@ -402,16 +412,20 @@ void FileGenerator::GenerateSource(GeneratorContext* context) {
402412 printer.Outdent ();
403413 printer.Print (" }\n " );
404414
405- if (! GenerateMultipleFiles () ) {
406- for ( int i = 0 ; i < file_->enum_type_count (); i++ ) {
407- EnumGenerator (file_-> enum_type (i)). GenerateSource (&printer) ;
415+ for ( int i = 0 ; i < file_-> enum_type_count (); i++ ) {
416+ if ( GenerateMultipleFiles ( file_->enum_type (i)) ) {
417+ continue ;
408418 }
409- for (int i = 0 ; i < file_->message_type_count (); i++) {
410- if (enforce_lite_) {
411- MessageLiteGenerator (file_->message_type (i)).GenerateSource (&printer);
412- } else {
413- MessageGenerator (file_->message_type (i)).GenerateSource (&printer);
414- }
419+ EnumGenerator (file_->enum_type (i)).GenerateSource (&printer);
420+ }
421+ for (int i = 0 ; i < file_->message_type_count (); i++) {
422+ if (GenerateMultipleFiles (file_->message_type (i))) {
423+ continue ;
424+ }
425+ if (enforce_lite_) {
426+ MessageLiteGenerator (file_->message_type (i)).GenerateSource (&printer);
427+ } else {
428+ MessageGenerator (file_->message_type (i)).GenerateSource (&printer);
415429 }
416430 }
417431}
@@ -528,21 +542,31 @@ void FileGenerator::GenerateMessageOrBuilder(
528542}
529543
530544void FileGenerator::GenerateSiblings (GeneratorContext* context) {
531- if (GenerateMultipleFiles ()) {
532- for (int i = 0 ; i < file_->enum_type_count (); i++) {
533- GenerateEnumHeader (context, file_->enum_type (i));
534- GenerateEnumSource (context, file_->enum_type (i));
545+ for (int i = 0 ; i < file_->enum_type_count (); i++) {
546+ if (!GenerateMultipleFiles (file_->enum_type (i))) {
547+ continue ;
535548 }
536- for (int i = 0 ; i < file_->message_type_count (); i++) {
537- GenerateMessageHeader (context, file_->message_type (i));
538- GenerateMessageSource (context, file_->message_type (i));
539- GenerateMessageOrBuilder (context, file_->message_type (i));
549+ GenerateEnumHeader (context, file_->enum_type (i));
550+ GenerateEnumSource (context, file_->enum_type (i));
551+ }
552+ for (int i = 0 ; i < file_->message_type_count (); i++) {
553+ if (!GenerateMultipleFiles (file_->message_type (i))) {
554+ continue ;
540555 }
556+ GenerateMessageHeader (context, file_->message_type (i));
557+ GenerateMessageSource (context, file_->message_type (i));
558+ GenerateMessageOrBuilder (context, file_->message_type (i));
541559 }
542560}
543561
544- bool FileGenerator::GenerateMultipleFiles () {
545- return file_->options ().java_multiple_files () && !IsGenerateFileDirMapping ();
562+ bool FileGenerator::GenerateMultipleFiles (const Descriptor* descriptor) {
563+ return !java::NestedInFileClass (*descriptor, /* immutable=*/ true ) &&
564+ !IsGenerateFileDirMapping ();
565+ }
566+
567+ bool FileGenerator::GenerateMultipleFiles (const EnumDescriptor* descriptor) {
568+ return !java::NestedInFileClass (*descriptor, /* immutable=*/ true ) &&
569+ !IsGenerateFileDirMapping ();
546570}
547571
548572void PrintProperty (io::Printer* printer, const std::string& key,
0 commit comments