|
@@ -180,10 +180,17 @@ void UmbrellaClassGenerator::WriteDescriptor(io::Printer* printer) {
|
|
|
"descriptor = pbr::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,\n");
|
|
|
printer->Print(" new pbr::FileDescriptor[] { ");
|
|
|
for (int i = 0; i < file_->dependency_count(); i++) {
|
|
|
- printer->Print(
|
|
|
+ // descriptor.proto is special: we don't allow access to the generated code, but there's
|
|
|
+ // a separately-exposed property to get at the file descriptor, specifically to allow this
|
|
|
+ // kind of dependency.
|
|
|
+ if (IsDescriptorProto(file_->dependency(i))) {
|
|
|
+ printer->Print("pbr::FileDescriptor.DescriptorProtoFileDescriptor, ");
|
|
|
+ } else {
|
|
|
+ printer->Print(
|
|
|
"$full_umbrella_class_name$.Descriptor, ",
|
|
|
"full_umbrella_class_name",
|
|
|
GetUmbrellaClassName(file_->dependency(i)));
|
|
|
+ }
|
|
|
}
|
|
|
printer->Print("},\n"
|
|
|
" new pbr::GeneratedCodeInfo(");
|