Thrift: Fix untriggerable bug.
authorDavid Reiss <dreiss@apache.org>
Tue, 28 Aug 2007 21:09:06 +0000 (21:09 +0000)
committerDavid Reiss <dreiss@apache.org>
Tue, 28 Aug 2007 21:09:06 +0000 (21:09 +0000)
Reviewed By: mcslee

Test Plan: Compiled the Thrift compiler.

Revert Plan: ok

git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665228 13f79535-47bb-0310-9956-ffa450edef68

12 files changed:
compiler/cpp/src/generate/t_cpp_generator.cc
compiler/cpp/src/generate/t_erl_generator.cc
compiler/cpp/src/generate/t_hs_generator.cc
compiler/cpp/src/generate/t_java_generator.cc
compiler/cpp/src/generate/t_ocaml_generator.cc
compiler/cpp/src/generate/t_perl_generator.cc
compiler/cpp/src/generate/t_php_generator.cc
compiler/cpp/src/generate/t_py_generator.cc
compiler/cpp/src/generate/t_rb_generator.cc
compiler/cpp/src/generate/t_xsd_generator.cc
compiler/cpp/src/main.cc
compiler/cpp/src/parse/t_base_type.h

index 99190b7..1bbb2ed 100644 (file)
@@ -326,7 +326,7 @@ string t_cpp_generator::render_const_value(ofstream& out, string name, t_type* t
       }
       break;
     default:
-      throw "compiler error: no const of base type " + tbase;
+      throw "compiler error: no const of base type " + t_base_type::t_base_name(tbase);
     }
   } else if (type->is_enum()) {
     render << "(" << type_name(type) << ")" << value->get_integer();
@@ -2000,7 +2000,7 @@ void t_cpp_generator::generate_deserialize_field(ofstream& out,
       out << "readDouble(" << name << ");";
       break;
     default:
-      throw "compiler error: no C++ reader for base type " + tbase + name;
+      throw "compiler error: no C++ reader for base type " + t_base_type::t_base_name(tbase) + name;
     }
     out <<
       endl;
@@ -2208,7 +2208,7 @@ void t_cpp_generator::generate_serialize_field(ofstream& out,
         out << "writeDouble(" << name << ");";
         break;
       default:
-        throw "compiler error: no C++ writer for base type " + tbase + name;
+        throw "compiler error: no C++ writer for base type " + t_base_type::t_base_name(tbase) + name;
       }
     } else if (type->is_enum()) {
       out << "writeI32((int32_t)" << name << ");";
@@ -2489,7 +2489,7 @@ string t_cpp_generator::base_type_name(t_base_type::t_base tbase) {
   case t_base_type::TYPE_DOUBLE:
     return "double";
   default:
-    throw "compiler error: no C++ base type name for base type " + tbase;
+    throw "compiler error: no C++ base type name for base type " + t_base_type::t_base_name(tbase);
   }
 }
 
