summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuxuan 'fishy' Wang <yuxuan.wang@reddit.com>2021-02-18 11:52:27 -0800
committerYuxuan 'fishy' Wang <fishywang@gmail.com>2021-02-22 10:02:58 -0800
commite89b3e11eed32ac7aa34d566ee1a8f45710a270b (patch)
tree87835d3077b5177377f271cb3b14fa8972b2e698
parentbb8fec7930a3a6789d0b9602412ee57a56ad551c (diff)
downloadthrift-e89b3e11eed32ac7aa34d566ee1a8f45710a270b.tar.gz
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.
-rw-r--r--compiler/cpp/src/thrift/generate/t_go_generator.cc7
1 files 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 2cef11f34..8d25d48b5 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<t_program*>& includes = program_->get_includes();
string result = "";
- string local_namespace = program_->get_namespace("go");
+ string local_namespace = get_real_go_module(program_);
std::set<std::string> 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;
}