Fix JS property/method collisions for fields enamed read/write
diff --git a/compiler/cpp/src/thrift/generate/t_js_generator.cc b/compiler/cpp/src/thrift/generate/t_js_generator.cc
index dfc334b..27240e4 100644
--- a/compiler/cpp/src/thrift/generate/t_js_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_js_generator.cc
@@ -1061,10 +1061,10 @@
vector<t_field*>::const_iterator f_iter;
if (gen_es6_) {
- indent(out) << "read (input) {" << '\n';
+ indent(out) << "[Symbol.for(\"read\")] (input) {" << '\n';
} else {
indent(out) << js_namespace(tstruct->get_program()) << tstruct->get_name()
- << ".prototype.read = function(input) {" << '\n';
+ << ".prototype[Symbol.for(\"read\")] = function(input) {" << '\n';
}
indent_up();
@@ -1151,10 +1151,10 @@
vector<t_field*>::const_iterator f_iter;
if (gen_es6_) {
- indent(out) << "write (output) {" << '\n';
+ indent(out) << "[Symbol.for(\"write\")] (output) {" << '\n';
} else {
indent(out) << js_namespace(tstruct->get_program()) << tstruct->get_name()
- << ".prototype.write = function(output) {" << '\n';
+ << ".prototype[Symbol.for(\"write\")] = function(output) {" << '\n';
}
indent_up();
@@ -1395,7 +1395,7 @@
"Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN_METHOD, "
"'Unknown function ' + r.fname);" << '\n' << indent()
<< " output.writeMessageBegin(r.fname, Thrift.MessageType.EXCEPTION, r.rseqid);"
- << '\n' << indent() << " x.write(output);" << '\n' << indent()
+ << '\n' << indent() << " x[Symbol.for(\"write\")](output);" << '\n' << indent()
<< " output.writeMessageEnd();" << '\n' << indent() << " output.flush();" << '\n'
<< indent() << "}" << '\n';
@@ -1447,7 +1447,7 @@
+ "_result";
indent(f_service_) << js_const_type_ << "args = new " << argsname << "();" << '\n' << indent()
- << "args.read(input);" << '\n' << indent() << "input.readMessageEnd();" << '\n';
+ << "args[Symbol.for(\"read\")](input);" << '\n' << indent() << "input.readMessageEnd();" << '\n';
// Generate the function call
t_struct* arg_struct = tfunction->get_arglist();
@@ -1509,7 +1509,7 @@
f_service_ << indent() << js_const_type_ << "result_obj = new " << resultname << "({success: result});" << '\n'
<< indent() << "output.writeMessageBegin(\"" << tfunction->get_name()
<< "\", Thrift.MessageType.REPLY, seqid);" << '\n' << indent()
- << "result_obj.write(output);" << '\n' << indent() << "output.writeMessageEnd();" << '\n'
+ << "result_obj[Symbol.for(\"write\")](output);" << '\n' << indent() << "output.writeMessageEnd();" << '\n'
<< indent() << "output.flush();" << '\n';
indent_down();
@@ -1562,7 +1562,7 @@
indent(f_service_) << "}" << '\n';
}
- f_service_ << indent() << "result.write(output);" << '\n' << indent()
+ f_service_ << indent() << "result[Symbol.for(\"write\")](output);" << '\n' << indent()
<< "output.writeMessageEnd();" << '\n' << indent() << "output.flush();" << '\n';
indent_down();
indent(f_service_) << "});" << '\n';
@@ -1610,7 +1610,7 @@
" err.message);" << '\n' << indent() << "output.writeMessageBegin(\""
<< tfunction->get_name() << "\", Thrift.MessageType.EXCEPTION, seqid);" << '\n';
indent_down();
- f_service_ << indent() << "}" << '\n' << indent() << "result_obj.write(output);" << '\n' << indent()
+ f_service_ << indent() << "}" << '\n' << indent() << "result_obj[Symbol.for(\"write\")](output);" << '\n' << indent()
<< "output.writeMessageEnd();" << '\n' << indent() << "output.flush();" << '\n';
indent_down();
@@ -2013,7 +2013,7 @@
// Write to the stream
- f_service_ << indent() << "args.write(" << outputVar << ");" << '\n' << indent() << outputVar
+ f_service_ << indent() << "args[Symbol.for(\"write\")](" << outputVar << ");" << '\n' << indent() << outputVar
<< ".writeMessageEnd();" << '\n';
if (gen_node_) {
@@ -2152,13 +2152,13 @@
indent_up();
f_service_ << indent() << js_const_type_ << "x = new Thrift.TApplicationException();" << '\n'
- << indent() << "x.read(" << inputVar << ");" << '\n'
+ << indent() << "x[Symbol.for(\"read\")](" << inputVar << ");" << '\n'
<< indent() << inputVar << ".readMessageEnd();" << '\n'
<< indent() << render_recv_throw("x") << '\n';
scope_down(f_service_);
f_service_ << indent() << js_const_type_ << "result = new " << resultname << "();" << '\n' << indent()
- << "result.read(" << inputVar << ");" << '\n';
+ << "result[Symbol.for(\"read\")](" << inputVar << ");" << '\n';
f_service_ << indent() << inputVar << ".readMessageEnd();" << '\n' << '\n';
@@ -2299,7 +2299,7 @@
*/
void t_js_generator::generate_deserialize_struct(ostream& out, t_struct* tstruct, string prefix) {
out << indent() << prefix << " = new " << js_type_namespace(tstruct->get_program())
- << tstruct->get_name() << "();" << '\n' << indent() << prefix << ".read(input);" << '\n';
+ << tstruct->get_name() << "();" << '\n' << indent() << prefix << "[Symbol.for(\"read\")](input);" << '\n';
}
void t_js_generator::generate_deserialize_container(ostream& out, t_type* ttype, string prefix) {
@@ -2482,7 +2482,7 @@
*/
void t_js_generator::generate_serialize_struct(ostream& out, t_struct* tstruct, string prefix) {
(void)tstruct;
- indent(out) << prefix << ".write(output);" << '\n';
+ indent(out) << prefix << "[Symbol.for(\"write\")](output);" << '\n';
}
/**