@@ -2534,7 +2534,7 @@ string t_cpp_generator::declare_field(t_field* tfield, bool init, bool pointer,
         result += " = (double)0";
         break;
       default:
-        throw "compiler error: no C++ initializer for base type " + tbase;
+        throw "compiler error: no C++ initializer for base type " + t_base_type::t_base_name(tbase);
       }
     } else if (type->is_enum()) {
       result += " = (" + type_name(type) + ")0";
index 36a37a6..e3909bd 100644 (file)
@@ -201,7 +201,7 @@ string t_erl_generator::render_const_value(t_type* type, t_const_value* value) {
       }
       break;
     default:
-      throw "compiler error: no const of base type " + tbase;
+      throw "compiler error: no const of base type " + t_base_type::t_base_name(tbase);
     }
   } else if (type->is_enum()) {
     indent(out) << value->get_integer();
@@ -1107,7 +1107,7 @@ void t_erl_generator::generate_deserialize_field(ostream &out,
         out << "readDouble";
         break;
       default:
-        throw "compiler error: no PHP name for base type " + tbase;
+        throw "compiler error: no PHP name for base type " + t_base_type::t_base_name(tbase);
       }
     } else if (type->is_enum()) {
       out << "readI32";
@@ -1317,7 +1317,7 @@ void t_erl_generator::generate_serialize_field(ostream &out,
         out << "writeDouble, " << name << "),";
         break;
       default:
-        throw "compiler error: no PHP name for base type " + tbase;
+        throw "compiler error: no PHP name for base type " + t_base_type::t_base_name(tbase);
       }
     } else if (type->is_enum()) {
       out << "writeI32, " << name << "),";
index 614ebe7..920b453 100644 (file)
@@ -236,7 +236,7 @@ string t_hs_generator::render_const_value(t_type* type, t_const_value* value) {
       }
       break;
     default:
-      throw "compiler error: no const of base type " + tbase;
+      throw "compiler error: no const of base type " + t_base_type::t_base_name(tbase);
     }
   } else if (type->is_enum()) {
     t_enum* tenum = (t_enum*)type;
@@ -1001,7 +1001,7 @@ void t_hs_generator::generate_deserialize_type(ofstream &out,
       out << "readDouble";
       break;
     default:
-      throw "compiler error: no PHP name for base type " + tbase;
+      throw "compiler error: no PHP name for base type " + t_base_type::t_base_name(tbase);
     }
     out << " iprot";
   } else if (type->is_enum()) {
@@ -1119,7 +1119,7 @@ void t_hs_generator::generate_serialize_field(ofstream &out,
         out << "writeDouble oprot " << name;
         break;
       default:
-        throw "compiler error: no hs name for base type " + tbase;
+        throw "compiler error: no hs name for base type " + t_base_type::t_base_name(tbase);
       }
     
     } else if (type->is_enum()) {
index d4d8fbf..808d7ec 100644 (file)
@@ -281,7 +281,7 @@ string t_java_generator::render_const_value(ofstream& out, string name, t_type*
       }
       break;
     default:
-      throw "compiler error: no const of base type " + tbase;
+      throw "compiler error: no const of base type " + t_base_type::t_base_name(tbase);
     }
   } else if (type->is_enum()) {
     render << value->get_integer();
@@ -1245,7 +1245,7 @@ void t_java_generator::generate_deserialize_field(ofstream& out,
         out << "readDouble();";
         break;
       default:
-        throw "compiler error: no Java name for base type " + tbase;
+        throw "compiler error: no Java name for base type " + t_base_type::t_base_name(tbase);
       }
     } else if (type->is_enum()) {
       out << "readI32();";
@@ -1460,7 +1460,7 @@ void t_java_generator::generate_serialize_field(ofstream& out,
         out << "writeDouble(" << name << ");";
         break;
       default:
-        throw "compiler error: no Java name for base type " + tbase;
+        throw "compiler error: no Java name for base type " + t_base_type::t_base_name(tbase);
       }
     } else if (type->is_enum()) {
       out << "writeI32(" << name << ");";
@@ -1674,7 +1674,7 @@ string t_java_generator::base_type_name(t_base_type* type,
   case t_base_type::TYPE_DOUBLE:
     return (in_container ? "Double" : "double");
   default:
-    throw "compiler error: no C++ name for base type " + tbase;
+    throw "compiler error: no C++ name for base type " + t_base_type::t_base_name(tbase);
   }
 }
 
index 5d51996..0a5f97b 100644 (file)
@@ -239,7 +239,7 @@ string t_ocaml_generator::render_const_value(t_type* type, t_const_value* value)
       }
       break;
     default:
-      throw "compiler error: no const of base type " + tbase;
+      throw "compiler error: no const of base type " + t_base_type::t_base_name(tbase);
     }
   } else if (type->is_enum()) {
     t_enum* tenum = (t_enum*)type;
@@ -1086,7 +1086,7 @@ void t_ocaml_generator::generate_deserialize_type(ofstream &out,
       out << "readDouble";
       break;
     default:
-      throw "compiler error: no PHP name for base type " + tbase;
+      throw "compiler error: no PHP name for base type " + t_base_type::t_base_name(tbase);
     }
   } else if (type->is_enum()) {
     string ename = capitalize(type->get_name());
@@ -1238,7 +1238,7 @@ void t_ocaml_generator::generate_serialize_field(ofstream &out,
         out << "writeDouble(" << name << ")";
         break;
       default:
-        throw "compiler error: no ocaml name for base type " + tbase;
+        throw "compiler error: no ocaml name for base type " + t_base_type::t_base_name(tbase);
       }
     } else if (type->is_enum()) {
       string ename = capitalize(type->get_name());
index 1474deb..ed3fab7 100644 (file)
@@ -146,7 +146,7 @@ string t_perl_generator::render_const_value(t_type* type, t_const_value* value)
       }
       break;
     default:
-      throw "compiler error: no const of base type " + tbase;
+      throw "compiler error: no const of base type " + t_base_type::t_base_name(tbase);
     }
   } else if (type->is_enum()) {
     out << value->get_integer();
@@ -1078,7 +1078,7 @@ void t_perl_generator::generate_deserialize_field(ofstream &out,
         out << "readDouble(\\$" << name << ");";
         break;
       default:
-        throw "compiler error: no PERL name for base type " + tbase;
+        throw "compiler error: no PERL name for base type " + t_base_type::t_base_name(tbase);
       }
     } else if (type->is_enum()) {
       out << "readI32(\\$" << name << ");";
@@ -1303,7 +1303,7 @@ void t_perl_generator::generate_serialize_field(ofstream &out,
         out << "writeDouble($" << name << ");";
         break;
       default:
-        throw "compiler error: no PERL name for base type " + tbase;
+        throw "compiler error: no PERL name for base type " + t_base_type::t_base_name(tbase);
       }
     } else if (type->is_enum()) {
       out << "writeI32($" << name << ");";
@@ -1471,7 +1471,7 @@ string t_perl_generator::declare_field(t_field* tfield, bool init, bool obj) {
         result += " = 0.0";
         break;
       default:
-        throw "compiler error: no PERL initializer for base type " + tbase;
+        throw "compiler error: no PERL initializer for base type " + t_base_type::t_base_name(tbase);
       }
     } else if (type->is_enum()) {
       result += " = 0";
index 1596a3b..f78a7dc 100644 (file)
@@ -180,7 +180,7 @@ string t_php_generator::render_const_value(t_type* type, t_const_value* value) {
       }
       break;
     default:
-      throw "compiler error: no const of base type " + tbase;
+      throw "compiler error: no const of base type " + t_base_type::t_base_name(tbase);
     }
   } else if (type->is_enum()) {
     indent(out) << value->get_integer();
@@ -1220,7 +1220,7 @@ void t_php_generator::generate_deserialize_field(ofstream &out,
             indent() << "$" << name << " = $arr[1];" << endl;
           break;
         default:
-          throw "compiler error: no PHP name for base type " + tbase + tfield->get_name();
+          throw "compiler error: no PHP name for base type " + t_base_type::t_base_name(tbase) + tfield->get_name();
         }
       } else if (type->is_enum()) {
           out <<
@@ -1265,7 +1265,7 @@ void t_php_generator::generate_deserialize_field(ofstream &out,
           out << "readDouble($" << name << ");";
           break;
         default:
-          throw "compiler error: no PHP name for base type " + tbase;
+          throw "compiler error: no PHP name for base type " + t_base_type::t_base_name(tbase);
         }
       } else if (type->is_enum()) {
         out << "readI32($" << name << ");";
@@ -1502,7 +1502,7 @@ void t_php_generator::generate_serialize_field(ofstream &out,
             indent() << "$output .= strrev(pack('d', $" << name << "));" << endl;
           break;
         default:
-          throw "compiler error: no PHP name for base type " + tbase;
+          throw "compiler error: no PHP name for base type " + t_base_type::t_base_name(tbase);
         }
       } else if (type->is_enum()) {
         out <<
@@ -1542,7 +1542,7 @@ void t_php_generator::generate_serialize_field(ofstream &out,
           out << "writeDouble($" << name << ");";
           break;
         default:
-          throw "compiler error: no PHP name for base type " + tbase;
+          throw "compiler error: no PHP name for base type " + t_base_type::t_base_name(tbase);
         }
       } else if (type->is_enum()) {
         out << "writeI32($" << name << ");";
@@ -1727,7 +1727,7 @@ string t_php_generator::declare_field(t_field* tfield, bool init, bool obj) {
         result += " = 0.0";
         break;
       default:
-        throw "compiler error: no PHP initializer for base type " + tbase;
+        throw "compiler error: no PHP initializer for base type " + t_base_type::t_base_name(tbase);
       }
     } else if (type->is_enum()) {
       result += " = 0";
index 5ed2567..256029e 100644 (file)
@@ -184,7 +184,7 @@ string t_py_generator::render_const_value(t_type* type, t_const_value* value) {
       }
       break;
     default:
-      throw "compiler error: no const of base type " + tbase;
+      throw "compiler error: no const of base type " + t_base_type::t_base_name(tbase);
     }
   } else if (type->is_enum()) {
     indent(out) << value->get_integer();
@@ -1230,7 +1230,7 @@ void t_py_generator::generate_deserialize_field(ofstream &out,
         out << "readDouble();";
         break;
       default:
-        throw "compiler error: no PHP name for base type " + tbase;
+        throw "compiler error: no PHP name for base type " + t_base_type::t_base_name(tbase);
       }
     } else if (type->is_enum()) {
       out << "readI32();";
@@ -1424,7 +1424,7 @@ void t_py_generator::generate_serialize_field(ofstream &out,
         out << "writeDouble(" << name << ")";
         break;
       default:
-        throw "compiler error: no PHP name for base type " + tbase;
+        throw "compiler error: no PHP name for base type " + t_base_type::t_base_name(tbase);
       }
     } else if (type->is_enum()) {
       out << "writeI32(" << name << ")";
index a3f002f..a15b9ce 100644 (file)
@@ -176,7 +176,7 @@ string t_rb_generator::render_const_value(t_type* type, t_const_value* value) {
       }
       break;
     default:
-      throw "compiler error: no const of base type " + tbase;
+      throw "compiler error: no const of base type " + t_base_type::t_base_name(tbase);
     }
   } else if (type->is_enum()) {
     indent(out) << value->get_integer();
index 3a0ca1c..3f0b8f9 100644 (file)
@@ -265,6 +265,6 @@ string t_xsd_generator::base_type_name(t_base_type::t_base tbase) {
   case t_base_type::TYPE_DOUBLE:
     return "decimal";
   default:
-    throw "compiler error: no C++ base type name for base type " + tbase;
+    throw "compiler error: no C++ base type name for base type " + t_base_type::t_base_name(tbase);
   }
 }
