From 969047b3c09af133dd3d24591baedc8ed3c52318 Mon Sep 17 00:00:00 2001 From: Margar Simonyan Date: Tue, 27 Mar 2018 14:30:14 +0200 Subject: [PATCH] THRIFT-4531 (#1) THRIFT-4531: Fix generated Python read() method for immutable structs with optional members. --- compiler/cpp/src/thrift/generate/t_py_generator.cc | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/compiler/cpp/src/thrift/generate/t_py_generator.cc b/compiler/cpp/src/thrift/generate/t_py_generator.cc index caa04a86991..f8692bbafaf 100644 --- a/compiler/cpp/src/thrift/generate/t_py_generator.cc +++ b/compiler/cpp/src/thrift/generate/t_py_generator.cc @@ -948,6 +948,20 @@ void t_py_generator::generate_py_struct_reader(ofstream& out, t_struct* tstruct) indent_down(); indent(out) << "iprot.readStructBegin()" << endl; + + if (is_immutable(tstruct)) { + for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) { + t_field* tfield = *f_iter; + std::ostringstream result; + result << tfield->get_name() << " = "; + if (tfield->get_value() != NULL) { + result << render_field_default_value(tfield); + } else { + result << "None"; + } + indent(out) << result.str() << endl; + } + } // Loop over reading in fields indent(out) << "while True:" << endl;