diff options
author | guanjialin <1406147701@qq.com> | 2020-09-03 16:31:18 +0800 |
---|---|---|
committer | Jens Geyer <jensg@apache.org> | 2020-10-01 23:11:11 +0200 |
commit | 1d68bfe3c4b72370e3db50f164c5241f15fc119c (patch) | |
tree | 4e8200f976e1b1fda6b6bfb003a167712452dbce | |
parent | 44b0b5d3c9b2bcaae43470bfe98721d0281958e5 (diff) | |
download | thrift-1d68bfe3c4b72370e3db50f164c5241f15fc119c.tar.gz |
Rust compiler generates invalid code when using typedef with union
Client: rs
Patch: guanjialin <1406147701@qq.com>
This closes #2228
-rw-r--r-- | compiler/cpp/src/thrift/generate/t_rs_generator.cc | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/compiler/cpp/src/thrift/generate/t_rs_generator.cc b/compiler/cpp/src/thrift/generate/t_rs_generator.cc index 4384dfef5..506e0901f 100644 --- a/compiler/cpp/src/thrift/generate/t_rs_generator.cc +++ b/compiler/cpp/src/thrift/generate/t_rs_generator.cc @@ -1454,6 +1454,10 @@ void t_rs_generator::render_union_sync_write(const string &union_name, t_struct t_field* member = (*members_iter); t_field::e_req member_req = t_field::T_REQUIRED; t_type* ttype = member->get_type(); + if (ttype->is_typedef()) { + // get the actual type of typedef + ttype = ((t_typedef*)ttype)->get_type(); + } string match_var((ttype->is_base_type() && !ttype->is_string()) ? "f" : "ref f"); f_gen_ << indent() |