From a3350b48eade40903b4cb7986301fafa8297fb16 Mon Sep 17 00:00:00 2001 From: Jens Geyer Date: Fri, 30 May 2014 18:37:24 +0200 Subject: [PATCH] THRIFT-2560 Thrift compiler generator tries to concat ints with strings using + Client: Compiler Patch: Jens Geyer --- compiler/cpp/src/generate/t_as3_generator.cc | 2 +- .../cpp/src/generate/t_cocoa_generator.cc | 4 ++-- .../cpp/src/generate/t_csharp_generator.cc | 24 ++++--------------- compiler/cpp/src/generate/t_d_generator.cc | 7 +++++- .../cpp/src/generate/t_delphi_generator.cc | 10 ++++---- .../cpp/src/generate/t_javame_generator.cc | 2 +- .../cpp/src/generate/t_ocaml_generator.cc | 2 +- compiler/cpp/src/generate/t_xsd_generator.cc | 2 +- 8 files changed, 21 insertions(+), 32 deletions(-) diff --git a/compiler/cpp/src/generate/t_as3_generator.cc b/compiler/cpp/src/generate/t_as3_generator.cc index c6738458..a965aabf 100644 --- a/compiler/cpp/src/generate/t_as3_generator.cc +++ b/compiler/cpp/src/generate/t_as3_generator.cc @@ -2499,7 +2499,7 @@ string t_as3_generator::base_type_name(t_base_type* type, case t_base_type::TYPE_DOUBLE: return "Number"; default: - throw "compiler error: no C++ name for base type " + t_base_type::t_base_name(tbase); + throw "compiler error: no As3 name for base type " + t_base_type::t_base_name(tbase); } } diff --git a/compiler/cpp/src/generate/t_cocoa_generator.cc b/compiler/cpp/src/generate/t_cocoa_generator.cc index e4980325..558d82e8 100644 --- a/compiler/cpp/src/generate/t_cocoa_generator.cc +++ b/compiler/cpp/src/generate/t_cocoa_generator.cc @@ -2029,7 +2029,7 @@ void t_cocoa_generator::generate_serialize_field(ofstream& out, out << "writeDouble: " << fieldName << "];"; break; default: - throw "compiler error: no Java name for base type " + t_base_type::t_base_name(tbase); + throw "compiler error: no Objective-C name for base type " + t_base_type::t_base_name(tbase); } } else if (type->is_enum()) { out << "writeI32: " << fieldName << "];"; @@ -2271,7 +2271,7 @@ string t_cocoa_generator::base_type_name(t_base_type* type) { case t_base_type::TYPE_DOUBLE: return "double"; default: - throw "compiler error: no objective-c name for base type " + t_base_type::t_base_name(tbase); + throw "compiler error: no Objective-C name for base type " + t_base_type::t_base_name(tbase); } } diff --git a/compiler/cpp/src/generate/t_csharp_generator.cc b/compiler/cpp/src/generate/t_csharp_generator.cc index 8e477e46..84e36742 100644 --- a/compiler/cpp/src/generate/t_csharp_generator.cc +++ b/compiler/cpp/src/generate/t_csharp_generator.cc @@ -464,11 +464,7 @@ std::string t_csharp_generator::render_const_value(ofstream& out, string name, t } break; default: - { - std::stringstream ss; - ss << "compiler error: no const of base type " << tbase; - throw ss.str(); - } + throw "compiler error: no const of base type " + t_base_type::t_base_name(tbase); } } else if (type->is_enum()) { render << type->get_name() << "." << value->get_identifier_name(); @@ -2038,11 +2034,7 @@ void t_csharp_generator::generate_deserialize_field(ofstream& out, t_field* tfie out << "ReadDouble();"; break; default: - { - std::stringstream ss; - ss << "compiler error: no C# name for base type " << tbase; - throw ss.str(); - } + throw "compiler error: no C# name for base type " + t_base_type::t_base_name(tbase); } } else if (type->is_enum()) { out << "ReadI32();"; @@ -2217,11 +2209,7 @@ void t_csharp_generator::generate_deserialize_list_element(ofstream& out, t_list out << "WriteDouble(" << nullable_name << ");"; break; default: - { - std::stringstream ss; - ss << "compiler error: no C# name for base type " << tbase; - throw ss.str(); - } + throw "compiler error: no C# name for base type " + t_base_type::t_base_name(tbase); } } else if (type->is_enum()) { out << "WriteI32((int)" << nullable_name << ");"; @@ -2465,11 +2453,7 @@ string t_csharp_generator::base_type_name(t_base_type* tbase, bool in_container, case t_base_type::TYPE_DOUBLE: return "double" + postfix; default: - { - std::stringstream ss; - ss << "compiler error: no C# name for base type " << tbase->get_base(); - throw ss.str(); - } + throw "compiler error: no C# name for base type " + t_base_type::t_base_name(tbase->get_base()); } } diff --git a/compiler/cpp/src/generate/t_d_generator.cc b/compiler/cpp/src/generate/t_d_generator.cc index 58dbb9aa..706506af 100644 --- a/compiler/cpp/src/generate/t_d_generator.cc +++ b/compiler/cpp/src/generate/t_d_generator.cc @@ -740,7 +740,12 @@ class t_d_generator : public t_oop_generator { case t_field::T_REQUIRED: return "TReq.REQUIRED"; default: - throw "Compiler error: Invalid requirement level: " + req; + { + std::stringstream ss; + ss << "Compiler error: Invalid requirement level " << req; + throw ss.str(); + } + } } diff --git a/compiler/cpp/src/generate/t_delphi_generator.cc b/compiler/cpp/src/generate/t_delphi_generator.cc index 4ecc2694..b877e863 100644 --- a/compiler/cpp/src/generate/t_delphi_generator.cc +++ b/compiler/cpp/src/generate/t_delphi_generator.cc @@ -1127,7 +1127,7 @@ string t_delphi_generator::render_const_value(ostream& vars, ostream& out, strin } break; default: - render << ""; + throw "compiler error: no const of base type " + t_base_type::t_base_name(tbase); } } else if (truetype->is_enum()) { render << type_name( type, false) << "." << value->get_identifier_name(); @@ -2232,7 +2232,7 @@ void t_delphi_generator::generate_deserialize_field(ostream& out, bool is_xcepti out << "ReadDouble();"; break; default: - throw "compiler error: no C# name for base type " + tbase; + throw "compiler error: no Delphi name for base type " + t_base_type::t_base_name(tbase); } } else if (type->is_enum()) { out << "ReadI32()"; @@ -2415,7 +2415,7 @@ void t_delphi_generator::generate_serialize_field(ostream& out, bool is_xception out << "WriteDouble(" << name << ");"; break; default: - throw "compiler error: no Delphi name for base type " + tbase; + throw "compiler error: no Delphi name for base type " + t_base_type::t_base_name(tbase); } } else if (type->is_enum()) { out << "WriteI32(Integer(" << name << "));"; @@ -2662,7 +2662,7 @@ string t_delphi_generator::input_arg_prefix( t_type* ttype) { // we better always report any unknown types default: - throw "compiler error: no input_arg_prefix() for base type " + (((t_base_type*)ttype)->get_base()); + throw "compiler error: no input_arg_prefix() for base type " + t_base_type::t_base_name(((t_base_type*)ttype)->get_base()); } // enums @@ -2713,7 +2713,7 @@ string t_delphi_generator::base_type_name(t_base_type* tbase) { case t_base_type::TYPE_DOUBLE: return "Double"; default: - throw "compiler error: no Delphi name for base type " + tbase->get_base(); + throw "compiler error: no Delphi name for base type " + t_base_type::t_base_name(tbase->get_base()); } } diff --git a/compiler/cpp/src/generate/t_javame_generator.cc b/compiler/cpp/src/generate/t_javame_generator.cc index a2a31a55..6d029792 100644 --- a/compiler/cpp/src/generate/t_javame_generator.cc +++ b/compiler/cpp/src/generate/t_javame_generator.cc @@ -2953,7 +2953,7 @@ string t_javame_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 " + t_base_type::t_base_name(tbase); + throw "compiler error: no Java 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 8ee870f6..f3df4e3a 100644 --- a/compiler/cpp/src/generate/t_ocaml_generator.cc +++ b/compiler/cpp/src/generate/t_ocaml_generator.cc @@ -1462,7 +1462,7 @@ void t_ocaml_generator::generate_deserialize_type(ofstream &out, out << "readDouble"; break; default: - throw "compiler error: no PHP name for base type " + t_base_type::t_base_name(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_xsd_generator.cc b/compiler/cpp/src/generate/t_xsd_generator.cc index ef00e51f..7135f6ab 100644 --- a/compiler/cpp/src/generate/t_xsd_generator.cc +++ b/compiler/cpp/src/generate/t_xsd_generator.cc @@ -359,7 +359,7 @@ 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 " + t_base_type::t_base_name(tbase); + throw "compiler error: no XSD base type name for base type " + t_base_type::t_base_name(tbase); } } -- 2.17.1