From: Ben Craig Date: Mon, 23 Sep 2013 16:53:47 +0000 (-0500) Subject: THRIFT-2201: Ternary operator returns different types (build error for X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=836d95f9f00be73c6936d407977796181d1a506c;p=common%2Fthrift.git THRIFT-2201: Ternary operator returns different types (build error for some compilers) Client: java compiler, ruby compiler Patch: Randy Abernathy --- diff --git a/compiler/cpp/src/generate/t_java_generator.cc b/compiler/cpp/src/generate/t_java_generator.cc index e443dc0c..ec9e1fc9 100644 --- a/compiler/cpp/src/generate/t_java_generator.cc +++ b/compiler/cpp/src/generate/t_java_generator.cc @@ -2824,10 +2824,9 @@ void t_java_generator::generate_process_async_function(t_service* tservice, t_struct* xs = tfunction->get_xceptions(); const std::vector& xceptions = xs->get_members(); vector::const_iterator x_iter; - bool first = true; if (xceptions.size() > 0) { for (x_iter = xceptions.begin(); x_iter != xceptions.end(); ++x_iter) { - first ? first = false : indent(f_service_) << "else "; + if (x_iter != xceptions.begin()) indent(f_service_) << "else "; indent(f_service_) << "if (e instanceof " << type_name((*x_iter)->get_type(), false, false)<<") {" << endl; indent(f_service_) << indent() << "result." << (*x_iter)->get_name() << " = (" << type_name((*x_iter)->get_type(), false, false) << ") e;" << endl; indent(f_service_) << indent() << "result.set" << get_cap_name((*x_iter)->get_name()) << get_cap_name("isSet") << "(true);" << endl; diff --git a/compiler/cpp/src/generate/t_rb_generator.cc b/compiler/cpp/src/generate/t_rb_generator.cc index 082f3163..2a6a4721 100644 --- a/compiler/cpp/src/generate/t_rb_generator.cc +++ b/compiler/cpp/src/generate/t_rb_generator.cc @@ -359,21 +359,19 @@ void t_rb_generator::generate_enum(t_enum* tenum) { // Create a hash mapping values back to their names (as strings) since ruby has no native enum type f_types_.indent() << "VALUE_MAP = {"; - bool first = true; for(c_iter = constants.begin(); c_iter != constants.end(); ++c_iter) { // Populate the hash int value = (*c_iter)->get_value(); - first ? first = false : f_types_ << ", "; + if (c_iter != constants.begin()) f_types_ << ", "; f_types_ << value << " => \"" << capitalize((*c_iter)->get_name()) << "\""; } f_types_ << "}" << endl; // Create a set with valid values for this enum f_types_.indent() << "VALID_VALUES = Set.new(["; - first = true; for (c_iter = constants.begin(); c_iter != constants.end(); ++c_iter) { // Populate the set - first ? first = false : f_types_ << ", "; + if (c_iter != constants.begin()) f_types_ << ", "; f_types_ << capitalize((*c_iter)->get_name()); } f_types_ << "]).freeze" << endl;