From e89b3e11eed32ac7aa34d566ee1a8f45710a270b Mon Sep 17 00:00:00 2001 From: Yuxuan 'fishy' Wang Date: Thu, 18 Feb 2021 11:52:27 -0800 Subject: [PATCH] THRIFT-5353: Fix import dedup without explicit go namespace Client: go When a thrift file includes 2 or more other thrift files, and those included thrift files do not have explicit go namespaces defined, the current import dedup logic would wrongly use their empty namespace and skip the second one, while the real import namespace should be inferred from the filename. --- compiler/cpp/src/thrift/generate/t_go_generator.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/compiler/cpp/src/thrift/generate/t_go_generator.cc b/compiler/cpp/src/thrift/generate/t_go_generator.cc index 2cef11f3426..8d25d48b5a6 100644 --- a/compiler/cpp/src/thrift/generate/t_go_generator.cc +++ b/compiler/cpp/src/thrift/generate/t_go_generator.cc @@ -787,14 +787,15 @@ void t_go_generator::init_generator() { string t_go_generator::render_included_programs(string& unused_prot) { const vector& includes = program_->get_includes(); string result = ""; - string local_namespace = program_->get_namespace("go"); + string local_namespace = get_real_go_module(program_); std::set included; for (auto include : includes) { - if (!local_namespace.empty() && local_namespace == include->get_namespace("go")) { + std::string includeModule = get_real_go_module(include); + if (!local_namespace.empty() && local_namespace == includeModule) { continue; } - if (!included.insert(include->get_namespace("go")).second) { + if (!included.insert(includeModule).second) { continue; }