Commit 661f87ce authored by Wink Saville's avatar Wink Saville Committed by Gerrit Code Review

Merge "Fix enum field references with java_multiple_files."

parents 63d4b5fd a220fe61
...@@ -208,7 +208,8 @@ string ClassName(const Params& params, const EnumDescriptor* descriptor) { ...@@ -208,7 +208,8 @@ string ClassName(const Params& params, const EnumDescriptor* descriptor) {
const string full_name = descriptor->full_name(); const string full_name = descriptor->full_name();
// Remove enum class name as we use int's for enums // Remove enum class name as we use int's for enums
string base_name = full_name.substr(0, full_name.find_last_of('.')); int last_dot_in_name = full_name.find_last_of('.');
string base_name = full_name.substr(0, last_dot_in_name);
if (!file->package().empty()) { if (!file->package().empty()) {
if (file->package() == base_name.substr(0, file->package().size())) { if (file->package() == base_name.substr(0, file->package().size())) {
...@@ -226,13 +227,22 @@ string ClassName(const Params& params, const EnumDescriptor* descriptor) { ...@@ -226,13 +227,22 @@ string ClassName(const Params& params, const EnumDescriptor* descriptor) {
// Construct the path name from the package and outer class // Construct the path name from the package and outer class
// Add the java package name if it exsits // Add the java package name if it exists
if (params.has_java_package(file_name)) { if (params.has_java_package(file_name)) {
result += params.java_package(file_name); result += params.java_package(file_name);
} }
// Add the outer classname if it exists // If the java_multiple_files option is present, we will generate enums into separate
if (params.has_java_outer_classname(file_name)) { // classes, each named after the original enum type. This takes precedence over
// any outer_classname.
if (params.java_multiple_files() && last_dot_in_name != string::npos) {
string enum_simple_name = full_name.substr(last_dot_in_name + 1);
if (!result.empty()) {
result += ".";
}
result += enum_simple_name;
} else if (params.has_java_outer_classname(file_name)) {
// Add the outer classname if it exists
if (!result.empty()) { if (!result.empty()) {
result += "."; result += ".";
} }
......
...@@ -47,3 +47,7 @@ enum SecondTopLevelEnum { ...@@ -47,3 +47,7 @@ enum SecondTopLevelEnum {
SECOND_TOP_LEVEL_SECOND = 2; SECOND_TOP_LEVEL_SECOND = 2;
} }
message SomeMessage {
optional FirstTopLevelEnum first = 1;
optional SecondTopLevelEnum second = 2;
}
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