THRIFT-2201: Ternary operator returns different types (build error for
authorBen Craig <bencraig@apache.org>
Mon, 23 Sep 2013 16:53:47 +0000 (11:53 -0500)
committerBen Craig <bencraig@apache.org>
Mon, 23 Sep 2013 16:53:47 +0000 (11:53 -0500)
some compilers)
Client: java compiler, ruby compiler
Patch: Randy Abernathy

compiler/cpp/src/generate/t_java_generator.cc
compiler/cpp/src/generate/t_rb_generator.cc

index e443dc0..ec9e1fc 100644 (file)
@@ -2824,10 +2824,9 @@ void t_java_generator::generate_process_async_function(t_service* tservice,
      t_struct* xs = tfunction->get_xceptions();
      const std::vector<t_field*>& xceptions = xs->get_members();
      vector<t_field*>::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;
index 082f316..2a6a472 100644 (file)
@@ -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;