Fix issue where nested messages in non-primary .proto files couldn't be used.

PiperOrigin-RevId: 604383247
pull/15704/head
Protobuf Team Bot 1 year ago committed by Copybara-Service
parent 2699579875
commit bdd833f8fc
  1. 5
      rust/test/package_other.proto
  2. 21
      src/google/protobuf/compiler/rust/generator.cc

@ -9,7 +9,10 @@ syntax = "proto2";
package testing_packages;
message OtherMsgWithPackage {}
message OtherMsgWithPackage {
message Nested {}
optional Nested nested = 1;
}
enum OtherEnumWithPackage {
OTHER_ENUM_WITH_PACKAGE_UNSPECIFIED = 0;

@ -44,23 +44,10 @@ namespace {
void EmitPubUseOfOwnTypes(Context& ctx, const FileDescriptor& primary_file,
const FileDescriptor& non_primary_src) {
auto mod = RustInternalModuleName(ctx, non_primary_src);
for (int i = 0; i < non_primary_src.message_type_count(); ++i) {
auto& msg = *non_primary_src.message_type(i);
ctx.Emit({{"mod", mod}, {"Msg", RsSafeName(msg.name())}},
R"rs(
pub use crate::$mod$::$Msg$;
// TODO Address use for imported crates
pub use crate::$mod$::$Msg$View;
pub use crate::$mod$::$Msg$Mut;
)rs");
}
for (int i = 0; i < non_primary_src.enum_type_count(); ++i) {
auto& enum_ = *non_primary_src.enum_type(i);
ctx.Emit({{"mod", mod}, {"Enum", EnumRsName(enum_)}},
R"rs(
pub use crate::$mod$::$Enum$;
)rs");
}
ctx.Emit({{"mod", mod}}, R"rs(
#[allow(unused_imports)]
pub use crate::$mod$::*;
)rs");
}
// Emits `pub use <crate_name>::<modules for parent types>::Type` for all

Loading…
Cancel
Save