Commit 638c54d4 authored by Robert Edmonds's avatar Robert Edmonds

GenerateStructDefinition(): Reset vars["opt_comma"] when processing multiple oneofs

This commit fixes #251, which causes incorrect code to be generated when
there are multiple oneofs in the same message.

In #221, we added code to force int-sizing for oneof enums, but we only
set vars["opt_comma"] initially, before entering the loop over the
message's oneofs. This caused commas to be omitted when generating the
enums for subsequent oneofs after the first oneof.

This commit resets vars["opt_comma"] every time through the loop that
generates the enum declarations for the message's oneofs.
parent 956ea867
...@@ -148,9 +148,10 @@ GenerateStructDefinition(io::Printer* printer) { ...@@ -148,9 +148,10 @@ GenerateStructDefinition(io::Printer* printer) {
} }
// Generate the case enums for unions // Generate the case enums for unions
vars["opt_comma"] = ",";
for (int i = 0; i < descriptor_->oneof_decl_count(); i++) { for (int i = 0; i < descriptor_->oneof_decl_count(); i++) {
const OneofDescriptor *oneof = descriptor_->oneof_decl(i); const OneofDescriptor *oneof = descriptor_->oneof_decl(i);
vars["opt_comma"] = ",";
vars["oneofname"] = FullNameToUpper(oneof->name()); vars["oneofname"] = FullNameToUpper(oneof->name());
vars["foneofname"] = FullNameToC(oneof->full_name()); vars["foneofname"] = FullNameToC(oneof->full_name());
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment