From 4a4a1627c158d976ee80f278024a49ced8b12712 Mon Sep 17 00:00:00 2001 From: Adam Cozzette Date: Tue, 27 Sep 2016 15:36:41 -0700 Subject: Fixed references to foreign nested messages with CommonJS-style imports A bug was causing generated JSPB code with CommonJS-style imports to refer incorrectly to nested messages from other .proto files. The generated code would have things like "test_pb.InnerMessage" instead of "test_pb.OuterMessage.InnerMessage". This commit fixes the problem by correctly taking into account any message nesting. --- js/message_test.js | 14 ++++++++++++++ js/test.proto | 8 ++++++++ js/test2.proto | 6 ++++++ 3 files changed, 28 insertions(+) (limited to 'js') diff --git a/js/message_test.js b/js/message_test.js index 97c594c8..b0a0a72e 100644 --- a/js/message_test.js +++ b/js/message_test.js @@ -1040,4 +1040,18 @@ describe('Message test suite', function() { assertNan(message.getDefaultDoubleField()); }); + // Verify that we can successfully use a field referring to a nested message + // from a different .proto file. + it('testForeignNestedMessage', function() { + var msg = new proto.jspb.test.ForeignNestedFieldMessage(); + var nested = new proto.jspb.test.Deeply.Nested.Message(); + nested.setCount(5); + msg.setDeeplyNestedMessage(nested); + + // After a serialization-deserialization round trip we should get back the + // same data we started with. + var serialized = msg.serializeBinary(); + var deserialized = proto.jspb.test.ForeignNestedFieldMessage.deserializeBinary(serialized); + assertEquals(5, deserialized.getDeeplyNestedMessage().getCount()); + }); }); diff --git a/js/test.proto b/js/test.proto index 48cb37e1..db238e1a 100644 --- a/js/test.proto +++ b/js/test.proto @@ -260,3 +260,11 @@ enum MapValueEnumNoBinary { message MapValueMessageNoBinary { optional int32 foo = 1; } + +message Deeply { + message Nested { + message Message { + optional int32 count = 1; + } + } +} diff --git a/js/test2.proto b/js/test2.proto index 44e55eff..b67f93fa 100644 --- a/js/test2.proto +++ b/js/test2.proto @@ -35,6 +35,8 @@ option java_multiple_files = true; package jspb.test; +import "test.proto"; + message TestExtensionsMessage { optional int32 intfield = 1; extensions 100 to max; @@ -52,3 +54,7 @@ extend TestExtensionsMessage { optional ExtensionMessage floating_msg_field = 101; optional string floating_str_field = 102; } + +message ForeignNestedFieldMessage { + optional Deeply.Nested.Message deeply_nested_message = 1; +} -- cgit v1.2.3