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 99190b7..1bbb2ed 100644
--- a/compiler/cpp/src/generate/t_cpp_generator.cc
+++ b/compiler/cpp/src/generate/t_cpp_generator.cc
@@ -326,7 +326,7 @@
}
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 @@
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 @@
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 @@
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 @@
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 36a37a6..e3909bd 100644
--- a/compiler/cpp/src/generate/t_erl_generator.cc
+++ b/compiler/cpp/src/generate/t_erl_generator.cc
@@ -201,7 +201,7 @@
}
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 @@
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 @@
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 614ebe7..920b453 100644
--- a/compiler/cpp/src/generate/t_hs_generator.cc
+++ b/compiler/cpp/src/generate/t_hs_generator.cc
@@ -236,7 +236,7 @@
}
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 @@
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 @@
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 d4d8fbf..808d7ec 100644
--- a/compiler/cpp/src/generate/t_java_generator.cc
+++ b/compiler/cpp/src/generate/t_java_generator.cc
@@ -281,7 +281,7 @@
}
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 @@
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 @@
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 @@
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 5d51996..0a5f97b 100644
--- a/compiler/cpp/src/generate/t_ocaml_generator.cc
+++ b/compiler/cpp/src/generate/t_ocaml_generator.cc
@@ -239,7 +239,7 @@
}
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 @@
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 @@
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 1474deb..ed3fab7 100644
--- a/compiler/cpp/src/generate/t_perl_generator.cc
+++ b/compiler/cpp/src/generate/t_perl_generator.cc
@@ -146,7 +146,7 @@
}
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 @@
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 @@
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 @@
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 1596a3b..f78a7dc 100644
--- a/compiler/cpp/src/generate/t_php_generator.cc
+++ b/compiler/cpp/src/generate/t_php_generator.cc
@@ -180,7 +180,7 @@
}
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 @@
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 @@
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 @@
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 @@
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 @@
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 5ed2567..256029e 100644
--- a/compiler/cpp/src/generate/t_py_generator.cc
+++ b/compiler/cpp/src/generate/t_py_generator.cc
@@ -184,7 +184,7 @@
}
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 @@
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 @@
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 a3f002f..a15b9ce 100644
--- a/compiler/cpp/src/generate/t_rb_generator.cc
+++ b/compiler/cpp/src/generate/t_rb_generator.cc
@@ -176,7 +176,7 @@
}
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 3a0ca1c..3f0b8f9 100644
--- a/compiler/cpp/src/generate/t_xsd_generator.cc
+++ b/compiler/cpp/src/generate/t_xsd_generator.cc
@@ -265,6 +265,6 @@
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 7e561e1..b070b3b 100644
--- a/compiler/cpp/src/main.cc
+++ b/compiler/cpp/src/main.cc
@@ -614,7 +614,7 @@
}
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 c08c449..1c69c2e 100644
--- a/compiler/cpp/src/parse/t_base_type.h
+++ b/compiler/cpp/src/parse/t_base_type.h
@@ -87,17 +87,24 @@
}
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;
}
}