Since 7.5.2 version global message declaration has priority over nested message declaration.
Example + reproduction:
message NestedMessage {
int32 id = 1;
}
message TestMessage {
message NestedMessage {
int32 id = 1;
string name = 2;
}
NestedMessage nested = 1;
// this one will work properly
// TestMessage.NestedMessage nested = 1;
}
const data = {
nested: {
id: 0,
name: 'hello',
},
};
const encoded = TestMessage.encode(data).finish();
const decoded = TestMessage.decode(encoded);
console.log('encoded', Array.from(encoded));
console.log('decoded', decoded);
The result is:
encoded [ 10, 2, 8, 0 ]
decoded TestMessage { nested: NestedMessage { id: 0 } }
but it has to be:
encoded [
10, 9, 8, 0, 18,
5, 104, 101, 108, 108,
111
]
decoded TestMessage { nested: NestedMessage { id: 0, name: 'hello' } }