summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Haberman <jhaberman@gmail.com>2019-04-19 16:19:57 -0700
committerJoshua Haberman <jhaberman@gmail.com>2019-04-19 16:19:57 -0700
commit151ebc8a2925bca5210ac447156a6a783f1d9337 (patch)
tree15ff3f0b9d15dc18cd56ffd637f9d177e887a60d
parentcf35baa1ad70f0dca734f93bcc2b54d8d059bcdd (diff)
Fixed oneof case accessor to cast to enum for C++.
-rw-r--r--BUILD1
-rw-r--r--tests/json/test.proto5
-rw-r--r--tests/json/test.proto.pbbin1883 -> 1958 bytes
-rw-r--r--tests/json/test_json.cc1
-rw-r--r--upbc/generator.cc2
5 files changed, 8 insertions, 1 deletions
diff --git a/BUILD b/BUILD
index b54e0be..c700832 100644
--- a/BUILD
+++ b/BUILD
@@ -326,6 +326,7 @@ cc_test(
],
deps = [
":test_json_upbprotoreflection",
+ ":test_json_upbproto",
":upb_json",
":upb_test",
],
diff --git a/tests/json/test.proto b/tests/json/test.proto
index e659001..2db0388 100644
--- a/tests/json/test.proto
+++ b/tests/json/test.proto
@@ -29,6 +29,11 @@ message TestMessage {
map<string, int32> map_string_int32 = 23;
map<string, bool> map_string_bool = 24;
map<string, SubMessage> map_string_msg = 25;
+
+ oneof o {
+ int32 oneof_int32 = 26;
+ int64 oneof_int64 = 27;
+ }
}
message SubMessage {
diff --git a/tests/json/test.proto.pb b/tests/json/test.proto.pb
index 5da355d..94b8b92 100644
--- a/tests/json/test.proto.pb
+++ b/tests/json/test.proto.pb
Binary files differ
diff --git a/tests/json/test_json.cc b/tests/json/test_json.cc
index 3fddfb6..6650817 100644
--- a/tests/json/test_json.cc
+++ b/tests/json/test_json.cc
@@ -4,6 +4,7 @@
*/
#include "tests/json/test.upbdefs.h"
+#include "tests/json/test.upb.h" // Test that it compiles for C++.
#include "tests/test_util.h"
#include "tests/upb_test.h"
#include "upb/handlers.h"
diff --git a/upbc/generator.cc b/upbc/generator.cc
index 2760069..5843597 100644
--- a/upbc/generator.cc
+++ b/upbc/generator.cc
@@ -362,7 +362,7 @@ void GenerateMessageInHeader(const protobuf::Descriptor* message, Output& output
fullname);
output(
"UPB_INLINE $0_oneofcases $1_$2_case(const $1* msg) { "
- "return UPB_FIELD_AT(msg, int, $3); }\n"
+ "return ($0_oneofcases)UPB_FIELD_AT(msg, int32_t, $3); }\n"
"\n",
fullname, msgname, oneof->name(),
GetSizeInit(layout.GetOneofCaseOffset(oneof)));
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback