From: David Reiss Date: Tue, 28 Aug 2007 21:09:06 +0000 (+0000) Subject: Thrift: Fix untriggerable bug. X-Git-Tag: 0.2.0~1244 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=dd7796fd8b99d41f09660cbad22826f5573f15fd;p=common%2Fthrift.git Thrift: Fix untriggerable bug. 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 --- diff --git a/compiler/cpp/src/generate/t_cpp_generator.cc b/compiler/cpp/src/generate/t_cpp_generator.cc index 99190b7d..1bbb2ede 100644 --- a/compiler/cpp/src/generate/t_cpp_generator.cc +++ b/compiler/cpp/src/generate/t_cpp_generator.cc @@ -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"; diff --git a/compiler/cpp/src/generate/t_erl_generator.cc b/compiler/cpp/src/generate/t_erl_generator.cc index 36a37a6a..e3909bde 100644 --- a/compiler/cpp/src/generate/t_erl_generator.cc +++ b/compiler/cpp/src/generate/t_erl_generator.cc @@ -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 << "),"; diff --git a/compiler/cpp/src/generate/t_hs_generator.cc b/compiler/cpp/src/generate/t_hs_generator.cc index 614ebe75..920b453b 100644 --- a/compiler/cpp/src/generate/t_hs_generator.cc +++ b/compiler/cpp/src/generate/t_hs_generator.cc @@ -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()) { diff --git a/compiler/cpp/src/generate/t_java_generator.cc b/compiler/cpp/src/generate/t_java_generator.cc index d4d8fbfb..808d7ecd 100644 --- a/compiler/cpp/src/generate/t_java_generator.cc +++ b/compiler/cpp/src/generate/t_java_generator.cc @@ -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); } } diff --git a/compiler/cpp/src/generate/t_ocaml_generator.cc b/compiler/cpp/src/generate/t_ocaml_generator.cc index 5d51996b..0a5f97b0 100644 --- a/compiler/cpp/src/generate/t_ocaml_generator.cc +++ b/compiler/cpp/src/generate/t_ocaml_generator.cc @@ -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()); diff --git a/compiler/cpp/src/generate/t_perl_generator.cc b/compiler/cpp/src/generate/t_perl_generator.cc index 1474debc..ed3fab7f 100644 --- a/compiler/cpp/src/generate/t_perl_generator.cc +++ b/compiler/cpp/src/generate/t_perl_generator.cc @@ -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"; diff --git a/compiler/cpp/src/generate/t_php_generator.cc b/compiler/cpp/src/generate/t_php_generator.cc index 1596a3bd..f78a7dc6 100644 --- a/compiler/cpp/src/generate/t_php_generator.cc +++ b/compiler/cpp/src/generate/t_php_generator.cc @@ -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"; diff --git a/compiler/cpp/src/generate/t_py_generator.cc b/compiler/cpp/src/generate/t_py_generator.cc index 5ed25674..256029ec 100644 --- a/compiler/cpp/src/generate/t_py_generator.cc +++ b/compiler/cpp/src/generate/t_py_generator.cc @@ -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 << ")"; diff --git a/compiler/cpp/src/generate/t_rb_generator.cc b/compiler/cpp/src/generate/t_rb_generator.cc index a3f002f4..a15b9ce8 100644 --- a/compiler/cpp/src/generate/t_rb_generator.cc +++ b/compiler/cpp/src/generate/t_rb_generator.cc @@ -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(); diff --git a/compiler/cpp/src/generate/t_xsd_generator.cc b/compiler/cpp/src/generate/t_xsd_generator.cc index 3a0ca1c5..3f0b8f9a 100644 --- a/compiler/cpp/src/generate/t_xsd_generator.cc +++ b/compiler/cpp/src/generate/t_xsd_generator.cc @@ -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); } } diff --git a/compiler/cpp/src/main.cc b/compiler/cpp/src/main.cc index 7e561e16..b070b3b9 100644 --- a/compiler/cpp/src/main.cc +++ b/compiler/cpp/src/main.cc @@ -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) { diff --git a/compiler/cpp/src/parse/t_base_type.h b/compiler/cpp/src/parse/t_base_type.h index c08c4491..1c69c2eb 100644 --- a/compiler/cpp/src/parse/t_base_type.h +++ b/compiler/cpp/src/parse/t_base_type.h @@ -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; } }