upb: first attempt at implementing name mangling for minitable symbols
PiperOrigin-RevId: 571636273
diff --git a/python/descriptor.c b/python/descriptor.c
index d1726e4..2e4c447 100644
--- a/python/descriptor.c
+++ b/python/descriptor.c
@@ -369,7 +369,7 @@
static PyObject* PyUpb_Descriptor_GetOptions(PyObject* _self, PyObject* args) {
PyUpb_DescriptorBase* self = (void*)_self;
return PyUpb_DescriptorBase_GetOptions(
- self, upb_MessageDef_Options(self->def), &google_protobuf_MessageOptions_msg_init,
+ self, upb_MessageDef_Options(self->def), &google__protobuf__MessageOptions_msg_init,
PYUPB_DESCRIPTOR_PROTO_PACKAGE ".MessageOptions");
}
@@ -377,7 +377,7 @@
PyObject* py_proto) {
return PyUpb_DescriptorBase_CopyToProto(
_self, (PyUpb_ToProto_Func*)&upb_MessageDef_ToProto,
- &google_protobuf_DescriptorProto_msg_init,
+ &google__protobuf__DescriptorProto_msg_init,
PYUPB_DESCRIPTOR_PROTO_PACKAGE ".DescriptorProto", py_proto);
}
@@ -793,7 +793,7 @@
PyObject* args) {
PyUpb_DescriptorBase* self = (void*)_self;
return PyUpb_DescriptorBase_GetOptions(
- self, upb_EnumDef_Options(self->def), &google_protobuf_EnumOptions_msg_init,
+ self, upb_EnumDef_Options(self->def), &google__protobuf__EnumOptions_msg_init,
PYUPB_DESCRIPTOR_PROTO_PACKAGE ".EnumOptions");
}
@@ -801,7 +801,7 @@
PyObject* py_proto) {
return PyUpb_DescriptorBase_CopyToProto(
_self, (PyUpb_ToProto_Func*)&upb_EnumDef_ToProto,
- &google_protobuf_EnumDescriptorProto_msg_init,
+ &google__protobuf__EnumDescriptorProto_msg_init,
PYUPB_DESCRIPTOR_PROTO_PACKAGE ".EnumDescriptorProto", py_proto);
}
@@ -884,7 +884,7 @@
PyUpb_DescriptorBase* self = (void*)_self;
return PyUpb_DescriptorBase_GetOptions(
self, upb_EnumValueDef_Options(self->def),
- &google_protobuf_EnumValueOptions_msg_init,
+ &google__protobuf__EnumValueOptions_msg_init,
PYUPB_DESCRIPTOR_PROTO_PACKAGE ".EnumValueOptions");
}
@@ -1084,7 +1084,7 @@
PyObject* args) {
PyUpb_DescriptorBase* self = (void*)_self;
return PyUpb_DescriptorBase_GetOptions(
- self, upb_FieldDef_Options(self->def), &google_protobuf_FieldOptions_msg_init,
+ self, upb_FieldDef_Options(self->def), &google__protobuf__FieldOptions_msg_init,
PYUPB_DESCRIPTOR_PROTO_PACKAGE ".FieldOptions");
}
@@ -1222,7 +1222,7 @@
void* closure) {
return PyUpb_DescriptorBase_GetSerializedProto(
self, (PyUpb_ToProto_Func*)&upb_FileDef_ToProto,
- &google_protobuf_FileDescriptorProto_msg_init);
+ &google__protobuf__FileDescriptorProto_msg_init);
}
static PyObject* PyUpb_FileDescriptor_GetMessageTypesByName(PyObject* _self,
@@ -1325,7 +1325,7 @@
PyObject* args) {
PyUpb_DescriptorBase* self = (void*)_self;
return PyUpb_DescriptorBase_GetOptions(
- self, upb_FileDef_Options(self->def), &google_protobuf_FileOptions_msg_init,
+ self, upb_FileDef_Options(self->def), &google__protobuf__FileOptions_msg_init,
PYUPB_DESCRIPTOR_PROTO_PACKAGE ".FileOptions");
}
@@ -1333,7 +1333,7 @@
PyObject* py_proto) {
return PyUpb_DescriptorBase_CopyToProto(
_self, (PyUpb_ToProto_Func*)&upb_FileDef_ToProto,
- &google_protobuf_FileDescriptorProto_msg_init,
+ &google__protobuf__FileDescriptorProto_msg_init,
PYUPB_DESCRIPTOR_PROTO_PACKAGE ".FileDescriptorProto", py_proto);
}
@@ -1445,7 +1445,7 @@
PyObject* args) {
PyUpb_DescriptorBase* self = (void*)_self;
return PyUpb_DescriptorBase_GetOptions(
- self, upb_MethodDef_Options(self->def), &google_protobuf_MethodOptions_msg_init,
+ self, upb_MethodDef_Options(self->def), &google__protobuf__MethodOptions_msg_init,
PYUPB_DESCRIPTOR_PROTO_PACKAGE ".MethodOptions");
}
@@ -1453,7 +1453,7 @@
PyObject* py_proto) {
return PyUpb_DescriptorBase_CopyToProto(
_self, (PyUpb_ToProto_Func*)&upb_MethodDef_ToProto,
- &google_protobuf_MethodDescriptorProto_msg_init,
+ &google__protobuf__MethodDescriptorProto_msg_init,
PYUPB_DESCRIPTOR_PROTO_PACKAGE ".MethodDescriptorProto", py_proto);
}
@@ -1549,7 +1549,7 @@
PyObject* args) {
PyUpb_DescriptorBase* self = (void*)_self;
return PyUpb_DescriptorBase_GetOptions(
- self, upb_OneofDef_Options(self->def), &google_protobuf_OneofOptions_msg_init,
+ self, upb_OneofDef_Options(self->def), &google__protobuf__OneofOptions_msg_init,
PYUPB_DESCRIPTOR_PROTO_PACKAGE ".OneofOptions");
}
@@ -1649,7 +1649,7 @@
PyObject* args) {
PyUpb_DescriptorBase* self = (void*)_self;
return PyUpb_DescriptorBase_GetOptions(
- self, upb_ServiceDef_Options(self->def), &google_protobuf_ServiceOptions_msg_init,
+ self, upb_ServiceDef_Options(self->def), &google__protobuf__ServiceOptions_msg_init,
PYUPB_DESCRIPTOR_PROTO_PACKAGE ".ServiceOptions");
}
@@ -1657,7 +1657,7 @@
PyObject* py_proto) {
return PyUpb_DescriptorBase_CopyToProto(
_self, (PyUpb_ToProto_Func*)&upb_ServiceDef_ToProto,
- &google_protobuf_ServiceDescriptorProto_msg_init,
+ &google__protobuf__ServiceDescriptorProto_msg_init,
PYUPB_DESCRIPTOR_PROTO_PACKAGE ".ServiceDescriptorProto", py_proto);
}
diff --git a/upb/message/BUILD b/upb/message/BUILD
index c357549..72a4500 100644
--- a/upb/message/BUILD
+++ b/upb/message/BUILD
@@ -7,6 +7,10 @@
load("//bazel:build_defs.bzl", "UPB_DEFAULT_COPTS")
load(
+ "//bazel:upb_minitable_proto_library.bzl",
+ "upb_minitable_proto_library",
+)
+load(
"//bazel:upb_proto_library.bzl",
"upb_proto_library",
"upb_proto_reflection_library",
@@ -154,11 +158,11 @@
":accessors_internal",
":internal",
":message",
+ ":tagged_ptr",
":types",
"//upb:base",
"//upb:eps_copy_input_stream",
"//upb:mem",
- "//upb:message_tagged_ptr",
"//upb:mini_table",
"//upb:mini_table_internal",
"//upb:port",
@@ -225,6 +229,12 @@
deps = ["//src/google/protobuf:test_messages_proto3_proto"],
)
+upb_minitable_proto_library(
+ name = "message_test_upb_minitable_proto",
+ testonly = 1,
+ deps = [":message_test_proto"],
+)
+
upb_proto_library(
name = "message_test_upb_proto",
testonly = 1,
@@ -246,12 +256,15 @@
"//:protobuf",
"@com_google_googletest//:gtest_main",
"//upb:base",
+ "//upb:mem",
"//upb:mini_descriptor",
"//upb:mini_descriptor_internal",
"//upb:mini_table",
"//upb:port",
"//upb:wire",
+ "//upb/test:test_messages_proto2_upb_minitable",
"//upb/test:test_messages_proto2_upb_proto",
+ "//upb/test:test_messages_proto3_upb_minitable",
"//upb/test:test_messages_proto3_upb_proto",
"//upb/test:test_upb_proto",
"@com_google_absl//absl/container:flat_hash_set",
@@ -283,8 +296,8 @@
"//upb:mem",
"//upb:mini_table",
"//upb:wire",
+ "//upb/test:test_messages_proto2_upb_minitable",
"//upb/test:test_messages_proto2_upb_proto",
- "//upb/test:test_messages_proto3_upb_proto",
"//upb/test:test_upb_proto",
"@com_google_absl//absl/container:flat_hash_set",
],
@@ -307,18 +320,22 @@
deps = [
":accessors",
":copy",
+ ":internal",
":message",
":promote",
+ ":tagged_ptr",
"//:protobuf",
"@com_google_googletest//:gtest_main",
"//upb:base",
"//upb:mem",
+ "//upb:mini_descriptor",
"//upb:mini_descriptor_internal",
"//upb:mini_table",
"//upb:port",
"//upb:wire",
"//upb/test:test_messages_proto2_upb_proto",
"//upb/test:test_messages_proto3_upb_proto",
+ "//upb/test:test_proto_upb_minitable",
"//upb/test:test_upb_proto",
"@com_google_absl//absl/container:flat_hash_set",
],
@@ -330,12 +347,16 @@
name = "test",
srcs = ["test.cc"],
deps = [
+ ":message_test_upb_minitable_proto",
":message_test_upb_proto",
":message_test_upb_proto_reflection",
+ ":value",
"@com_google_googletest//:gtest_main",
"//upb:base",
"//upb:json",
"//upb:mem",
+ "//upb:message",
+ "//upb:mini_table",
"//upb:reflection",
"//upb:wire",
"//upb/test:fuzz_util",
@@ -350,6 +371,12 @@
deps = ["//src/google/protobuf:test_messages_proto3_proto"],
)
+upb_minitable_proto_library(
+ name = "utf8_test_upb_minitable_proto",
+ testonly = 1,
+ deps = [":utf8_test_proto"],
+)
+
upb_proto_library(
name = "utf8_test_upb_proto",
testonly = 1,
@@ -360,6 +387,7 @@
name = "utf8_test",
srcs = ["utf8_test.cc"],
deps = [
+ ":utf8_test_upb_minitable_proto",
":utf8_test_upb_proto",
"@com_google_googletest//:gtest_main",
"//upb:base",
diff --git a/upb/message/accessors_test.cc b/upb/message/accessors_test.cc
index e6a934c..50c3921 100644
--- a/upb/message/accessors_test.cc
+++ b/upb/message/accessors_test.cc
@@ -13,18 +13,28 @@
#include "upb/message/accessors.h"
+#include <string.h>
+
+#include <cstddef>
+#include <cstdint>
#include <string>
#include <gtest/gtest.h>
#include "google/protobuf/test_messages_proto2.upb.h"
+#include "google/protobuf/test_messages_proto2.upb_minitable.h"
#include "google/protobuf/test_messages_proto3.upb.h"
+#include "google/protobuf/test_messages_proto3.upb_minitable.h"
+#include "upb/base/descriptor_constants.h"
+#include "upb/base/status.h"
#include "upb/base/string_view.h"
+#include "upb/mem/arena.h"
#include "upb/message/array.h"
+#include "upb/message/message.h"
#include "upb/mini_descriptor/decode.h"
#include "upb/mini_descriptor/internal/encode.hpp"
#include "upb/mini_descriptor/internal/modifiers.h"
-#include "upb/test/test.upb.h"
-#include "upb/wire/decode.h"
+#include "upb/mini_table/field.h"
+#include "upb/mini_table/message.h"
// Must be last
#include "upb/port/def.inc"
@@ -53,12 +63,14 @@
const upb_MiniTableField* find_proto3_field(int field_number) {
return upb_MiniTable_FindFieldByNumber(
- &protobuf_test_messages_proto3_TestAllTypesProto3_msg_init, field_number);
+ &protobuf_0test_0messages__proto3__TestAllTypesProto3_msg_init,
+ field_number);
}
const upb_MiniTableField* find_proto2_field(int field_number) {
return upb_MiniTable_FindFieldByNumber(
- &protobuf_test_messages_proto2_TestAllTypesProto2_msg_init, field_number);
+ &protobuf_0test_0messages__proto2__TestAllTypesProto2_msg_init,
+ field_number);
}
TEST(GeneratedCode, HazzersProto2) {
@@ -265,7 +277,7 @@
const upb_MiniTableField* nested_message_a_field =
upb_MiniTable_FindFieldByNumber(
- &protobuf_test_messages_proto2_TestAllTypesProto2_NestedMessage_msg_init,
+ &protobuf_0test_0messages__proto2__TestAllTypesProto2__NestedMessage_msg_init,
kFieldOptionalNestedMessageA);
EXPECT_EQ(5, upb_Message_GetInt32(sub_message, nested_message_a_field, 0));
@@ -281,11 +293,11 @@
upb_Message_SetInt32(new_nested_message, nested_message_a_field, 123,
nullptr);
upb_Message_SetMessage(
- msg, &protobuf_test_messages_proto2_TestAllTypesProto2_msg_init,
+ msg, &protobuf_0test_0messages__proto2__TestAllTypesProto2_msg_init,
optional_message_field, new_nested_message);
upb_Message* mutable_message = upb_Message_GetOrCreateMutableMessage(
- msg, &protobuf_test_messages_proto2_TestAllTypesProto2_msg_init,
+ msg, &protobuf_0test_0messages__proto2__TestAllTypesProto2_msg_init,
optional_message_field, arena);
EXPECT_EQ(
true,
@@ -358,10 +370,10 @@
const upb_MiniTableField* optional_message_field =
find_proto2_field(kFieldOptionalNestedMessage);
upb_Message* msg1 = upb_Message_GetOrCreateMutableMessage(
- msg, &protobuf_test_messages_proto2_TestAllTypesProto2_msg_init,
+ msg, &protobuf_0test_0messages__proto2__TestAllTypesProto2_msg_init,
optional_message_field, arena);
upb_Message* msg2 = upb_Message_GetOrCreateMutableMessage(
- msg, &protobuf_test_messages_proto2_TestAllTypesProto2_msg_init,
+ msg, &protobuf_0test_0messages__proto2__TestAllTypesProto2_msg_init,
optional_message_field, arena);
// Verify that newly constructed sub message is stored in msg.
EXPECT_EQ(msg1, msg2);
diff --git a/upb/message/copy_test.cc b/upb/message/copy_test.cc
index febeeab..ad50f66 100644
--- a/upb/message/copy_test.cc
+++ b/upb/message/copy_test.cc
@@ -21,12 +21,14 @@
#include <gtest/gtest.h>
#include "google/protobuf/test_messages_proto2.upb.h"
+#include "google/protobuf/test_messages_proto2.upb_minitable.h"
#include "upb/base/string_view.h"
#include "upb/mem/arena.h"
#include "upb/message/accessors.h"
#include "upb/message/internal/message.h"
#include "upb/message/map.h"
#include "upb/message/message.h"
+#include "upb/mini_table/field.h"
#include "upb/mini_table/message.h"
#include "upb/wire/encode.h"
@@ -44,7 +46,8 @@
const upb_MiniTableField* find_proto2_field(int field_number) {
return upb_MiniTable_FindFieldByNumber(
- &protobuf_test_messages_proto2_TestAllTypesProto2_msg_init, field_number);
+ &protobuf_0test_0messages__proto2__TestAllTypesProto2_msg_init,
+ field_number);
}
TEST(GeneratedCode, DeepCloneMessageScalarAndString) {
@@ -66,7 +69,7 @@
upb_Arena* arena = upb_Arena_New();
protobuf_test_messages_proto2_TestAllTypesProto2* clone =
(protobuf_test_messages_proto2_TestAllTypesProto2*)upb_Message_DeepClone(
- msg, &protobuf_test_messages_proto2_TestAllTypesProto2_msg_init,
+ msg, &protobuf_0test_0messages__proto2__TestAllTypesProto2_msg_init,
arena);
// After cloning overwrite values and destroy source arena for MSAN.
memset(string_in_arena, 0, sizeof(kTestStr1));
@@ -97,12 +100,12 @@
protobuf_test_messages_proto2_TestAllTypesProto2_NestedMessage_set_a(
nested, kTestNestedInt32);
upb_Message_SetMessage(
- msg, &protobuf_test_messages_proto2_TestAllTypesProto2_msg_init,
+ msg, &protobuf_0test_0messages__proto2__TestAllTypesProto2_msg_init,
nested_message_field, nested);
upb_Arena* arena = upb_Arena_New();
protobuf_test_messages_proto2_TestAllTypesProto2* clone =
(protobuf_test_messages_proto2_TestAllTypesProto2*)upb_Message_DeepClone(
- msg, &protobuf_test_messages_proto2_TestAllTypesProto2_msg_init,
+ msg, &protobuf_0test_0messages__proto2__TestAllTypesProto2_msg_init,
arena);
// After cloning overwrite values and destroy source arena for MSAN.
protobuf_test_messages_proto2_TestAllTypesProto2_NestedMessage_set_a(nested,
@@ -132,7 +135,7 @@
upb_Arena* arena = upb_Arena_New();
protobuf_test_messages_proto2_TestAllTypesProto2* clone =
(protobuf_test_messages_proto2_TestAllTypesProto2*)upb_Message_DeepClone(
- msg, &protobuf_test_messages_proto2_TestAllTypesProto2_msg_init,
+ msg, &protobuf_0test_0messages__proto2__TestAllTypesProto2_msg_init,
arena);
protobuf_test_messages_proto2_TestAllTypesProto2_clear_repeated_sint32(msg);
upb_Arena_Free(source_arena);
@@ -171,7 +174,7 @@
upb_Arena* arena = upb_Arena_New();
protobuf_test_messages_proto2_TestAllTypesProto2* clone =
(protobuf_test_messages_proto2_TestAllTypesProto2*)upb_Message_DeepClone(
- msg, &protobuf_test_messages_proto2_TestAllTypesProto2_msg_init,
+ msg, &protobuf_0test_0messages__proto2__TestAllTypesProto2_msg_init,
arena);
protobuf_test_messages_proto2_TestAllTypesProto2_NestedMessage_set_a(nested,
0);
@@ -248,7 +251,7 @@
(protobuf_test_messages_proto2_TestAllTypesProto2_MessageSetCorrect*)
upb_Message_DeepClone(
msg,
- &protobuf_test_messages_proto2_TestAllTypesProto2_MessageSetCorrect_msg_init,
+ &protobuf_0test_0messages__proto2__TestAllTypesProto2__MessageSetCorrect_msg_init,
arena);
// Mutate original extension.
@@ -291,10 +294,10 @@
size_t len;
char* data;
upb_Arena* encode_arena = upb_Arena_New();
- upb_EncodeStatus status =
- upb_Encode(unknown_source,
- &protobuf_test_messages_proto2_UnknownToTestAllTypes_msg_init,
- kUpb_EncodeOption_CheckRequired, encode_arena, &data, &len);
+ upb_EncodeStatus status = upb_Encode(
+ unknown_source,
+ &protobuf_0test_0messages__proto2__UnknownToTestAllTypes_msg_init,
+ kUpb_EncodeOption_CheckRequired, encode_arena, &data, &len);
ASSERT_EQ(status, kUpb_EncodeStatus_Ok);
std::string unknown_data(data, len);
// Add unknown data.
@@ -303,7 +306,7 @@
upb_Arena* clone_arena = upb_Arena_New();
protobuf_test_messages_proto2_TestAllTypesProto2* clone =
(protobuf_test_messages_proto2_TestAllTypesProto2*)upb_Message_DeepClone(
- msg, &protobuf_test_messages_proto2_TestAllTypesProto2_msg_init,
+ msg, &protobuf_0test_0messages__proto2__TestAllTypesProto2_msg_init,
clone_arena);
upb_Arena_Free(source_arena);
upb_Arena_Free(unknown_arena);
diff --git a/upb/message/promote_test.cc b/upb/message/promote_test.cc
index 2b86f95..1bfbb15 100644
--- a/upb/message/promote_test.cc
+++ b/upb/message/promote_test.cc
@@ -13,20 +13,37 @@
#include "upb/message/promote.h"
+#include <string.h>
+
+#include <cstddef>
+#include <cstdint>
#include <string>
#include <gtest/gtest.h>
-#include "google/protobuf/test_messages_proto2.upb.h"
-#include "google/protobuf/test_messages_proto3.upb.h"
+#include "upb/base/descriptor_constants.h"
+#include "upb/base/status.h"
#include "upb/base/string_view.h"
+#include "upb/mem/arena.h"
#include "upb/mem/arena.hpp"
#include "upb/message/accessors.h"
#include "upb/message/array.h"
#include "upb/message/copy.h"
+#include "upb/message/internal/extension.h"
+#include "upb/message/internal/message.h"
+#include "upb/message/map.h"
+#include "upb/message/message.h"
+#include "upb/message/tagged_ptr.h"
+#include "upb/mini_descriptor/decode.h"
#include "upb/mini_descriptor/internal/encode.hpp"
#include "upb/mini_descriptor/internal/modifiers.h"
+#include "upb/mini_descriptor/link.h"
+#include "upb/mini_table/field.h"
+#include "upb/mini_table/message.h"
+#include "upb/mini_table/sub.h"
#include "upb/test/test.upb.h"
+#include "upb/test/test.upb_minitable.h"
#include "upb/wire/decode.h"
+#include "upb/wire/encode.h"
// Must be last
#include "upb/port/def.inc"
@@ -349,7 +366,7 @@
// Update mini table and promote unknown to a message.
EXPECT_TRUE(
upb_MiniTable_SetSubMessage(mini_table, (upb_MiniTableField*)submsg_field,
- &upb_test_ModelWithExtensions_msg_init));
+ &upb_0test__ModelWithExtensions_msg_init));
const int decode_options =
upb_DecodeOptions_MaxDepth(0); // UPB_DECODE_ALIAS disabled.
@@ -397,7 +414,7 @@
upb_MiniTable_FindFieldByNumber(mini_table, 5);
EXPECT_TRUE(
upb_MiniTable_SetSubMessage(mini_table, (upb_MiniTableField*)submsg_field,
- &upb_test_ModelWithExtensions_msg_init));
+ &upb_0test__ModelWithExtensions_msg_init));
const int decode_options =
upb_DecodeOptions_MaxDepth(0); // UPB_DECODE_ALIAS disabled.
@@ -447,7 +464,7 @@
upb_MiniTable_FindFieldByNumber(mini_table, 5);
EXPECT_TRUE(
upb_MiniTable_SetSubMessage(mini_table, (upb_MiniTableField*)submsg_field,
- &upb_test_ModelWithExtensions_msg_init));
+ &upb_0test__ModelWithExtensions_msg_init));
// Parse again. This will promote the message. An explicit promote will not
// be required.
@@ -526,11 +543,11 @@
// Update mini table and promote unknown to a message.
EXPECT_TRUE(upb_MiniTable_SetSubMessage(
mini_table, (upb_MiniTableField*)repeated_field,
- &upb_test_ModelWithExtensions_msg_init));
+ &upb_0test__ModelWithExtensions_msg_init));
const int decode_options =
upb_DecodeOptions_MaxDepth(0); // UPB_DECODE_ALIAS disabled.
upb_DecodeStatus promote_result =
- upb_Array_PromoteMessages(array, &upb_test_ModelWithExtensions_msg_init,
+ upb_Array_PromoteMessages(array, &upb_0test__ModelWithExtensions_msg_init,
decode_options, arena.ptr());
EXPECT_EQ(promote_result, kUpb_DecodeStatus_Ok);
const upb_Message* promoted_message = upb_Array_Get(array, 0).msg_val;
@@ -597,9 +614,9 @@
upb_MiniTableField* entry_value = const_cast<upb_MiniTableField*>(
upb_MiniTable_FindFieldByNumber(entry, 2));
upb_MiniTable_SetSubMessage(entry, entry_value,
- &upb_test_ModelWithExtensions_msg_init);
+ &upb_0test__ModelWithExtensions_msg_init);
upb_DecodeStatus promote_result = upb_Map_PromoteMessages(
- map, &upb_test_ModelWithExtensions_msg_init, 0, arena.ptr());
+ map, &upb_0test__ModelWithExtensions_msg_init, 0, arena.ptr());
EXPECT_EQ(promote_result, kUpb_DecodeStatus_Ok);
upb_MessageValue key;
@@ -706,13 +723,13 @@
// Update mini table and promote unknown to a message.
EXPECT_TRUE(upb_MiniTable_SetSubMessage(
mini_table, (upb_MiniTableField*)&mini_table->fields[1],
- &upb_test_ModelWithExtensions_msg_init));
+ &upb_0test__ModelWithExtensions_msg_init));
const int decode_options =
upb_DecodeOptions_MaxDepth(0); // UPB_DECODE_ALIAS disabled.
upb_UnknownToMessageRet promote_result =
upb_MiniTable_PromoteUnknownToMessage(
msg, mini_table, &mini_table->fields[1],
- &upb_test_ModelWithExtensions_msg_init, decode_options, arena);
+ &upb_0test__ModelWithExtensions_msg_init, decode_options, arena);
EXPECT_EQ(promote_result.status, kUpb_UnknownToMessage_Ok);
const upb_Message* promoted_message =
upb_Message_GetMessage(msg, &mini_table->fields[1], nullptr);
@@ -755,12 +772,12 @@
// Update mini table and promote unknown to a message.
EXPECT_TRUE(upb_MiniTable_SetSubMessage(
mini_table, (upb_MiniTableField*)&mini_table->fields[2],
- &upb_test_ModelWithExtensions_msg_init));
+ &upb_0test__ModelWithExtensions_msg_init));
const int decode_options =
upb_DecodeOptions_MaxDepth(0); // UPB_DECODE_ALIAS disabled.
upb_UnknownToMessage_Status promote_result =
upb_MiniTable_PromoteUnknownToMessageArray(
- msg, &mini_table->fields[2], &upb_test_ModelWithExtensions_msg_init,
+ msg, &mini_table->fields[2], &upb_0test__ModelWithExtensions_msg_init,
decode_options, arena);
EXPECT_EQ(promote_result, kUpb_UnknownToMessage_Ok);
diff --git a/upb/message/test.cc b/upb/message/test.cc
index d28f60a..97ebef0 100644
--- a/upb/message/test.cc
+++ b/upb/message/test.cc
@@ -5,21 +5,34 @@
// license that can be found in the LICENSE file or at
// https://developers.google.com/open-source/licenses/bsd
+#include <cstddef>
+#include <cstdint>
#include <string>
#include <string_view>
+#include <vector>
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include "google/protobuf/test_messages_proto3.upb.h"
#include "upb/base/status.hpp"
+#include "upb/base/string_view.h"
#include "upb/json/decode.h"
#include "upb/json/encode.h"
+#include "upb/mem/arena.h"
#include "upb/mem/arena.hpp"
+#include "upb/message/message.h"
#include "upb/message/test.upb.h"
+#include "upb/message/test.upb_minitable.h"
#include "upb/message/test.upbdefs.h"
+#include "upb/message/value.h"
+#include "upb/mini_table/extension_registry.h"
+#include "upb/mini_table/message.h"
+#include "upb/reflection/def.h"
#include "upb/reflection/def.hpp"
+#include "upb/reflection/message.h"
#include "upb/test/fuzz_util.h"
#include "upb/wire/decode.h"
+#include "upb/wire/encode.h"
// begin:google_only
// #include "testing/fuzzing/fuzztest.h"
@@ -300,7 +313,7 @@
// Fails, because required fields are missing.
EXPECT_EQ(
kUpb_DecodeStatus_MissingRequired,
- upb_Decode(nullptr, 0, test_msg, &upb_test_TestRequiredFields_msg_init,
+ upb_Decode(nullptr, 0, test_msg, &upb_0test__TestRequiredFields_msg_init,
nullptr, kUpb_DecodeOption_CheckRequired, arena.ptr()));
upb_test_TestRequiredFields_set_required_int32(test_msg, 1);
@@ -314,7 +327,7 @@
// payload is not empty.
EXPECT_EQ(kUpb_DecodeStatus_MissingRequired,
upb_Decode(serialized, size, test_msg,
- &upb_test_TestRequiredFields_msg_init, nullptr,
+ &upb_0test__TestRequiredFields_msg_init, nullptr,
kUpb_DecodeOption_CheckRequired, arena.ptr()));
empty_msg = upb_test_EmptyMessage_new(arena.ptr());
@@ -325,7 +338,7 @@
// Succeeds, because required fields are present (though not in the input).
EXPECT_EQ(
kUpb_DecodeStatus_Ok,
- upb_Decode(nullptr, 0, test_msg, &upb_test_TestRequiredFields_msg_init,
+ upb_Decode(nullptr, 0, test_msg, &upb_0test__TestRequiredFields_msg_init,
nullptr, kUpb_DecodeOption_CheckRequired, arena.ptr()));
// Serialize a complete payload.
@@ -344,7 +357,7 @@
test_msg2, upb_test_TestRequiredFields_new(arena.ptr()));
EXPECT_EQ(kUpb_DecodeStatus_Ok,
upb_Decode(serialized, size, test_msg2,
- &upb_test_TestRequiredFields_msg_init, nullptr,
+ &upb_0test__TestRequiredFields_msg_init, nullptr,
kUpb_DecodeOption_CheckRequired, arena.ptr()));
}
diff --git a/upb/message/utf8_test.cc b/upb/message/utf8_test.cc
index 5f63bb2..cba8953 100644
--- a/upb/message/utf8_test.cc
+++ b/upb/message/utf8_test.cc
@@ -35,6 +35,7 @@
#include "upb/mem/arena.h"
#include "upb/mem/arena.hpp"
#include "upb/message/utf8_test.upb.h"
+#include "upb/message/utf8_test.upb_minitable.h"
#include "upb/wire/decode.h"
namespace {
@@ -69,7 +70,7 @@
upb_test_TestUtf8Proto3String_new(arena.ptr());
upb_DecodeStatus status =
- upb_Decode(data, size, msg, &upb_test_TestUtf8Proto3String_msg_init,
+ upb_Decode(data, size, msg, &upb_0test__TestUtf8Proto3String_msg_init,
nullptr, 0, arena.ptr());
// Parse fails, because proto3 string fields validate UTF-8.
@@ -85,8 +86,8 @@
upb_test_TestUtf8RepeatedProto3String_new(arena.ptr());
upb_DecodeStatus status = upb_Decode(
- data, size, msg, &upb_test_TestUtf8RepeatedProto3String_msg_init, nullptr,
- 0, arena.ptr());
+ data, size, msg, &upb_0test__TestUtf8RepeatedProto3String_msg_init,
+ nullptr, 0, arena.ptr());
// Parse fails, because proto3 string fields validate UTF-8.
ASSERT_EQ(kUpb_DecodeStatus_BadUtf8, status);
@@ -101,9 +102,9 @@
// upb_test_TestUtf8Proto3StringMixed* msg =
// upb_test_TestUtf8Proto3StringMixed_new(arena.ptr());
//
-// upb_DecodeStatus status =
-// upb_Decode(data, size, msg, &upb_test_TestUtf8Proto3StringMixed_msg_init,
-// nullptr, 0, arena.ptr());
+// upb_DecodeStatus status = upb_Decode(
+// data, size, msg, &upb_0test__TestUtf8Proto3StringMixed_msg_init, nullptr,
+// 0, arena.ptr());
//
// // Parse fails, because proto3 string fields validate UTF-8.
// ASSERT_EQ(kUpb_DecodeStatus_BadUtf8, status);
diff --git a/upb/mini_table/BUILD b/upb/mini_table/BUILD
index 1623c05..ecf2bbb 100644
--- a/upb/mini_table/BUILD
+++ b/upb/mini_table/BUILD
@@ -83,8 +83,8 @@
deps = [
"@com_google_googletest//:gtest_main",
"//upb:mini_table_compat",
- "//upb/test:test_messages_proto2_upb_proto",
- "//upb/test:test_messages_proto3_upb_proto",
+ "//upb/test:test_messages_proto2_upb_minitable",
+ "//upb/test:test_messages_proto3_upb_minitable",
"//upb/test:test_upb_proto",
],
)
diff --git a/upb/mini_table/compat_test.cc b/upb/mini_table/compat_test.cc
index e999e17..0a46060 100644
--- a/upb/mini_table/compat_test.cc
+++ b/upb/mini_table/compat_test.cc
@@ -14,21 +14,21 @@
#include "upb/mini_table/compat.h"
#include <gtest/gtest.h>
-#include "google/protobuf/test_messages_proto2.upb.h"
-#include "google/protobuf/test_messages_proto3.upb.h"
+#include "google/protobuf/test_messages_proto2.upb_minitable.h"
+#include "google/protobuf/test_messages_proto3.upb_minitable.h"
namespace {
TEST(GeneratedCode, EqualsTestProto2) {
EXPECT_TRUE(upb_MiniTable_Equals(
- &protobuf_test_messages_proto2_ProtoWithKeywords_msg_init,
- &protobuf_test_messages_proto2_ProtoWithKeywords_msg_init));
+ &protobuf_0test_0messages__proto2__ProtoWithKeywords_msg_init,
+ &protobuf_0test_0messages__proto2__ProtoWithKeywords_msg_init));
}
TEST(GeneratedCode, EqualsTestProto3) {
EXPECT_TRUE(upb_MiniTable_Equals(
- &protobuf_test_messages_proto3_TestAllTypesProto3_msg_init,
- &protobuf_test_messages_proto3_TestAllTypesProto3_msg_init));
+ &protobuf_0test_0messages__proto3__TestAllTypesProto3_msg_init,
+ &protobuf_0test_0messages__proto3__TestAllTypesProto3_msg_init));
}
} // namespace
diff --git a/upb/test/BUILD b/upb/test/BUILD
index 2270476..b147e06 100644
--- a/upb/test/BUILD
+++ b/upb/test/BUILD
@@ -10,6 +10,10 @@
"UPB_DEFAULT_CPPOPTS",
)
load(
+ "//bazel:upb_minitable_proto_library.bzl",
+ "upb_minitable_proto_library",
+)
+load(
"//bazel:upb_proto_library.bzl",
"upb_proto_library",
"upb_proto_reflection_library",
@@ -66,6 +70,13 @@
srcs = ["test.proto"],
)
+upb_minitable_proto_library(
+ name = "test_proto_upb_minitable",
+ testonly = 1,
+ visibility = ["//upb:__subpackages__"],
+ deps = [":test_proto"],
+)
+
upb_proto_library(
name = "test_upb_proto",
testonly = 1,
@@ -89,6 +100,20 @@
deps = ["test_cpp_proto"],
)
+upb_minitable_proto_library(
+ name = "test_messages_proto2_upb_minitable",
+ testonly = 1,
+ visibility = ["//upb:__subpackages__"],
+ deps = ["//src/google/protobuf:test_messages_proto2_proto"],
+)
+
+upb_minitable_proto_library(
+ name = "test_messages_proto3_upb_minitable",
+ testonly = 1,
+ visibility = ["//upb:__subpackages__"],
+ deps = ["//src/google/protobuf:test_messages_proto3_proto"],
+)
+
upb_proto_library(
name = "test_messages_proto2_upb_proto",
testonly = 1,
@@ -182,12 +207,10 @@
],
deps = [
":empty_upb_proto_reflection",
- ":test_messages_proto2_upb_proto",
- ":test_messages_proto3_upb_proto",
+ ":test_messages_proto2_upb_minitable",
":test_upb_proto",
"@com_google_googletest//:gtest_main",
"//upb:mini_table",
- "//upb:mini_table_internal",
"//upb:port",
],
)
@@ -223,6 +246,12 @@
deps = [":empty_srcs_3_proto"],
)
+upb_minitable_proto_library(
+ name = "test_import_empty_srcs_upb_minitable_proto",
+ testonly = 1,
+ deps = [":test_import_empty_srcs_proto"],
+)
+
upb_proto_library(
name = "test_import_empty_srcs_upb_proto",
testonly = 1,
@@ -233,7 +262,7 @@
name = "test_import_empty_srcs",
srcs = ["test_import_empty_srcs.cc"],
deps = [
- ":test_import_empty_srcs_upb_proto",
+ ":test_import_empty_srcs_upb_minitable_proto",
"@com_google_googletest//:gtest_main",
],
)
diff --git a/upb/test/test_import_empty_srcs.cc b/upb/test/test_import_empty_srcs.cc
index cefa522..59995ae 100644
--- a/upb/test/test_import_empty_srcs.cc
+++ b/upb/test/test_import_empty_srcs.cc
@@ -6,9 +6,9 @@
// https://developers.google.com/open-source/licenses/bsd
#include <gtest/gtest.h>
-#include "upb/test/test_import_empty_srcs.upb.h"
+#include "upb/test/test_import_empty_srcs.upb_minitable.h"
TEST(Test, Reexport) {
// This test really just ensures that compilation succeeds.
- ASSERT_GT(sizeof(upb_test_ContainsImported_msg_init), 0);
+ ASSERT_GT(sizeof(upb_0test__ContainsImported_msg_init), 0);
}
diff --git a/upb/test/test_mini_table_oneof.cc b/upb/test/test_mini_table_oneof.cc
index 434e5fb..3c0ecae 100644
--- a/upb/test/test_mini_table_oneof.cc
+++ b/upb/test/test_mini_table_oneof.cc
@@ -6,11 +6,9 @@
// https://developers.google.com/open-source/licenses/bsd
#include <gtest/gtest.h>
-#include "google/protobuf/test_messages_proto2.upb.h"
-#include "google/protobuf/test_messages_proto3.upb.h"
+#include "google/protobuf/test_messages_proto2.upb_minitable.h"
#include "upb/mini_table/field.h"
#include "upb/mini_table/message.h"
-#include "upb/test/test.upb.h"
// Must be last.
#include "upb/port/def.inc"
@@ -20,7 +18,7 @@
constexpr int oneof_test_field_number = 116;
const upb_MiniTable* google_protobuf_table =
- &protobuf_test_messages_proto2_TestAllTypesProto2_msg_init;
+ &protobuf_0test_0messages__proto2__TestAllTypesProto2_msg_init;
const upb_MiniTableField* field =
upb_MiniTable_FindFieldByNumber(google_protobuf_table, oneof_test_field_number);
ASSERT_TRUE(field != nullptr);
@@ -34,7 +32,7 @@
TEST(MiniTableOneofTest, InitialFieldNotOneOf) {
constexpr int test_field_number = 1; // optional int that is not a oneof
const upb_MiniTable* google_protobuf_table =
- &protobuf_test_messages_proto2_TestAllTypesProto2_msg_init;
+ &protobuf_0test_0messages__proto2__TestAllTypesProto2_msg_init;
const upb_MiniTableField* field =
upb_MiniTable_FindFieldByNumber(google_protobuf_table, test_field_number);
ASSERT_TRUE(field != nullptr);
diff --git a/upb_generator/common.cc b/upb_generator/common.cc
index c81bcb0..ecd0da6 100644
--- a/upb_generator/common.cc
+++ b/upb_generator/common.cc
@@ -48,6 +48,11 @@
// Must be last
#include "upb/port/def.inc"
+// Generate a mangled C name for a proto object.
+static std::string MangleName(absl::string_view name) {
+ return absl::StrReplaceAll(name, {{"_", "_0"}, {".", "__"}});
+}
+
namespace upb {
namespace generator {
@@ -78,6 +83,14 @@
name);
}
+std::string MessageInit(absl::string_view full_name) {
+ return MangleName(full_name) + "_msg_init";
+}
+
+std::string MessageInitName(upb::MessageDefPtr descriptor) {
+ return MessageInit(descriptor.full_name());
+}
+
std::string MessageName(upb::MessageDefPtr descriptor) {
return ToCIdent(descriptor.full_name());
}
@@ -94,10 +107,6 @@
return StripExtension(file.name()) + ".upb_minitable.h";
}
-std::string MessageInit(absl::string_view full_name) {
- return ToCIdent(full_name) + "_msg_init";
-}
-
std::string EnumInit(upb::EnumDefPtr descriptor) {
return ToCIdent(descriptor.full_name()) + "_enum_init";
}
diff --git a/upb_generator/common.h b/upb_generator/common.h
index 5f4bd4e..bf4fd7c 100644
--- a/upb_generator/common.h
+++ b/upb_generator/common.h
@@ -81,12 +81,13 @@
std::string ToCIdent(absl::string_view str);
std::string ToPreproc(absl::string_view str);
void EmitFileWarning(absl::string_view name, Output& output);
+std::string MessageInit(absl::string_view full_name);
+std::string MessageInitName(upb::MessageDefPtr descriptor);
std::string MessageName(upb::MessageDefPtr descriptor);
std::string FileLayoutName(upb::FileDefPtr file);
std::string MiniTableHeaderFilename(upb::FileDefPtr file);
std::string CApiHeaderFilename(upb::FileDefPtr file);
-std::string MessageInit(absl::string_view full_name);
std::string EnumInit(upb::EnumDefPtr descriptor);
std::string FieldInitializer(upb::FieldDefPtr field,
diff --git a/upb_generator/protoc-gen-upb.cc b/upb_generator/protoc-gen-upb.cc
index 60fa5be..eb83979 100644
--- a/upb_generator/protoc-gen-upb.cc
+++ b/upb_generator/protoc-gen-upb.cc
@@ -73,10 +73,6 @@
return StripExtension(file.name()) + ".upb.c";
}
-std::string MessageInitName(upb::MessageDefPtr descriptor) {
- return absl::StrCat(MessageName(descriptor), "_msg_init");
-}
-
std::string MessageMiniTableRef(upb::MessageDefPtr descriptor,
const Options& options) {
if (options.bootstrap) {
diff --git a/upb_generator/protoc-gen-upb_minitable.cc b/upb_generator/protoc-gen-upb_minitable.cc
index 69be262..3c6cd86 100644
--- a/upb_generator/protoc-gen-upb_minitable.cc
+++ b/upb_generator/protoc-gen-upb_minitable.cc
@@ -84,10 +84,6 @@
return StripExtension(file.name()) + ".upb_minitable.c";
}
-std::string MessageInitName(upb::MessageDefPtr descriptor) {
- return absl::StrCat(MessageName(descriptor), "_msg_init");
-}
-
std::string ExtensionIdentBase(upb::FieldDefPtr ext) {
assert(ext.is_extension());
std::string ext_scope;