index 7e561e1..b070b3b 100644 (file)
@@ -614,7 +614,7 @@ void validate_const_rec(std::string name, t_type* type, t_const_value* value) {
       }
       break;
     default:
-      throw "compiler error: no const of base type " + tbase + name;
+      throw "compiler error: no const of base type " + t_base_type::t_base_name(tbase) + name;
     }
   } else if (type->is_enum()) {
     if (value->get_type() != t_const_value::CV_INTEGER) {
index c08c449..1c69c2e 100644 (file)
@@ -87,17 +87,24 @@ class t_base_type : public t_type {
   }
 
   virtual std::string get_fingerprint_material() const {
-    switch (base_) {
-      case TYPE_VOID   : return   "void"; break;
-      case TYPE_STRING : return "string"; break;
-      case TYPE_BOOL   : return   "bool"; break;
-      case TYPE_BYTE   : return   "byte"; break;
-      case TYPE_I16    : return    "i16"; break;
-      case TYPE_I32    : return    "i32"; break;
-      case TYPE_I64    : return    "164"; break;
-      case TYPE_DOUBLE : return "double"; break;
-      default:
-        throw "BUG: Can't get fingerprint material for this base type.";
+    std::string rv = t_base_name(base_);
+    if (rv == "(unknown)") {
+      throw "BUG: Can't get fingerprint material for this base type.";
+    }
+    return rv;
+  }
+
+  static std::string t_base_name(t_base tbase) {
+    switch (tbase) {
+      case TYPE_VOID   : return      "void"; break;
+      case TYPE_STRING : return    "string"; break;
+      case TYPE_BOOL   : return      "bool"; break;
+      case TYPE_BYTE   : return      "byte"; break;
+      case TYPE_I16    : return       "i16"; break;
+      case TYPE_I32    : return       "i32"; break;
+      case TYPE_I64    : return       "164"; break;
+      case TYPE_DOUBLE : return    "double"; break;
+      default          : return "(unknown)"; break;
     }
   }