summaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
authorJens Geyer <jensg@apache.org>2022-10-15 18:50:14 +0200
committerJens Geyer <jensg@apache.org>2022-10-16 11:41:33 +0200
commitec0141cc550e3ab7c8abb086e41407d145c44c19 (patch)
tree2e3517b885244043d14f00cc5f75e66396e513ae /compiler
parent9207b28b7df5f8e01960154971e8de07094c91a8 (diff)
downloadthrift-ec0141cc550e3ab7c8abb086e41407d145c44c19.tar.gz
* THRIFT-4655 Parser fails on the word "from"
Client: Compiler (general) Patch: Jens Geyer This also fixes an unhandled "normalize" case with enums in netstd that came up during tests for this ticket. This closes #2715
Diffstat (limited to 'compiler')
-rw-r--r--compiler/cpp/src/thrift/generate/t_c_glib_generator.cc6
-rw-r--r--compiler/cpp/src/thrift/generate/t_cl_generator.cc6
-rw-r--r--compiler/cpp/src/thrift/generate/t_cpp_generator.cc6
-rw-r--r--compiler/cpp/src/thrift/generate/t_d_generator.cc10
-rw-r--r--compiler/cpp/src/thrift/generate/t_dart_generator.cc6
-rw-r--r--compiler/cpp/src/thrift/generate/t_delphi_generator.cc10
-rw-r--r--compiler/cpp/src/thrift/generate/t_erl_generator.cc6
-rw-r--r--compiler/cpp/src/thrift/generate/t_generator.cc22
-rw-r--r--compiler/cpp/src/thrift/generate/t_generator.h18
-rw-r--r--compiler/cpp/src/thrift/generate/t_go_generator.cc5
-rw-r--r--compiler/cpp/src/thrift/generate/t_go_generator.h1
-rw-r--r--compiler/cpp/src/thrift/generate/t_gv_generator.cc11
-rw-r--r--compiler/cpp/src/thrift/generate/t_haxe_generator.cc6
-rw-r--r--compiler/cpp/src/thrift/generate/t_html_generator.cc6
-rw-r--r--compiler/cpp/src/thrift/generate/t_java_generator.cc21
-rw-r--r--compiler/cpp/src/thrift/generate/t_javame_generator.cc6
-rw-r--r--compiler/cpp/src/thrift/generate/t_js_generator.cc9
-rw-r--r--compiler/cpp/src/thrift/generate/t_json_generator.cc7
-rw-r--r--compiler/cpp/src/thrift/generate/t_kotlin_generator.cc7
-rw-r--r--compiler/cpp/src/thrift/generate/t_lua_generator.cc12
-rw-r--r--compiler/cpp/src/thrift/generate/t_markdown_generator.cc7
-rw-r--r--compiler/cpp/src/thrift/generate/t_netstd_generator.cc7
-rw-r--r--compiler/cpp/src/thrift/generate/t_netstd_generator.h1
-rw-r--r--compiler/cpp/src/thrift/generate/t_ocaml_generator.cc7
-rw-r--r--compiler/cpp/src/thrift/generate/t_perl_generator.cc6
-rw-r--r--compiler/cpp/src/thrift/generate/t_php_generator.cc24
-rw-r--r--compiler/cpp/src/thrift/generate/t_py_generator.cc10
-rw-r--r--compiler/cpp/src/thrift/generate/t_rb_generator.cc6
-rw-r--r--compiler/cpp/src/thrift/generate/t_rs_generator.cc6
-rw-r--r--compiler/cpp/src/thrift/generate/t_st_generator.cc6
-rw-r--r--compiler/cpp/src/thrift/generate/t_swift_generator.cc10
-rw-r--r--compiler/cpp/src/thrift/generate/t_xml_generator.cc7
-rw-r--r--compiler/cpp/src/thrift/generate/t_xsd_generator.cc6
-rw-r--r--compiler/cpp/test/CMakeLists.txt4
-rw-r--r--compiler/cpp/test/keyword-samples/const1_return.thrift3
-rw-r--r--compiler/cpp/test/keyword-samples/enum1_return.thrift3
-rw-r--r--compiler/cpp/test/keyword-samples/enum2_return.thrift3
-rw-r--r--compiler/cpp/test/keyword-samples/exception1_return.thrift2
-rw-r--r--compiler/cpp/test/keyword-samples/exception2_return.thrift2
-rw-r--r--compiler/cpp/test/keyword-samples/service1_return.thrift2
-rw-r--r--compiler/cpp/test/keyword-samples/service2_return.thrift2
-rw-r--r--compiler/cpp/test/keyword-samples/service3_return.thrift2
-rw-r--r--compiler/cpp/test/keyword-samples/service4_return.thrift2
-rw-r--r--compiler/cpp/test/keyword-samples/struct1_return.thrift2
-rw-r--r--compiler/cpp/test/keyword-samples/struct2_return.thrift2
-rw-r--r--compiler/cpp/test/keyword-samples/typedef1_return.thrift3
-rw-r--r--compiler/cpp/test/keyword-samples/union1_return.thrift3
-rw-r--r--compiler/cpp/test/keyword-samples/union2_return.thrift4
48 files changed, 281 insertions, 42 deletions
diff --git a/compiler/cpp/src/thrift/generate/t_c_glib_generator.cc b/compiler/cpp/src/thrift/generate/t_c_glib_generator.cc
index 4ce9c5fdc..da2533849 100644
--- a/compiler/cpp/src/thrift/generate/t_c_glib_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_c_glib_generator.cc
@@ -105,6 +105,7 @@ public:
/* initialization and destruction */
void init_generator() override;
void close_generator() override;
+ std::string display_name() const override;
/* generation functions */
void generate_typedef(t_typedef* ttypedef) override;
@@ -4583,4 +4584,9 @@ string underscores_to_initial_caps(string name) {
}
/* register this generator with the main program */
+std::string t_c_glib_generator::display_name() const {
+ return "C, using GLib";
+}
+
+
THRIFT_REGISTER_GENERATOR(c_glib, "C, using GLib", "")
diff --git a/compiler/cpp/src/thrift/generate/t_cl_generator.cc b/compiler/cpp/src/thrift/generate/t_cl_generator.cc
index 06b6b6563..e0dcc46af 100644
--- a/compiler/cpp/src/thrift/generate/t_cl_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_cl_generator.cc
@@ -72,6 +72,7 @@ class t_cl_generator : public t_oop_generator {
void init_generator() override;
void close_generator() override;
+ std::string display_name() const override;
void generate_typedef (t_typedef* ttypedef) override;
void generate_enum (t_enum* tenum) override;
@@ -551,6 +552,11 @@ string t_cl_generator::type_name(t_type* ttype) {
return prefix + name;
}
+std::string t_cl_generator::display_name() const {
+ return "Common Lisp";
+}
+
+
THRIFT_REGISTER_GENERATOR(
cl,
"Common Lisp",
diff --git a/compiler/cpp/src/thrift/generate/t_cpp_generator.cc b/compiler/cpp/src/thrift/generate/t_cpp_generator.cc
index dd444bc9c..9724fae80 100644
--- a/compiler/cpp/src/thrift/generate/t_cpp_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_cpp_generator.cc
@@ -104,6 +104,7 @@ public:
void init_generator() override;
void close_generator() override;
+ std::string display_name() const override;
void generate_consts(std::vector<t_const*> consts) override;
@@ -4751,6 +4752,11 @@ string t_cpp_generator::get_legal_program_name(std::string program_name)
return program_name;
}
+std::string t_cpp_generator::display_name() const {
+ return "C++";
+}
+
+
THRIFT_REGISTER_GENERATOR(
cpp,
"C++",
diff --git a/compiler/cpp/src/thrift/generate/t_d_generator.cc b/compiler/cpp/src/thrift/generate/t_d_generator.cc
index f9e485642..38194c207 100644
--- a/compiler/cpp/src/thrift/generate/t_d_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_d_generator.cc
@@ -69,6 +69,7 @@ public:
out_dir_base_ = "gen-d";
}
+ std::string display_name() const override;
protected:
@@ -371,6 +372,7 @@ private:
/**
* Writes a server skeleton for the passed service to out.
*/
+
void print_server_skeleton(ostream& out, t_service* tservice) {
string svc_name = suffix_if_reserved(tservice->get_name());
@@ -432,6 +434,7 @@ private:
/**
* Writes the definition of a struct or an exception type to out.
*/
+
void print_struct_definition(ostream& out, t_struct* tstruct, bool is_exception) {
const vector<t_field*>& members = tstruct->get_members();
@@ -495,6 +498,7 @@ private:
* Prints the D function signature (including return type) for the given
* method.
*/
+
void print_function_signature(ostream& out, t_function* fn) {
out << render_type_name(fn->get_returntype()) << " " << suffix_if_reserved(fn->get_name()) << "(";
@@ -722,6 +726,7 @@ private:
* Writes the default list of imports (which are written to every generated
* module) to f.
*/
+
void print_default_imports(ostream& out) {
indent(out) << "import thrift.base;" << endl << "import thrift.codegen.base;" << endl
<< "import thrift.util.hashset;" << endl << endl;
@@ -771,4 +776,9 @@ vector<string> t_d_generator::d_reserved_words = {
"ushort", "version", "void", "wchar", "while", "with"
};
+std::string t_d_generator::display_name() const {
+ return "D";
+}
+
+
THRIFT_REGISTER_GENERATOR(d, "D", "")
diff --git a/compiler/cpp/src/thrift/generate/t_dart_generator.cc b/compiler/cpp/src/thrift/generate/t_dart_generator.cc
index 61cd98167..fda989b24 100644
--- a/compiler/cpp/src/thrift/generate/t_dart_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_dart_generator.cc
@@ -123,6 +123,7 @@ public:
void init_generator() override;
void close_generator() override;
+ std::string display_name() const override;
void export_class_to_library(string file_name, string class_name);
@@ -2508,6 +2509,11 @@ std::string t_dart_generator::get_ttype_class_name(t_type* ttype) {
}
}
+std::string t_dart_generator::display_name() const {
+ return "Dart";
+}
+
+
THRIFT_REGISTER_GENERATOR(
dart,
"Dart",
diff --git a/compiler/cpp/src/thrift/generate/t_delphi_generator.cc b/compiler/cpp/src/thrift/generate/t_delphi_generator.cc
index 625179f8f..8c37c6534 100644
--- a/compiler/cpp/src/thrift/generate/t_delphi_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_delphi_generator.cc
@@ -105,6 +105,7 @@ public:
void init_generator() override;
void close_generator() override;
+ std::string display_name() const override;
void generate_consts(std::vector<t_const*> consts) override;
@@ -1996,7 +1997,7 @@ void t_delphi_generator::generate_guid(std::ostream& out) {
#ifdef _WIN32 // TODO: add support for non-windows platforms if needed
GUID guid;
if (SUCCEEDED(CoCreateGuid(&guid))) {
- OLECHAR guid_chars[40];
+ OLECHAR guid_chars[40]{};
if (StringFromGUID2(guid, &guid_chars[0], sizeof(guid_chars) / sizeof(guid_chars[0])) > 0) {
std::wstring guid_wstr(guid_chars);
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> convert;
@@ -4131,9 +4132,14 @@ bool t_delphi_generator::is_void(t_type* type) {
return false;
}
+std::string t_delphi_generator::display_name() const {
+ return "Delphi";
+}
+
+
THRIFT_REGISTER_GENERATOR(
delphi,
- "delphi",
+ "Delphi",
" ansistr_binary: Use AnsiString for binary datatype (default is TBytes).\n"
" register_types: Enable TypeRegistry, allows for creation of struct, union\n"
" and container instances by interface or TypeInfo()\n"
diff --git a/compiler/cpp/src/thrift/generate/t_erl_generator.cc b/compiler/cpp/src/thrift/generate/t_erl_generator.cc
index 1f4fd506d..729397296 100644
--- a/compiler/cpp/src/thrift/generate/t_erl_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_erl_generator.cc
@@ -84,6 +84,7 @@ public:
void init_generator() override;
void close_generator() override;
+ std::string display_name() const override;
/**
* Program-level generation functions
@@ -1280,6 +1281,11 @@ std::string t_erl_generator::type_module(t_type* ttype) {
return make_safe_for_module_name(ttype->get_program()->get_name()) + "_types";
}
+std::string t_erl_generator::display_name() const {
+ return "Erlang";
+}
+
+
THRIFT_REGISTER_GENERATOR(
erl,
"Erlang",
diff --git a/compiler/cpp/src/thrift/generate/t_generator.cc b/compiler/cpp/src/thrift/generate/t_generator.cc
index f26690b9a..970281e74 100644
--- a/compiler/cpp/src/thrift/generate/t_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_generator.cc
@@ -76,20 +76,11 @@ void t_generator::generate_program() {
close_generator();
}
-std::set<std::string> t_generator::lang_keywords() const {
- std::string keywords[] = { "BEGIN", "END", "__CLASS__", "__DIR__", "__FILE__", "__FUNCTION__",
- "__LINE__", "__METHOD__", "__NAMESPACE__", "abstract", "alias", "and", "args", "as",
- "assert", "begin", "break", "case", "catch", "class", "clone", "continue", "declare",
- "def", "default", "del", "delete", "do", "dynamic", "elif", "else", "elseif", "elsif",
- "end", "enddeclare", "endfor", "endforeach", "endif", "endswitch", "endwhile", "ensure",
- "except", "exec", "finally", "float", "for", "foreach", "from", "function", "global",
- "goto", "if", "implements", "import", "in", "inline", "instanceof", "interface", "is",
- "lambda", "module", "native", "new", "next", "nil", "not", "or", "package", "pass",
- "public", "print", "private", "protected", "raise", "redo", "rescue", "retry", "register",
- "return", "self", "sizeof", "static", "super", "switch", "synchronized", "then", "this",
- "throw", "transient", "try", "undef", "unless", "unsigned", "until", "use", "var",
- "virtual", "volatile", "when", "while", "with", "xor", "yield" };
- return std::set<std::string>(keywords, keywords + sizeof(keywords)/sizeof(keywords[0]) );
+std::set<std::string> t_generator::lang_keywords_for_validation() const {
+ // Nothing by default. It makes no sense to restrict the whole world to use non-PHP keywords only.
+ // Override on a per-generator(!) basis if you cannot live without it, e.g. that particular language has no
+ // mechanism or way to deal with it properly, so we absolutely need to fail on it as the last possible resort.
+ return {};
}
void t_generator::validate_input() const {
@@ -143,7 +134,8 @@ void t_generator::validate(t_field const* f) const {
void t_generator::validate_id(const string& id) const {
if (keywords_.find(id) != keywords_.end()) {
- failure("Cannot use reserved language keyword: \"%s\"", id.c_str());
+ // What the message really means is "we did not get it done yet"
+ failure("Cannot use reserved language keyword \"%s\" with target language %s", id.c_str(), display_name().c_str());
}
}
diff --git a/compiler/cpp/src/thrift/generate/t_generator.h b/compiler/cpp/src/thrift/generate/t_generator.h
index 21c2798e5..4d5a2953e 100644
--- a/compiler/cpp/src/thrift/generate/t_generator.h
+++ b/compiler/cpp/src/thrift/generate/t_generator.h
@@ -43,7 +43,7 @@
class t_generator {
public:
t_generator(t_program* program) {
- update_keywords();
+ update_keywords_for_validation();
tmp_ = 0;
indent_ = 0;
@@ -100,18 +100,24 @@ public:
/**
* Check if all identifiers are valid for the target language
- * See update_keywords()
+ * See update_keywords_for_validation()
*/
virtual void validate_input() const;
+ /**
+ * Must override. Should be equivalent to the "long name" parameter at THRIFT_REGISTER_GENERATOR.
+ * TODO: essentially duplicates, so we should find a way to get rid of one
+ */
+ virtual std::string display_name() const = 0;
protected:
- virtual std::set<std::string> lang_keywords() const;
+ virtual std::set<std::string> lang_keywords_for_validation() const;
/**
- * Call this from constructor if you implement lang_keywords()
+ * Call this from constructor if you implement lang_keywords_for_validation()
*/
- void update_keywords() {
- keywords_ = lang_keywords();
+
+ void update_keywords_for_validation() {
+ keywords_ = lang_keywords_for_validation();
}
/**
diff --git a/compiler/cpp/src/thrift/generate/t_go_generator.cc b/compiler/cpp/src/thrift/generate/t_go_generator.cc
index e0ca489f5..45d047aa7 100644
--- a/compiler/cpp/src/thrift/generate/t_go_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_go_generator.cc
@@ -4012,6 +4012,11 @@ bool format_go_output(const string& file_path) {
*/
}
+std::string t_go_generator::display_name() const {
+ return "Go";
+}
+
+
THRIFT_REGISTER_GENERATOR(go, "Go",
" package_prefix= Package prefix for generated files.\n" \
" thrift_import= Override thrift package import path (default:" + DEFAULT_THRIFT_IMPORT + ")\n" \
diff --git a/compiler/cpp/src/thrift/generate/t_go_generator.h b/compiler/cpp/src/thrift/generate/t_go_generator.h
index 5080e1a0d..a67485c55 100644
--- a/compiler/cpp/src/thrift/generate/t_go_generator.h
+++ b/compiler/cpp/src/thrift/generate/t_go_generator.h
@@ -94,6 +94,7 @@ public:
void init_generator() override;
void close_generator() override;
+ std::string display_name() const override;
/**
* Program-level generation functions
diff --git a/compiler/cpp/src/thrift/generate/t_gv_generator.cc b/compiler/cpp/src/thrift/generate/t_gv_generator.cc
index 724a92742..f8616ffb3 100644
--- a/compiler/cpp/src/thrift/generate/t_gv_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_gv_generator.cc
@@ -67,12 +67,15 @@ public:
/**
* Init and end of generator
*/
+
void init_generator() override;
void close_generator() override;
+ std::string display_name() const override;
/**
* Program-level generation functions
*/
+
void generate_typedef(t_typedef* ttypedef) override;
void generate_enum(t_enum* tenum) override;
void generate_const(t_const* tconst) override;
@@ -83,6 +86,7 @@ protected:
/**
* Helpers
*/
+
void print_type(t_type* ttype, string struct_field_ref);
void print_const_value(t_type* type, t_const_value* tvalue);
@@ -336,9 +340,14 @@ void t_gv_generator::generate_service(t_service* tservice) {
}
}
- f_out_ << " }" << endl;
+ f_out_ << " }" << endl;
}
+std::string t_gv_generator::display_name() const {
+ return "Graphviz";
+}
+
+
THRIFT_REGISTER_GENERATOR(
gv,
"Graphviz",
diff --git a/compiler/cpp/src/thrift/generate/t_haxe_generator.cc b/compiler/cpp/src/thrift/generate/t_haxe_generator.cc
index 8893742d4..aa628b7ab 100644
--- a/compiler/cpp/src/thrift/generate/t_haxe_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_haxe_generator.cc
@@ -75,6 +75,7 @@ public:
void init_generator() override;
void close_generator() override;
+ std::string display_name() const override;
void generate_consts(std::vector<t_const*> consts) override;
@@ -3017,6 +3018,11 @@ std::string t_haxe_generator::get_enum_class_name(t_type* type) {
return package + type->get_name();
}
+std::string t_haxe_generator::display_name() const {
+ return "Haxe";
+}
+
+
THRIFT_REGISTER_GENERATOR(
haxe,
"Haxe",
diff --git a/compiler/cpp/src/thrift/generate/t_html_generator.cc b/compiler/cpp/src/thrift/generate/t_html_generator.cc
index f51de48da..15a0401d5 100644
--- a/compiler/cpp/src/thrift/generate/t_html_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_html_generator.cc
@@ -81,6 +81,7 @@ public:
init_allowed__markup();
}
+ std::string display_name() const override;
void generate_program() override;
void generate_program_toc();
@@ -1076,6 +1077,11 @@ void t_html_generator::generate_service(t_service* tservice) {
}
}
+std::string t_html_generator::display_name() const {
+ return "HTML";
+}
+
+
THRIFT_REGISTER_GENERATOR(
html,
"HTML",
diff --git a/compiler/cpp/src/thrift/generate/t_java_generator.cc b/compiler/cpp/src/thrift/generate/t_java_generator.cc
index a6041d7c4..5c3c76ff4 100644
--- a/compiler/cpp/src/thrift/generate/t_java_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_java_generator.cc
@@ -145,6 +145,7 @@ public:
void init_generator() override;
void close_generator() override;
+ std::string display_name() const override;
void generate_consts(std::vector<t_const*> consts) override;
@@ -5777,33 +5778,33 @@ void t_java_generator::generate_javax_generated_annotation(ostream& out) {
}
}
+std::string t_java_generator::display_name() const {
+ return "Java";
+}
+
+
THRIFT_REGISTER_GENERATOR(
java,
"Java",
" beans: Members will be private, and setter methods will return void.\n"
- " private_members: Members will be private, but setter methods will return 'this' like "
- "usual.\n"
+ " private_members: Members will be private, but setter methods will return 'this' like usual.\n"
" private-members: Same as 'private_members' (deprecated).\n"
" nocamel: Do not use CamelCase field accessors with beans.\n"
" fullcamel: Convert underscored_accessor_or_service_names to camelCase.\n"
" android: Generated structures are Parcelable.\n"
- " android_legacy: Do not use java.io.IOException(throwable) (available for Android 2.3 and "
- "above).\n"
+ " android_legacy: Do not use java.io.IOException(throwable) (available for Android 2.3 and above).\n"
" option_type=[thrift|jdk8]:\n"
" thrift: wrap optional fields in thrift Option type.\n"
" jdk8: Wrap optional fields in JDK8+ Option type.\n"
" If the Option type is not specified, 'thrift' is used.\n"
" rethrow_unhandled_exceptions:\n"
- " Enable rethrow of unhandled exceptions and let them propagate further."
- " (Default behavior is to catch and log it.)\n"
+ " Enable rethrow of unhandled exceptions and let them propagate further. (Default behavior is to catch and log it.)\n"
" java5: Generate Java 1.5 compliant code (includes android_legacy flag).\n"
" future_iface: Generate CompletableFuture based iface based on async client.\n"
- " reuse_objects: Data objects will not be allocated, but existing instances will be used "
- "(read and write).\n"
+ " reuse_objects: Data objects will not be allocated, but existing instances will be used (read and write).\n"
" reuse-objects: Same as 'reuse_objects' (deprecated).\n"
" sorted_containers:\n"
- " Use TreeSet/TreeMap instead of HashSet/HashMap as a implementation of "
- "set/map.\n"
+ " Use TreeSet/TreeMap instead of HashSet/HashMap as a implementation of set/map.\n"
" generated_annotations=[undated|suppress]:\n"
" undated: suppress the date at @Generated annotations\n"
" suppress: suppress @Generated annotations entirely\n"
diff --git a/compiler/cpp/src/thrift/generate/t_javame_generator.cc b/compiler/cpp/src/thrift/generate/t_javame_generator.cc
index 4da086965..d8d905630 100644
--- a/compiler/cpp/src/thrift/generate/t_javame_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_javame_generator.cc
@@ -67,6 +67,7 @@ public:
void init_generator() override;
void close_generator() override;
+ std::string display_name() const override;
void generate_consts(std::vector<t_const*> consts) override;
@@ -3295,4 +3296,9 @@ void t_javame_generator::generate_java_struct_clear(std::ostream& out, t_struct*
indent(out) << "}" << endl << endl;
}
+std::string t_javame_generator::display_name() const {
+ return "Java ME";
+}
+
+
THRIFT_REGISTER_GENERATOR(javame, "Java ME", "")
diff --git a/compiler/cpp/src/thrift/generate/t_js_generator.cc b/compiler/cpp/src/thrift/generate/t_js_generator.cc
index 03a307f82..fbd657efe 100644
--- a/compiler/cpp/src/thrift/generate/t_js_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_js_generator.cc
@@ -131,6 +131,7 @@ public:
void init_generator() override;
void close_generator() override;
+ std::string display_name() const override;
/**
* Program-level generation functions
@@ -151,6 +152,7 @@ public:
/**
* Structs!
*/
+
void generate_js_struct(t_struct* tstruct, bool is_exception);
void generate_js_struct_definition(std::ostream& out,
t_struct* tstruct,
@@ -163,6 +165,7 @@ public:
/**
* Service-level generation functions
*/
+
void generate_service_helpers(t_service* tservice);
void generate_service_interface(t_service* tservice);
void generate_service_rest(t_service* tservice);
@@ -229,6 +232,7 @@ public:
/**
* Helper parser functions
*/
+
void parse_imports(t_program* program, const std::string& imports_string);
void parse_thrift_package_output_directory(const std::string& thrift_package_output_directory);
@@ -2997,6 +3001,11 @@ std::string t_js_generator::next_identifier_name(const std::vector<t_field*>& fi
return current_name;
}
+std::string t_js_generator::display_name() const {
+ return "Javascript";
+}
+
+
THRIFT_REGISTER_GENERATOR(js,
"Javascript",
" jquery: Generate jQuery compatible code.\n"
diff --git a/compiler/cpp/src/thrift/generate/t_json_generator.cc b/compiler/cpp/src/thrift/generate/t_json_generator.cc
index 5a854cea6..b94e81c08 100644
--- a/compiler/cpp/src/thrift/generate/t_json_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_json_generator.cc
@@ -73,9 +73,9 @@ public:
/**
* Init and close methods
*/
-
void init_generator() override;
void close_generator() override;
+ std::string display_name() const override;
void generate_typedef(t_typedef* ttypedef) override;
void generate_enum(t_enum* tenum) override;
@@ -803,6 +803,11 @@ string t_json_generator::get_qualified_name(t_type* ttype) {
return ttype->get_program()->get_name() + "." + ttype->get_name();
}
+std::string t_json_generator::display_name() const {
+ return "JSON";
+}
+
+
THRIFT_REGISTER_GENERATOR(json,
"JSON",
" merge: Generate output with included files merged\n")
diff --git a/compiler/cpp/src/thrift/generate/t_kotlin_generator.cc b/compiler/cpp/src/thrift/generate/t_kotlin_generator.cc
index 29cf00a74..a01727200 100644
--- a/compiler/cpp/src/thrift/generate/t_kotlin_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_kotlin_generator.cc
@@ -75,8 +75,10 @@ public:
/**
* Init and close methods
*/
+
void init_generator() override;
void close_generator() override;
+ std::string display_name() const override;
void generate_consts(std::vector<t_const*> consts) override;
@@ -2005,4 +2007,9 @@ void t_kotlin_generator::generate_kdoc_comment(ostream& out, t_doc* tdoc) {
}
}
+std::string t_kotlin_generator::display_name() const {
+ return "Kotlin";
+}
+
+
THRIFT_REGISTER_GENERATOR(kotlin, "Kotlin", "")
diff --git a/compiler/cpp/src/thrift/generate/t_lua_generator.cc b/compiler/cpp/src/thrift/generate/t_lua_generator.cc
index a4b4a37d3..0dc7743f4 100644
--- a/compiler/cpp/src/thrift/generate/t_lua_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_lua_generator.cc
@@ -56,12 +56,15 @@ public:
/**
* Init and close methods
*/
+
void init_generator() override;
void close_generator() override;
+ std::string display_name() const override;
/**
* Program-level generation functions
*/
+
void generate_typedef(t_typedef* ttypedef) override;
void generate_enum(t_enum* tenum) override;
void generate_const(t_const* tconst) override;
@@ -80,6 +83,7 @@ private:
/**
* Struct-level generation functions
*/
+
void generate_lua_struct_definition(std::ostream& out,
t_struct* tstruct,
bool is_xception = false);
@@ -89,6 +93,7 @@ private:
/**
* Service-level generation functions
*/
+
void generate_service_client(std::ostream& out, t_service* tservice);
void generate_service_interface(std::ostream& out, t_service* tservice);
void generate_service_processor(std::ostream& out, t_service* tservice);
@@ -99,6 +104,7 @@ private:
/**
* Deserialization (Read)
*/
+
void generate_deserialize_field(std::ostream& out,
t_field* tfield,
bool local,
@@ -125,6 +131,7 @@ private:
/**
* Serialization (Write)
*/
+
void generate_serialize_field(std::ostream& out, t_field* tfield, std::string prefix = "");
void generate_serialize_struct(std::ostream& out, t_struct* tstruct, std::string prefix = "");
@@ -1164,6 +1171,11 @@ string t_lua_generator::type_to_enum(t_type* type) {
throw "INVALID TYPE IN type_to_enum: " + type->get_name();
}
+std::string t_lua_generator::display_name() const {
+ return "Lua";
+}
+
+
THRIFT_REGISTER_GENERATOR(
lua,
"Lua",
diff --git a/compiler/cpp/src/thrift/generate/t_markdown_generator.cc b/compiler/cpp/src/thrift/generate/t_markdown_generator.cc
index 0f6aa2227..76fe98b4e 100644
--- a/compiler/cpp/src/thrift/generate/t_markdown_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_markdown_generator.cc
@@ -84,6 +84,8 @@ public:
init_allowed__markup();
}
+ std::string display_name() const override;
+
void generate_program() override;
void generate_program_toc();
void generate_program_toc_row(t_program* tprog);
@@ -1103,6 +1105,11 @@ void t_markdown_generator::generate_service(t_service* tservice) {
}
}
+std::string t_markdown_generator::display_name() const {
+ return "Markdown";
+}
+
+
THRIFT_REGISTER_GENERATOR(
markdown,
"Markdown",
diff --git a/compiler/cpp/src/thrift/generate/t_netstd_generator.cc b/compiler/cpp/src/thrift/generate/t_netstd_generator.cc
index 4cf3db55b..b9c7fa874 100644
--- a/compiler/cpp/src/thrift/generate/t_netstd_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_netstd_generator.cc
@@ -427,7 +427,7 @@ void t_netstd_generator::generate_enum(ostream& out, t_enum* tenum)
{
generate_netstd_doc(out, *c_iter);
int value = (*c_iter)->get_value();
- out << indent() << (*c_iter)->get_name() << " = " << value << "," << endl;
+ out << indent() << normalize_name((*c_iter)->get_name()) << " = " << value << "," << endl;
}
scope_down(out);
@@ -3874,6 +3874,11 @@ string t_netstd_generator::get_enum_class_name(t_type* type)
return "global::" + package + type->get_name();
}
+std::string t_netstd_generator::display_name() const {
+ return "C#";
+}
+
+
THRIFT_REGISTER_GENERATOR(
netstd,
"C#",
diff --git a/compiler/cpp/src/thrift/generate/t_netstd_generator.h b/compiler/cpp/src/thrift/generate/t_netstd_generator.h
index 982cd26ef..b9456c89a 100644
--- a/compiler/cpp/src/thrift/generate/t_netstd_generator.h
+++ b/compiler/cpp/src/thrift/generate/t_netstd_generator.h
@@ -71,6 +71,7 @@ public:
// overrides
void init_generator() override;
void close_generator() override;
+ std::string display_name() const override;
void generate_consts(vector<t_const*> consts) override;
void generate_consts(ostream& out, vector<t_const*> consts);
void generate_typedef(t_typedef* ttypedef) override;
diff --git a/compiler/cpp/src/thrift/generate/t_ocaml_generator.cc b/compiler/cpp/src/thrift/generate/t_ocaml_generator.cc
index 747adcbac..5f9b80cf5 100644
--- a/compiler/cpp/src/thrift/generate/t_ocaml_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_ocaml_generator.cc
@@ -64,10 +64,12 @@ public:
~t_ocaml_generator() override;
void init_generator() override;
+ std::string display_name() const override;
/**
* Program-level generation functions
*/
+
void generate_program() override;
void generate_typedef(t_typedef* ttypedef) override;
void generate_enum(t_enum* tenum) override;
@@ -1769,4 +1771,9 @@ string t_ocaml_generator::render_ocaml_type(t_type* type) {
throw "INVALID TYPE IN type_to_enum: " + type->get_name();
}
+std::string t_ocaml_generator::display_name() const {
+ return "OCaml";
+}
+
+
THRIFT_REGISTER_GENERATOR(ocaml, "OCaml", "")
diff --git a/compiler/cpp/src/thrift/generate/t_perl_generator.cc b/compiler/cpp/src/thrift/generate/t_perl_generator.cc
index 72de69887..d133b2455 100644
--- a/compiler/cpp/src/thrift/generate/t_perl_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_perl_generator.cc
@@ -68,6 +68,7 @@ public:
void init_generator() override;
void close_generator() override;
+ std::string display_name() const override;
/**
* Program-level generation functions
@@ -1684,4 +1685,9 @@ string t_perl_generator::type_to_enum(t_type* type) {
throw "INVALID TYPE IN type_to_enum: " + type->get_name();
}
+std::string t_perl_generator::display_name() const {
+ return "Perl";
+}
+
+
THRIFT_REGISTER_GENERATOR(perl, "Perl", "")
diff --git a/compiler/cpp/src/thrift/generate/t_php_generator.cc b/compiler/cpp/src/thrift/generate/t_php_generator.cc
index c6e60c82a..5e02b9b69 100644
--- a/compiler/cpp/src/thrift/generate/t_php_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_php_generator.cc
@@ -99,6 +99,7 @@ public:
throw "oop and inlined are mutually exclusive.";
}
+ update_keywords_for_validation();
out_dir_base_ = (binary_inline_ ? "gen-phpi" : "gen-php");
escape_['$'] = "\\$";
}
@@ -115,6 +116,7 @@ public:
void init_generator() override;
void close_generator() override;
+ std::string display_name() const override;
/**
* Program-level generation functions
@@ -128,6 +130,7 @@ public:
void generate_service(t_service* tservice) override;
std::string render_const_value(t_type* type, t_const_value* value);
+ std::set<std::string> lang_keywords_for_validation() const override;
/**
* Structs!
@@ -418,6 +421,22 @@ private:
bool getters_setters_;
};
+std::set<std::string> t_php_generator::lang_keywords_for_validation() const {
+ std::string keywords[] = { "BEGIN", "END", "__CLASS__", "__DIR__", "__FILE__", "__FUNCTION__",
+ "__LINE__", "__METHOD__", "__NAMESPACE__", "abstract", "alias", "and", "args", "as",
+ "assert", "begin", "break", "case", "catch", "class", "clone", "continue", "declare",
+ "def", "default", "del", "delete", "do", "dynamic", "elif", "else", "elseif", "elsif",
+ "end", "enddeclare", "endfor", "endforeach", "endif", "endswitch", "endwhile", "ensure",
+ "except", "exec", "finally", "float", "for", "foreach", "from", "function", "global",
+ "goto", "if", "implements", "import", "in", "inline", "instanceof", "interface", "is",
+ "lambda", "module", "native", "new", "next", "nil", "not", "or", "package", "pass",
+ "public", "print", "private", "protected", "raise", "redo", "rescue", "retry", "register",
+ "return", "self", "sizeof", "static", "super", "switch", "synchronized", "then", "this",
+ "throw", "transient", "try", "undef", "unless", "unsigned", "until", "use", "var",
+ "virtual", "volatile", "when", "while", "with", "xor", "yield" };
+ return std::set<std::string>(keywords, keywords + sizeof(keywords)/sizeof(keywords[0]) );
+}
+
bool t_php_generator::is_valid_namespace(const std::string& sub_namespace) {
return sub_namespace == "path";
}
@@ -2871,6 +2890,11 @@ string t_php_generator::type_to_phpdoc(t_type* type) {
throw "INVALID TYPE IN type_to_enum: " + type->get_name();
}
+std::string t_php_generator::display_name() const {
+ return "PHP";
+}
+
+
THRIFT_REGISTER_GENERATOR(
php,
"PHP",
diff --git a/compiler/cpp/src/thrift/generate/t_py_generator.cc b/compiler/cpp/src/thrift/generate/t_py_generator.cc
index 8ab8b9881..857cb77fd 100644
--- a/compiler/cpp/src/thrift/generate/t_py_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_py_generator.cc
@@ -52,7 +52,7 @@ public:
const std::map<std::string, std::string>& parsed_options,
const std::string& option_string)
: t_generator (program) {
- update_keywords();
+ update_keywords_for_validation();
std::map<std::string, std::string>::const_iterator iter;
@@ -157,6 +157,7 @@ public:
void init_generator() override;
void close_generator() override;
+ std::string display_name() const override;
/**
* Program-level generation functions
@@ -357,7 +358,7 @@ private:
std::string module_;
protected:
- std::set<std::string> lang_keywords() const override {
+ std::set<std::string> lang_keywords_for_validation() const override {
std::string keywords[] = { "False", "None", "True", "and", "as", "assert", "break", "class",
"continue", "def", "del", "elif", "else", "except", "exec", "finally", "for", "from",
"global", "if", "import", "in", "is", "lambda", "nonlocal", "not", "or", "pass", "print",
@@ -2821,6 +2822,11 @@ string t_py_generator::type_to_spec_args(t_type* ttype) {
throw "INVALID TYPE IN type_to_spec_args: " + ttype->get_name();
}
+std::string t_py_generator::display_name() const {
+ return "Python";
+}
+
+
THRIFT_REGISTER_GENERATOR(
py,
"Python",
diff --git a/compiler/cpp/src/thrift/generate/t_rb_generator.cc b/compiler/cpp/src/thrift/generate/t_rb_generator.cc
index 2ec578771..90dbfe5d7 100644
--- a/compiler/cpp/src/thrift/generate/t_rb_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_rb_generator.cc
@@ -104,6 +104,7 @@ public:
void init_generator() override;
void close_generator() override;
+ std::string display_name() const override;
/**
* Program-level generation functions
@@ -1283,6 +1284,11 @@ void t_rb_generator::generate_rb_union_validator(t_rb_ofstream& out, t_struct* t
out.indent() << "end" << endl << endl;
}
+std::string t_rb_generator::display_name() const {
+ return "Ruby";
+}
+
+
THRIFT_REGISTER_GENERATOR(
rb,
"Ruby",
diff --git a/compiler/cpp/src/thrift/generate/t_rs_generator.cc b/compiler/cpp/src/thrift/generate/t_rs_generator.cc
index 5946e1d9a..f454d9b92 100644
--- a/compiler/cpp/src/thrift/generate/t_rs_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_rs_generator.cc
@@ -76,6 +76,7 @@ public:
void init_generator() override;
void close_generator() override;
+ std::string display_name() const override;
/**
* Program-level generation functions
@@ -3366,6 +3367,11 @@ void t_rs_generator::string_replace(string& target, const string& search_string,
}
}
+std::string t_rs_generator::display_name() const {
+ return "Rust";
+}
+
+
THRIFT_REGISTER_GENERATOR(
rs,
"Rust",
diff --git a/compiler/cpp/src/thrift/generate/t_st_generator.cc b/compiler/cpp/src/thrift/generate/t_st_generator.cc
index 5edb85281..b14118671 100644
--- a/compiler/cpp/src/thrift/generate/t_st_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_st_generator.cc
@@ -73,6 +73,7 @@ public:
void init_generator() override;
void close_generator() override;
+ std::string display_name() const override;
/**
* Program-level generation functions
@@ -1055,4 +1056,9 @@ string t_st_generator::type_to_enum(t_type* type) {
throw "INVALID TYPE IN type_to_enum: " + type->get_name();
}
+std::string t_st_generator::display_name() const {
+ return "Smalltalk";
+}
+
+
THRIFT_REGISTER_GENERATOR(st, "Smalltalk", "")
diff --git a/compiler/cpp/src/thrift/generate/t_swift_generator.cc b/compiler/cpp/src/thrift/generate/t_swift_generator.cc
index 78fb1d853..fab14135a 100644
--- a/compiler/cpp/src/thrift/generate/t_swift_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_swift_generator.cc
@@ -50,7 +50,7 @@ public:
const map<string, string>& parsed_options,
const string& option_string)
: t_oop_generator(program) {
- update_keywords();
+ update_keywords_for_validation();
(void)option_string;
map<string, string>::const_iterator iter;
@@ -98,6 +98,7 @@ public:
void init_generator() override;
void close_generator() override;
+ std::string display_name() const override;
void generate_consts(vector<t_const*> consts) override;
@@ -291,7 +292,7 @@ private:
bool promise_kit_;
protected:
- std::set<std::string> lang_keywords() const override {
+ std::set<std::string> lang_keywords_for_validation() const override {
return {};
}
};
@@ -3201,6 +3202,11 @@ string t_swift_generator::type_to_enum(t_type* type, bool qualified) {
}
+std::string t_swift_generator::display_name() const {
+ return "Swift 3.0";
+}
+
+
THRIFT_REGISTER_GENERATOR(
swift,
"Swift 3.0",
diff --git a/compiler/cpp/src/thrift/generate/t_xml_generator.cc b/compiler/cpp/src/thrift/generate/t_xml_generator.cc
index 220d50c68..68675cfa1 100644
--- a/compiler/cpp/src/thrift/generate/t_xml_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_xml_generator.cc
@@ -83,6 +83,8 @@ public:
void init_generator() override;
void close_generator() override;
+ std::string display_name() const override;
+
void generate_program() override;
void iterate_program(t_program* program);
@@ -692,6 +694,11 @@ string t_xml_generator::get_type_name(t_type* ttype) {
return "(unknown)";
}
+std::string t_xml_generator::display_name() const {
+ return "XML";
+}
+
+
THRIFT_REGISTER_GENERATOR(
xml,
"XML",
diff --git a/compiler/cpp/src/thrift/generate/t_xsd_generator.cc b/compiler/cpp/src/thrift/generate/t_xsd_generator.cc
index 15ede750f..1f58f3a61 100644
--- a/compiler/cpp/src/thrift/generate/t_xsd_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_xsd_generator.cc
@@ -67,6 +67,7 @@ public:
void init_generator() override;
void close_generator() override;
+ std::string display_name() const override;
/**
* Program-level generation functions
@@ -360,4 +361,9 @@ string t_xsd_generator::base_type_name(t_base_type::t_base tbase) {
}
}
+std::string t_xsd_generator::display_name() const {
+ return "XSD";
+}
+
+
THRIFT_REGISTER_GENERATOR(xsd, "XSD", "")
diff --git a/compiler/cpp/test/CMakeLists.txt b/compiler/cpp/test/CMakeLists.txt
index b80f06000..6cf309b9d 100644
--- a/compiler/cpp/test/CMakeLists.txt
+++ b/compiler/cpp/test/CMakeLists.txt
@@ -18,8 +18,8 @@
#
file(GLOB KEYWORD_SAMPLES "${CMAKE_CURRENT_SOURCE_DIR}/keyword-samples/*.thrift")
-set(KEYWORD_LANGS ${thrift_compiler_LANGS})
-LIST(REMOVE_ITEM KEYWORD_LANGS swift) # in Swift you can escape reserved words
+set(KEYWORD_LANGS php) # the whole ticket THRIFT-4655 is only about PHP so leave other languages alone
+LIST(REMOVE_ITEM KEYWORD_LANGS swift) # in Swift you can escape reserved words (and in other languages as well)
foreach(LANG ${KEYWORD_LANGS})
foreach(SAMPLE ${KEYWORD_SAMPLES})
get_filename_component(FILENAME ${SAMPLE} NAME_WE)
diff --git a/compiler/cpp/test/keyword-samples/const1_return.thrift b/compiler/cpp/test/keyword-samples/const1_return.thrift
index f75f980b7..5a120c21a 100644
--- a/compiler/cpp/test/keyword-samples/const1_return.thrift
+++ b/compiler/cpp/test/keyword-samples/const1_return.thrift
@@ -17,4 +17,7 @@
* under the License.
*/
+
+namespace * keyword_test_007
+
const bool return = 0
diff --git a/compiler/cpp/test/keyword-samples/enum1_return.thrift b/compiler/cpp/test/keyword-samples/enum1_return.thrift
index b3755e07a..1dcf594b9 100644
--- a/compiler/cpp/test/keyword-samples/enum1_return.thrift
+++ b/compiler/cpp/test/keyword-samples/enum1_return.thrift
@@ -17,5 +17,8 @@
* under the License.
*/
+
+namespace * keyword_test_008
+
enum return {
}
diff --git a/compiler/cpp/test/keyword-samples/enum2_return.thrift b/compiler/cpp/test/keyword-samples/enum2_return.thrift
index 1c26cc841..e357313ec 100644
--- a/compiler/cpp/test/keyword-samples/enum2_return.thrift
+++ b/compiler/cpp/test/keyword-samples/enum2_return.thrift
@@ -17,6 +17,9 @@
* under the License.
*/
+
+namespace * keyword_test_009
+
enum enum_name {
return
}
diff --git a/compiler/cpp/test/keyword-samples/exception1_return.thrift b/compiler/cpp/test/keyword-samples/exception1_return.thrift
index d89d9e8b9..eb31a477f 100644
--- a/compiler/cpp/test/keyword-samples/exception1_return.thrift
+++ b/compiler/cpp/test/keyword-samples/exception1_return.thrift
@@ -17,4 +17,6 @@
* under the License.
*/
+namespace * keyword_test_010
+
exception return {}
diff --git a/compiler/cpp/test/keyword-samples/exception2_return.thrift b/compiler/cpp/test/keyword-samples/exception2_return.thrift
index e1289ed00..6193fc008 100644
--- a/compiler/cpp/test/keyword-samples/exception2_return.thrift
+++ b/compiler/cpp/test/keyword-samples/exception2_return.thrift
@@ -17,6 +17,8 @@
* under the License.
*/
+namespace * keyword_test_011
+
exception exception_name {
1: required i8 return
}
diff --git a/compiler/cpp/test/keyword-samples/service1_return.thrift b/compiler/cpp/test/keyword-samples/service1_return.thrift
index c52abb646..da36b1c40 100644
--- a/compiler/cpp/test/keyword-samples/service1_return.thrift
+++ b/compiler/cpp/test/keyword-samples/service1_return.thrift
@@ -17,4 +17,6 @@
* under the License.
*/
+namespace * keyword_test_012
+
service return {}
diff --git a/compiler/cpp/test/keyword-samples/service2_return.thrift b/compiler/cpp/test/keyword-samples/service2_return.thrift
index 0c77a26db..31507545d 100644
--- a/compiler/cpp/test/keyword-samples/service2_return.thrift
+++ b/compiler/cpp/test/keyword-samples/service2_return.thrift
@@ -17,6 +17,8 @@
* under the License.
*/
+namespace * keyword_test_013
+
service service_name {
bool function_name(1: i32 return)
}
diff --git a/compiler/cpp/test/keyword-samples/service3_return.thrift b/compiler/cpp/test/keyword-samples/service3_return.thrift
index fe084d249..f6909ab74 100644
--- a/compiler/cpp/test/keyword-samples/service3_return.thrift
+++ b/compiler/cpp/test/keyword-samples/service3_return.thrift
@@ -17,6 +17,8 @@
* under the License.
*/
+namespace * keyword_test_014
+
service service_name {
void return()
}
diff --git a/compiler/cpp/test/keyword-samples/service4_return.thrift b/compiler/cpp/test/keyword-samples/service4_return.thrift
index 53993f113..72da51cd3 100644
--- a/compiler/cpp/test/keyword-samples/service4_return.thrift
+++ b/compiler/cpp/test/keyword-samples/service4_return.thrift
@@ -17,6 +17,8 @@
* under the License.
*/
+namespace * keyword_test_001
+
exception exception_name {}
service service_name {
diff --git a/compiler/cpp/test/keyword-samples/struct1_return.thrift b/compiler/cpp/test/keyword-samples/struct1_return.thrift
index 96640107e..002902907 100644
--- a/compiler/cpp/test/keyword-samples/struct1_return.thrift
+++ b/compiler/cpp/test/keyword-samples/struct1_return.thrift
@@ -17,4 +17,6 @@
* under the License.
*/
+namespace * keyword_test_002
+
struct return {}
diff --git a/compiler/cpp/test/keyword-samples/struct2_return.thrift b/compiler/cpp/test/keyword-samples/struct2_return.thrift
index db123e5bc..d34d0a72d 100644
--- a/compiler/cpp/test/keyword-samples/struct2_return.thrift
+++ b/compiler/cpp/test/keyword-samples/struct2_return.thrift
@@ -17,6 +17,8 @@
* under the License.
*/
+namespace * keyword_test_003
+
struct struct_name {
1: required bool return = 1
}
diff --git a/compiler/cpp/test/keyword-samples/typedef1_return.thrift b/compiler/cpp/test/keyword-samples/typedef1_return.thrift
index 142d51fd9..be975866c 100644
--- a/compiler/cpp/test/keyword-samples/typedef1_return.thrift
+++ b/compiler/cpp/test/keyword-samples/typedef1_return.thrift
@@ -16,4 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
+
+namespace * keyword_test_004
+
typedef bool return
diff --git a/compiler/cpp/test/keyword-samples/union1_return.thrift b/compiler/cpp/test/keyword-samples/union1_return.thrift
index af7a8e77b..43cd16757 100644
--- a/compiler/cpp/test/keyword-samples/union1_return.thrift
+++ b/compiler/cpp/test/keyword-samples/union1_return.thrift
@@ -17,4 +17,7 @@
* under the License.
*/
+
+namespace * keyword_test_005
+
union return {}
diff --git a/compiler/cpp/test/keyword-samples/union2_return.thrift b/compiler/cpp/test/keyword-samples/union2_return.thrift
index 3361a1a02..5ff7955bf 100644
--- a/compiler/cpp/test/keyword-samples/union2_return.thrift
+++ b/compiler/cpp/test/keyword-samples/union2_return.thrift
@@ -17,6 +17,10 @@
* under the License.
*/
+
+
+namespace * keyword_test_006
+
union union_name {
1: optional bool return=1
}