diff options
| author | levlam <levlam@telegram.org> | 2020-10-17 00:47:05 +0300 |
|---|---|---|
| committer | levlam <levlam@telegram.org> | 2020-10-17 00:47:05 +0300 |
| commit | 7b4afb7673b9aa7609e8c05df3f4c433e851c7a2 (patch) | |
| tree | 8e9b730a801e896c9905154c0badc4dadaba67ce /tdtl/td | |
| parent | b03e0a827e923e62be21432b1de44c46b42475b3 (diff) | |
tdtl: always recalc number of simple constructors.
GitOrigin-RevId: dcc2c48f29d8a8f039bb53ec69c8b3076b153608
Diffstat (limited to 'tdtl/td')
| -rw-r--r-- | tdtl/td/tl/tl_generate.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/tdtl/td/tl/tl_generate.cpp b/tdtl/td/tl/tl_generate.cpp index 71ef03c89..9e3647431 100644 --- a/tdtl/td/tl/tl_generate.cpp +++ b/tdtl/td/tl/tl_generate.cpp @@ -483,7 +483,6 @@ void write_tl(const tl_config &config, tl_outputer &out, const TL_writer &w) { std::size_t types_n = config.get_type_count(); std::size_t functions_n = config.get_function_count(); - bool found_complex = false; for (std::size_t type = 0; type < types_n; type++) { tl_type *t = config.get_type_by_num(type); assert(t->constructors_num == t->constructors.size()); @@ -491,7 +490,6 @@ void write_tl(const tl_config &config, tl_outputer &out, const TL_writer &w) { if (t->name == "Type") { assert(t->id == ID_VAR_TYPE); t->flags |= FLAG_COMPLEX; - found_complex = true; } continue; } @@ -529,7 +527,6 @@ void write_tl(const tl_config &config, tl_outputer &out, const TL_writer &w) { b.exist_var_num != -1) { if (!w.is_built_in_complex_type(t->name)) { t->flags |= FLAG_COMPLEX; - found_complex = true; } } else { assert(b_arg_type == NODE_TYPE_TYPE); @@ -549,14 +546,13 @@ void write_tl(const tl_config &config, tl_outputer &out, const TL_writer &w) { if (main_type == NODE_TYPE_VAR_TYPE) { if (!w.is_built_in_complex_type(t->name)) { t->flags |= FLAG_COMPLEX; - found_complex = true; } } } } - while (found_complex) { - found_complex = false; + while (true) { + bool found_complex = false; for (std::size_t type = 0; type < types_n; type++) { tl_type *t = config.get_type_by_num(type); if (t->constructors_num == 0 || w.is_built_in_complex_type(t->name)) { // built-in dummy or complex types @@ -576,6 +572,9 @@ void write_tl(const tl_config &config, tl_outputer &out, const TL_writer &w) { // std::fprintf(stderr, "Found complex %s\n", t->name.c_str()); } } + if (!found_complex) { + break; + } } std::set<std::string> request_types; |
